LP#1251394 wide_display_entry continued
authorBill Erickson <berickxx@gmail.com>
Fri, 12 May 2017 16:14:00 +0000 (12:14 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 17 May 2017 18:51:35 +0000 (14:51 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.metabib-display-field.sql
Open-ILS/src/sql/Pg/upgrade/YYYY.data.metabib-display-field.sql

index 7503181..7b90668 100644 (file)
@@ -3097,7 +3097,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="SVF Attributes" name="attrs" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="MVF Attributes" name="mattrs" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Display Fields" name="display_entries" oils_persist:virtual="true" reporter:datatype="link"/>
-                       <field reporter:label="Flat Display Fields" name="flat_display_entries" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Flat Display Entries" name="flat_display_entries" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Compressed Display Entries" name="compressed_display_entries" oils_persist:virtual="true" reporter:datatype="link"/>
+                       <field reporter:label="Wide Display Entries" name="wide_display_entry" oils_persist:virtual="true" reporter:datatype="link"/>
                </fields>
                <links>
                        <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
@@ -3123,6 +3125,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <link field="source" reltype="has_a" key="id" map="" class="cbs"/>
                        <link field="display_entries" reltype="has_many" key="source" map="" class="mde"/>
                        <link field="flat_display_entries" reltype="has_many" key="source" map="" class="mfde"/>
+                       <link field="compressed_display_entries" reltype="has_many" key="source" map="" class="mcde"/>
+                       <link field="wide_display_entry" reltype="might_have" key="source" map="" class="mwde"/>
                </links>
         <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
             <actions>
@@ -3758,12 +3762,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                oils_persist:field_safe="true"
                reporter:label="Wide Display Entry" 
                oils_persist:readonly="true">
-               <fields>
-                       <field name="source" reporter:datatype="id" />
-                       <field name="title" reporter:datatype="text"/>
-                       <field name="author" reporter:datatype="text"/>
-                       <field name="subject" reporter:datatype="text"/>
-                       <field name="topic_subject" reporter:datatype="text"/>
+               <fields oils_persist:primary="source">
+                       <field name="source" reporter:label="Record ID" reporter:datatype="id" />
+                       <field name="title" reporter:label="Title" reporter:datatype="text"/>
+                       <field name="author" reporter:label="Author" reporter:datatype="text"/>
+                       <field name="subject" reporter:label="Subject" reporter:datatype="text"/>
+                       <field name="topic_subject" reporter:label="Topic Subject" reporter:datatype="text"/>
+                       <field name="isbn" reporter:label="ISBN" reporter:datatype="text"/>
                        <!-- TODO add all well-known fields -->
                </fields>
                <links>
index e0c4b26..467ef60 100644 (file)
@@ -56,20 +56,24 @@ CREATE VIEW metabib.compressed_display_entry AS
 -- TODO: expand to encompass all well-known fields
 CREATE VIEW metabib.wide_display_entry AS
     SELECT 
-        mcde.source,
-        mcde_title.value AS title,
-        mcde_author.value AS author,
-        mcde_subject.value AS subject,
-        mcde_topic_subject.value AS topic_subject
-    FROM metabib.compressed_display_entry mcde
+        bre.id AS source,
+        COALESCE(mcde_title.value, 'null') AS title,
+        COALESCE(mcde_author.value, 'null') AS author,
+        COALESCE(mcde_subject.value, 'null') AS subject,
+        COALESCE(mcde_topic_subject.value, 'null') AS topic_subject,
+        COALESCE(mcde_isbn.value, 'null') AS isbn
+    -- ensure one row per bre regardless of any display fields
+    FROM biblio.record_entry bre 
     LEFT JOIN metabib.compressed_display_entry mcde_title 
-        ON (mcde.source = mcde_title.source AND mcde_title.name = 'title')
+        ON (bre.id = mcde_title.source AND mcde_title.name = 'title')
     LEFT JOIN metabib.compressed_display_entry mcde_author 
-        ON (mcde.source = mcde_author.source AND mcde_author.name = 'author')
+        ON (bre.id = mcde_author.source AND mcde_author.name = 'author')
     LEFT JOIN metabib.compressed_display_entry mcde_subject 
-        ON (mcde.source = mcde_subject.source AND mcde_subject.name = 'subject')
+        ON (bre.id = mcde_subject.source AND mcde_subject.name = 'subject')
     LEFT JOIN metabib.compressed_display_entry mcde_topic_subject 
-        ON (mcde.source = mcde_topic_subject.source AND mcde_topic_subject.name = 'topic_subject')
+        ON (bre.id = mcde_topic_subject.source AND mcde_topic_subject.name = 'topic_subject')
+    LEFT JOIN metabib.compressed_display_entry mcde_isbn 
+        ON (bre.id = mcde_isbn.source AND mcde_isbn.name = 'isbn')
 ;
 
 
index 7432f7c..09de901 100644 (file)
@@ -20,14 +20,19 @@ VALUES
         '//mods32:mods/mods32:subject'),
     (40, 'subject', 'display|topic_subject', 'mods32', TRUE, FALSE, FALSE,
         oils_i18n_gettext(40, 'Subject', 'cmf', 'label'),
-        '//mods32:mods/mods32:subject/mods32:topic')
+        '//mods32:mods/mods32:subject/mods32:topic'),
+    (41, 'identifier', 'display|isbn', 'marcxml', TRUE, FALSE, FALSE,
+        oils_i18n_gettext(41, 'ISBN', 'cmf', 'label'),
+        $$//marc:datafield[@tag='020']/marc:subfield[@code='a' or @code='z']$$)
+
 ;
 
 INSERT INTO config.display_field_map (name, field, multi) VALUES
     ('title', 37, FALSE),
     ('author', 38, FALSE),
     ('subject', 39, TRUE),
-    ('topic_subject', 40, TRUE)
+    ('topic_subject', 40, TRUE),
+    ('isbn', 41, TRUE)
 ;
 
 COMMIT;