From: Bill Erickson Date: Fri, 31 Jan 2014 20:25:56 +0000 (-0500) Subject: remove old, dupe unapi-mmr upgrade to avoid confusion X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=61a142f6782067d225c695c17b8d58a8d5a3ed3c;p=working%2FEvergreen.git remove old, dupe unapi-mmr upgrade to avoid confusion Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql deleted file mode 100644 index 7344f72ff5..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.unapi-mmr.sql +++ /dev/null @@ -1,186 +0,0 @@ -BEGIN; - -/* -using unapi.bre_output_layout for now. -Do we need separate output config for mmr? -*/ - -CREATE OR REPLACE FUNCTION unapi.mmr ( - mmr_id BIGINT, - format TEXT, - ename TEXT, - includes TEXT[], - org TEXT, - depth INT DEFAULT NULL, - slimit HSTORE DEFAULT NULL, - soffset HSTORE DEFAULT NULL, - include_xmlns BOOL DEFAULT TRUE, - pref_lib INT DEFAULT NULL -) -RETURNS XML AS $F$ -DECLARE - mmrec metabib.metarecord%ROWTYPE; - leadrec biblio.record_entry%ROWTYPE; - subrec biblio.record_entry%ROWTYPE; - layout unapi.bre_output_layout%ROWTYPE; - xfrm config.xml_transform%ROWTYPE; - ouid INT; - xml_buf TEXT; -- growing XML document - tmp_xml TEXT; -- single-use XML string - xml_frag TEXT; -- single-use XML fragment - top_el TEXT; - output XML; - hxml XML; - axml XML; - subxml XML; -- subordinate records elements - sub_xpath TEXT; -BEGIN - - -- xpath for extracting bre.marc values from subordinate records - -- so they may be appended to the MARC of the master record prior - -- to XSLT processing. - -- subjects, isbn, issn, upc -- anything else? - sub_xpath := - '//*[starts-with(@tag, "6") or @tag="020" or @tag="022" or @tag="024"]'; - - IF org = '-' OR org IS NULL THEN - SELECT shortname INTO org FROM evergreen.org_top(); - END IF; - - SELECT id INTO ouid FROM actor.org_unit WHERE shortname = org; - - IF ouid IS NULL THEN - RETURN NULL::XML; - END IF; - - SELECT INTO mmrec * FROM metabib.metarecord WHERE id = mmr_id; - IF NOT FOUND THEN - RETURN NULL::XML; - END IF; - - /* - -- TODO: aggregate holdings from constituent records - IF format = 'holdings_xml' THEN -- the special case - output := unapi.holdings_xml( - mmr_id, ouid, org, depth, includes, slimit, soffset, include_xmlns); - RETURN output; - END IF; - */ - - SELECT * INTO layout FROM unapi.bre_output_layout WHERE name = format; - - IF layout.name IS NULL THEN - RETURN NULL::XML; - END IF; - - SELECT * INTO xfrm FROM config.xml_transform WHERE name = layout.transform; - - SELECT INTO leadrec * FROM biblio.record_entry WHERE id = mmrec.master_record; - - -- Grab bulk SVF for the lead record if requested - -- TODO: additional SVF values from constituent records for formats, etc. - IF ('mra' = ANY (includes)) THEN - axml := unapi.mra(leadrec.id,NULL,NULL,NULL,NULL); - ELSE - axml := NULL::XML; - END IF; - - xml_buf = leadrec.marc; - - hxml := NULL::XML; - subxml := NULL::XML; - FOR subrec IN SELECT bre.* FROM biblio.record_entry bre - JOIN metabib.metarecord_source_map mmsm ON (mmsm.source = bre.id) - JOIN metabib.metarecord mmr ON (mmr.id = mmsm.metarecord) - WHERE mmr.id = mmr_id - ORDER BY CASE WHEN bre.id = mmr.master_record THEN 0 ELSE bre.id END - LIMIT COALESCE((slimit->'bre')::INT, 5) LOOP - - -- collect holdings for all added records - IF ('holdings_xml' = ANY (includes)) THEN - hxml := XMLCONCAT(hxml, unapi.holdings_xml( - subrec.id, ouid, org, depth, - evergreen.array_remove_item_by_value(includes,'holdings_xml'), - slimit, soffset, include_xmlns, pref_lib)); - END IF; - - IF subrec.id = leadrec.id THEN CONTINUE; END IF; - -- Append choice data from the the non-lead records to the - -- the lead record document - - FOREACH xml_frag IN ARRAY - (SELECT * FROM xpath(sub_xpath, subrec.marc::XML)) LOOP - subxml := XMLCONCAT(subxml, xml_frag::XML); - END LOOP; - END LOOP; - - -- append data from the subordinate records to the - -- main record document before applying the XSLT - - IF subxml IS NOT NULL THEN - xml_buf := REGEXP_REPLACE(xml_buf, - '(.*?)$', subxml || '' || E'\\1'); - END IF; - - IF format = 'marcxml' THEN - -- If we're not using the prefixed namespace in - -- this record, then remove all declarations of it - IF xml_buf !~ E' mods) - top_el := REGEXP_REPLACE(xml_buf, E'^.*?<((?:\\S+:)?' || - layout.holdings_element || ').*$', E'\\1'); - - IF axml IS NOT NULL THEN - xml_buf := REGEXP_REPLACE(xml_buf, - '(.*?)$', axml || '\\1'); - END IF; - - IF hxml IS NOT NULL THEN - xml_buf := REGEXP_REPLACE(xml_buf, - '(.*?)$', hxml || '\\1'); - END IF; - - IF ('mmr.unapi' = ANY (includes)) THEN - output := REGEXP_REPLACE( - xml_buf, - '(.*?)', - XMLELEMENT( - name abbr, - XMLATTRIBUTES( - 'http://www.w3.org/1999/xhtml' AS xmlns, - 'unapi-id' AS class, - 'tag:open-ils.org:U2@mmr/' || mmr_id || '/' || org AS title - ) - )::TEXT || '\\1' - ); - ELSE - output := xml_buf; - END IF; - - -- remove ignorable whitesace - output := REGEXP_REPLACE(output::TEXT,E'>\\s+<','><','gs')::XML; - RETURN output; -END; -$F$ LANGUAGE PLPGSQL STABLE; - - --- SEED DATA --------------------------------------------------------------- - --- by default, use the same format record attribute as that used for icons --- TODO: verify attr name still matches -INSERT INTO config.global_flag (name, label, value, enabled) VALUES ( - 'opac.metarecord.holds.format_attr', - 'OPAC Metarecord Hold Formats Attribute', - 'local_format', - TRUE -); - -COMMIT;