Show
Ignore:
Timestamp:
04/23/08 23:03:42 (6 months ago)
Author:
miker
Message:

adding ability to trim attr values for lineitems

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/acq-experiment/Open-ILS/src/sql/Pg/200.schema.acq.sql

    r8996 r9446  
    177177        code            TEXT            NOT NULL, 
    178178        description     TEXT            NOT NULL, 
    179         xpath           TEXT            NOT NULL 
     179        xpath           TEXT            NOT NULL, 
     180        remove          TEXT            NOT NULL DEFAULT '' 
    180181); 
    181182 
     
    206207INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('language','Lanuage of work','//*[@tag="240"]/*[@code="l"][1]'); 
    207208INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('pagination','Pagination','//*[@tag="300"]/*[@code="a"][1]'); 
    208 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('isbn','ISBN','//*[@tag="020"]/*[@code="a"]'); 
    209 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('issn','ISSN','//*[@tag="022"]/*[@code="a"]'); 
     209INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath, remove ) VALUES ('isbn','ISBN','//*[@tag="020"]/*[@code="a"]', $r$(?:-|\s.+$)$r$); 
     210INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath, remove ) VALUES ('issn','ISSN','//*[@tag="022"]/*[@code="a"]', $r$(?:-|\s.+$)$r$); 
    210211INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('price','Price','//*[@tag="020" or @tag="022"]/*[@code="c"][1]'); 
    211212INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('identifier','Identifier','//*[@tag="001"]'); 
     
    218219 
    219220 
    220 CREATE OR REPLACE FUNCTION public.extract_marc_field ( TEXT, BIGINT, TEXT ) RETURNS TEXT AS $$ 
    221         SELECT array_to_string( array_accum( output ),' ' ) FROM xpath_table('id', 'marc', $1, $3, 'id='||$2)x(id INT, output TEXT); 
     221CREATE OR REPLACE FUNCTION public.extract_acq_marc_field ( BIGINT, TEXT, TEXT) RETURNS TEXT AS $$ 
     222        SELECT public.extract_marc_field('acq.lineitem', $1, $2, $3); 
    222223$$ LANGUAGE SQL; 
    223224 
    224 CREATE OR REPLACE FUNCTION public.extract_acq_marc_field ( BIGINT, TEXT ) RETURNS TEXT AS $$ 
    225         SELECT public.extract_marc_field('acq.lineitem', $1, $2); 
    226 $$ LANGUAGE SQL; 
    227  
     225/* 
    228226CREATE OR REPLACE FUNCTION public.extract_bib_marc_field ( BIGINT, TEXT ) RETURNS TEXT AS $$ 
    229227        SELECT public.extract_marc_field('biblio.record_entry', $1, $2); 
     
    233231        SELECT public.extract_marc_field('authority.record_entry', $1, $2); 
    234232$$ LANGUAGE SQL; 
    235  
     233*/ 
    236234-- For example: 
    237235-- INSERT INTO acq.lineitem_provider_attr_definition ( provider, code, description, xpath ) VALUES (1,'price','Price','//*[@tag="020" or @tag="022"]/*[@code="a"][1]'); 
     
    261259                END IF; 
    262260 
    263                 SELECT extract_acq_marc_field(id, adef.xpath) INTO value FROM acq.lineitem WHERE id = NEW.id; 
     261                SELECT extract_acq_marc_field(id, adef.xpath, adef.remove) INTO value FROM acq.lineitem WHERE id = NEW.id; 
    264262                IF (value IS NOT NULL AND value <> '') THEN 
    265263                        INSERT INTO acq.lineitem_attr (lineitem, attr_type, attr_name, attr_value) VALUES (NEW.id, atype, adef.code, value);