<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"/>
<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>
</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"/>
<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"/>
<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"/>
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,
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);
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,
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);
),
'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') );
+