Add table and columns for tracking current import/overlay errors per object
authorMike Rylander <mrylander@gmail.com>
Mon, 14 Mar 2011 15:43:24 +0000 (11:43 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 6 Jul 2011 18:50:48 +0000 (14:50 -0400)
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/012.schema.vandelay.sql
Open-ILS/src/sql/Pg/950.data.seed-values.sql

index 251df7a..4e5362b 100644 (file)
@@ -186,6 +186,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Import Item ID" name="id" reporter:datatype="id"/>
                        <field reporter:label="Import Record" name="record" reporter:datatype="link"/>
                        <field reporter:label="Attribute Definition" name="definition" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
                        <field reporter:label="Owning Library" name="owning_lib" reporter:datatype="int"/>
                        <field reporter:label="Circulating Library" name="circ_lib" reporter:datatype="int"/>
                        <field reporter:label="Call Number" name="call_number" reporter:datatype="text"/>
@@ -207,6 +209,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="OPAC Visible" name="opac_visible" reporter:datatype="bool"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="record" reltype="has_a" key="id" map="" class="vqbr"/>
                        <link field="definition" reltype="has_a" key="id" map="" class="viiad"/>
                </links>
@@ -294,6 +297,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                </permacrud>
        </class>
 
+       <class id="vie" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::import_error" oils_persist:tablename="vandelay.import_error" reporter:label="Import/Overlay Error Definitions">
+               <fields oils_persist:primary="code">
+                       <field reporter:label="Error Code" name="code" reporter:selector="description" reporter:datatype="id"/>
+                       <field reporter:label="Description" name="description" reporter:datatype="text" oils_persist:i18n="true"/>
+               </fields>
+               <links>
+                       <link field="owner" reltype="has_a" key="id" map="" class="aou"/>
+                       <link field="item_attr_def" reltype="has_a" key="id" map="" class="viiad"/>
+                       <link field="match_set" reltype="has_a" key="id" map="" class="vms"/>
+               </links>
+               <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+                       <actions>
+                               <retrieve/>
+                       </actions>
+               </permacrud>
+       </class>
+
        <class id="vqbr" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::queued_bib_record" oils_persist:tablename="vandelay.queued_bib_record" reporter:label="Queued Bib Record">
                <fields oils_persist:primary="id" oils_persist:sequence="vandelay.queued_record_id_seq">
                        <field reporter:label="Record ID" name="id" reporter:datatype="id"/>
@@ -303,11 +323,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Queue" name="queue" reporter:datatype="link"/>
                        <field reporter:label="Bib Source" name="bib_source" reporter:datatype="link"/>
                        <field reporter:label="Final Target Record" name="imported_as" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
                        <field reporter:label="Purpose" name="purpose" reporter:datatype="text"/>
                        <field reporter:label="Attributes" name="attributes" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Matches" name="matches" oils_persist:virtual="true" reporter:datatype="link"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="queue" reltype="has_a" key="id" map="" class="vbq"/>
                        <link field="bib_source" reltype="has_a" key="id" map="" class="cbs"/>
                        <link field="imported_as" reltype="has_a" key="id" map="" class="bre"/>
@@ -419,11 +442,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="MARC" name="marc" reporter:datatype="text"/>
                        <field reporter:label="Queue" name="queue" reporter:datatype="link"/>
                        <field reporter:label="Final Target Record" name="imported_as" reporter:datatype="link"/>
+                       <field reporter:label="Import Error" name="import_error" reporter:datatype="link"/>
+                       <field reporter:label="Import Error Detail" name="error_detail" reporter:datatype="text"/>
                        <field reporter:label="Purpose" name="purpose" reporter:datatype="text"/>
                        <field reporter:label="Attributes" name="attributes" oils_persist:virtual="true" reporter:datatype="link"/>
                        <field reporter:label="Matches" name="matches" oils_persist:virtual="true" reporter:datatype="link"/>
                </fields>
                <links>
+                       <link field="import_error" reltype="has_a" key="code" map="" class="vie"/>
                        <link field="queue" reltype="has_a" key="id" map="" class="vaq"/>
                        <link field="imported_as" reltype="has_a" key="id" map="" class="are"/>
             <link field="attributes" reltype="has_many" key="record" map="" class="vqara"/>
index c4bc1f8..bdfff7a 100644 (file)
@@ -106,6 +106,11 @@ CREATE TABLE vandelay.import_item_attr_definition (
        CONSTRAINT vand_import_item_attr_def_idx UNIQUE (owner,name)
 );
 
+CREATE TABLE vandelay.import_error (
+    code        TEXT    PRIMARY KEY,
+    description TEXT    NOT NULL -- i18n
+);
+
 CREATE TABLE vandelay.bib_queue (
        queue_type          TEXT        NOT NULL DEFAULT 'bib' CHECK (queue_type = 'bib'),
        item_attr_def   BIGINT REFERENCES vandelay.import_item_attr_definition (id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED,
@@ -114,9 +119,11 @@ CREATE TABLE vandelay.bib_queue (
 ALTER TABLE vandelay.bib_queue ADD PRIMARY KEY (id);
 
 CREATE TABLE vandelay.queued_bib_record (
-       queue           INT             NOT NULL REFERENCES vandelay.bib_queue (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
-       bib_source      INT             REFERENCES config.bib_source (id) DEFERRABLE INITIALLY DEFERRED,
-       imported_as     BIGINT  REFERENCES biblio.record_entry (id) DEFERRABLE INITIALLY DEFERRED
+       queue               INT         NOT NULL REFERENCES vandelay.bib_queue (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+       bib_source          INT         REFERENCES config.bib_source (id) DEFERRABLE INITIALLY DEFERRED,
+       imported_as     BIGINT  REFERENCES biblio.record_entry (id) DEFERRABLE INITIALLY DEFERRED,
+       import_error    INT     REFERENCES vandelay.import_error (id) ON DELETE SET NULL ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,
+       error_detail    TEXT
 ) INHERITS (vandelay.queued_record);
 ALTER TABLE vandelay.queued_bib_record ADD PRIMARY KEY (id);
 CREATE INDEX queued_bib_record_queue_idx ON vandelay.queued_bib_record (queue);
@@ -137,11 +144,12 @@ CREATE TABLE vandelay.bib_match (
     quality         INT         NOT NULL DEFAULT 0
 );
 
--- DROP TABLE vandelay.import_item CASCADE;
 CREATE TABLE vandelay.import_item (
     id              BIGSERIAL   PRIMARY KEY,
     record          BIGINT      NOT NULL REFERENCES vandelay.queued_bib_record (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
     definition      BIGINT      NOT NULL REFERENCES vandelay.import_item_attr_definition (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+       import_error    INT         REFERENCES vandelay.import_error (id) ON DELETE SET NULL ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,
+       error_detail    TEXT,
     owning_lib      INT,
     circ_lib        INT,
     call_number     TEXT,
@@ -1648,7 +1656,9 @@ ALTER TABLE vandelay.authority_queue ADD PRIMARY KEY (id);
 
 CREATE TABLE vandelay.queued_authority_record (
        queue           INT     NOT NULL REFERENCES vandelay.authority_queue (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
-       imported_as     INT     REFERENCES authority.record_entry (id) DEFERRABLE INITIALLY DEFERRED
+       imported_as     INT     REFERENCES authority.record_entry (id) DEFERRABLE INITIALLY DEFERRED,
+       import_error    INT     REFERENCES vandelay.import_error (id) ON DELETE SET NULL ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,
+       error_detail    TEXT
 ) INHERITS (vandelay.queued_record);
 ALTER TABLE vandelay.queued_authority_record ADD PRIMARY KEY (id);
 CREATE INDEX queued_authority_record_queue_idx ON vandelay.queued_authority_record (queue);
index 78ed74c..fbe9877 100644 (file)
@@ -8804,3 +8804,10 @@ INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
     ),
     'bool'
 );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'general.unknown', oils_i18n_gettext('general.unknown', 'Import or Overlay failed', 'vie', 'description') );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'import.item.duplicate.barcode', oils_i18n_gettext('import.item.duplicate.barcode', 'Import failed due to barcode collision', 'vie', 'description') );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'import.duplicate.sysid', oils_i18n_gettext('import.duplicate.sysid', 'Import failed due to system id collision', 'vie', 'description') );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'import.auth.duplicate.acn', oils_i18n_gettext('import.auth.duplicate.acn', 'Import failed due to Accession Number collision', 'vie', 'description') );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'import.xml.malformed', oils_i18n_gettext('import.xml.malformed', 'Malformed record cause Import failure', 'vie', 'description') );
+INSERT INTO vandelay.import_error ( code, description ) VALUES ( 'overlay.xml.malformed', oils_i18n_gettext('overlay.xml.malformed', 'Malformed record cause Overlay failure', 'vie', 'description') );
+