- Timestamp:
- 04/23/08 23:03:42 (6 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/acq-experiment/Open-ILS/src/sql/Pg/200.schema.acq.sql
r8996 r9446 177 177 code TEXT NOT NULL, 178 178 description TEXT NOT NULL, 179 xpath TEXT NOT NULL 179 xpath TEXT NOT NULL, 180 remove TEXT NOT NULL DEFAULT '' 180 181 ); 181 182 … … 206 207 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('language','Lanuage of work','//*[@tag="240"]/*[@code="l"][1]'); 207 208 INSERT 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"]');209 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath, remove ) VALUES ('isbn','ISBN','//*[@tag="020"]/*[@code="a"]', $r$(?:-|\s.+$)$r$); 210 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath, remove ) VALUES ('issn','ISSN','//*[@tag="022"]/*[@code="a"]', $r$(?:-|\s.+$)$r$); 210 211 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('price','Price','//*[@tag="020" or @tag="022"]/*[@code="c"][1]'); 211 212 INSERT INTO acq.lineitem_marc_attr_definition ( code, description, xpath ) VALUES ('identifier','Identifier','//*[@tag="001"]'); … … 218 219 219 220 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);221 CREATE 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); 222 223 $$ LANGUAGE SQL; 223 224 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 /* 228 226 CREATE OR REPLACE FUNCTION public.extract_bib_marc_field ( BIGINT, TEXT ) RETURNS TEXT AS $$ 229 227 SELECT public.extract_marc_field('biblio.record_entry', $1, $2); … … 233 231 SELECT public.extract_marc_field('authority.record_entry', $1, $2); 234 232 $$ LANGUAGE SQL; 235 233 */ 236 234 -- For example: 237 235 -- INSERT INTO acq.lineitem_provider_attr_definition ( provider, code, description, xpath ) VALUES (1,'price','Price','//*[@tag="020" or @tag="022"]/*[@code="a"][1]'); … … 261 259 END IF; 262 260 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; 264 262 IF (value IS NOT NULL AND value <> '') THEN 265 263 INSERT INTO acq.lineitem_attr (lineitem, attr_type, attr_name, attr_value) VALUES (NEW.id, atype, adef.code, value);
