rearranging some columns for better layout; removing xpath requirement from usr attrs...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 23 Jul 2008 14:52:40 +0000 (14:52 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 23 Jul 2008 14:52:40 +0000 (14:52 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@10094 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/sql/Pg/200.schema.acq.sql

index 2de1577..94a4f7a 100644 (file)
@@ -3701,7 +3701,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Definition ID" name="id" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="id" />
                        <field reporter:label="Code" name="code" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="text" />
                        <field reporter:label="Description" name="description" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true" />
-                       <field reporter:label="XPath" name="xpath" oils_obj:array_position="6" oils_persist:virtual="false" reporter:datatype="text" />
                </fields>
                <links/>
        </class>
@@ -3756,14 +3755,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                        <field reporter:label="Definition ID" name="id" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="id" />
                        <field reporter:label="Code" name="code" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="text" />
                        <field reporter:label="Description" name="description" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true" />
-                       <field reporter:label="XPath" name="xpath" oils_obj:array_position="6" oils_persist:virtual="false" reporter:datatype="text" />
-                       <field reporter:label="User" name="usr" oils_obj:array_position="7" oils_persist:virtual="false" reporter:datatype="link" />
+                       <field reporter:label="User" name="usr" oils_obj:array_position="6" oils_persist:virtual="false" reporter:datatype="link" />
                </fields>
                <links>
                        <link field="usr" reltype="has_a" key="id" map="" class="au"/>
                </links>
        </class>
 
+       <class id="acqlilad" controller="open-ils.cstore open-ils.reporter-store" oils_obj:fieldmapper="acq::lineitem_local_attr_definition" oils_persist:tablename="acq.lineitem_local_attr_definition">
+               <fields oils_persist:primary="id" oils_persist:sequence="acq.lineitem_attr_definition_id_seq">
+                       <field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
+                       <field name="ischanged" oils_obj:array_position="1" oils_persist:virtual="true" />
+                       <field name="isdeleted" oils_obj:array_position="2" oils_persist:virtual="true" />
+                       <field reporter:label="Definition ID" name="id" oils_obj:array_position="3" oils_persist:virtual="false" reporter:datatype="id" />
+                       <field reporter:label="Code" name="code" oils_obj:array_position="4" oils_persist:virtual="false" reporter:datatype="text" />
+                       <field reporter:label="Description" name="description" oils_obj:array_position="5" oils_persist:virtual="false" reporter:datatype="text" oils_persist:i18n="true" />
+               </fields>
+               <links/>
+       </class>
+
        <class id="rof" controller="open-ils.reporter-store" oils_obj:fieldmapper="reporter::output_folder" oils_persist:tablename="reporter.output_folder">
                <fields oils_persist:primary="id" oils_persist:sequence="reporter.output_folder_id_seq">
                        <field name="isnew" oils_obj:array_position="0" oils_persist:virtual="true" />
index 668eff2..c14f851 100644 (file)
@@ -180,21 +180,23 @@ CREATE TABLE acq.lineitem_attr_definition (
        id              BIGSERIAL       PRIMARY KEY,
        code            TEXT            NOT NULL,
        description     TEXT            NOT NULL,
-       xpath           TEXT            NOT NULL,
        remove          TEXT            NOT NULL DEFAULT ''
 );
 
 CREATE TABLE acq.lineitem_marc_attr_definition (
-       id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq')
+       id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq'),
+       xpath           TEXT            NOT NULL
 ) INHERITS (acq.lineitem_attr_definition);
 
 CREATE TABLE acq.lineitem_provider_attr_definition (
        id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq'),
+       xpath           TEXT            NOT NULL,
        provider        INT     NOT NULL REFERENCES acq.provider (id)
 ) INHERITS (acq.lineitem_attr_definition);
 
 CREATE TABLE acq.lineitem_generated_attr_definition (
-       id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq')
+       id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq'),
+       xpath           TEXT            NOT NULL
 ) INHERITS (acq.lineitem_attr_definition);
 
 CREATE TABLE acq.lineitem_usr_attr_definition (
@@ -202,6 +204,10 @@ CREATE TABLE acq.lineitem_usr_attr_definition (
        usr             INT     NOT NULL REFERENCES actor.usr (id)
 ) INHERITS (acq.lineitem_attr_definition);
 
+CREATE TABLE acq.lineitem_local_attr_definition (
+       id              BIGINT  PRIMARY KEY DEFAULT NEXTVAL('acq.lineitem_attr_definition_id_seq')
+) INHERITS (acq.lineitem_attr_definition);
+
 
 -- Seed data
 
@@ -260,12 +266,15 @@ BEGIN
                IF (atype = 'lineitem_provider_attr_definition') THEN
                        SELECT provider INTO prov FROM acq.lineitem_provider_attr_definition WHERE id = adef.id;
                        CONTINUE WHEN NEW.provider IS NULL OR prov <> NEW.provider;
-               END IF;
+               ELSIF (atype NOT IN ('lineitem_usr_attr_definition','lineitem_local_attr_definition')) THEN
+                       
+                       SELECT extract_acq_marc_field(id, adef.xpath, adef.remove) INTO value FROM acq.lineitem WHERE id = NEW.id;
+                       IF (value IS NOT NULL AND value <> '') THEN
+                               INSERT INTO acq.lineitem_attr (lineitem, attr_type, attr_name, attr_value) VALUES (NEW.id, atype, adef.code, value);
+                       END IF;
 
-               SELECT extract_acq_marc_field(id, adef.xpath, adef.remove) INTO value FROM acq.lineitem WHERE id = NEW.id;
-               IF (value IS NOT NULL AND value <> '') THEN
-                       INSERT INTO acq.lineitem_attr (lineitem, attr_type, attr_name, attr_value) VALUES (NEW.id, atype, adef.code, value);
                END IF;
+
        END LOOP;
 
        RETURN NULL;