teaching everyone how to note the pkey delete restriction policy for specific classes
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Feb 2009 15:05:41 +0000 (15:05 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Feb 2009 15:05:41 +0000 (15:05 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12091 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/c-apps/dump_idl.c
Open-ILS/src/c-apps/oils_idl-core.c
Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm
Open-ILS/web/js/dojo/fieldmapper/IDL.js

index 5edc7a3..94ce1ec 100644 (file)
@@ -1964,7 +1964,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
        </class>
-       <class id="ccs" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::copy_status" oils_persist:tablename="config.copy_status">
+       <class id="ccs" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::copy_status" oils_persist:tablename="config.copy_status" oils_persist:restrict_primary="100">
                <fields oils_persist:primary="id" oils_persist:sequence="config.copy_status_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" />
@@ -1984,7 +1984,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
        </class>
-       <class id="ausp" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::user_standing_penalty" oils_persist:tablename="actor.usr_standing_penalty">
+       <class id="ausp" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="actor::user_standing_penalty" oils_persist:tablename="actor.usr_standing_penalty" oils_persist:restrict_primary="100">
                <fields oils_persist:primary="id" oils_persist:sequence="actor.usr_standing_penalty_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" />
@@ -3641,7 +3641,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
                </links>
        </class>
 
-       <class id="ahrcc" controller="open-ils.cstore open-ils.reporter-store open-ils.pcrud" oils_obj:fieldmapper="action::hold_request_cancel_cause" oils_persist:tablename="action.hold_request_cancel_cause">
+       <class id="ahrcc" controller="open-ils.cstore open-ils.reporter-store open-ils.pcrud" oils_obj:fieldmapper="action::hold_request_cancel_cause" oils_persist:tablename="action.hold_request_cancel_cause" oils_persist:restrict_primary="100">
                <fields oils_persist:primary="id" oils_persist:sequence="action.hold_request_cancel_cause_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" />
@@ -3776,7 +3776,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
        </class>
-       <class id="cbt" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::billing_type" oils_persist:tablename="config.billing_type">
+       <class id="cbt" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::billing_type" oils_persist:tablename="config.billing_type" oils_persist:restrict_primary="100">
                <fields oils_persist:primary="id" oils_persist:sequence="config.billing_type_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" />
index 3c8c360..efeee45 100644 (file)
@@ -141,6 +141,8 @@ static void dump_class( osrfHash* class_hash, const char* class_name )
                                printf( "%s%s: %s\n", indent, attr_name, (char*) class_attr );
                        else if( !strcmp( attr_name, "tablename" ) )
                                printf( "%s%s: %s\n", indent, attr_name, (char*) class_attr );
+                       else if( !strcmp( attr_name, "restrict_primary" ) )
+                               printf( "%s%s: %s\n", indent, attr_name, (char*) class_attr );
                        else if( !strcmp( attr_name, "virtual" ) )
                                printf( "%s%s: %s\n", indent, attr_name, (char*) class_attr );
                        else if( !strcmp( attr_name, "controller" ) )
index f1b8b42..6d511e5 100644 (file)
@@ -66,6 +66,15 @@ osrfHash* oilsIDLInit( const char* idl_filename ) {
                                );
                        }
 
+                       if ((prop_str = (char*)xmlGetNsProp(kid, BAD_CAST "restrict_primary", BAD_CAST PERSIST_NS))) {
+                               osrfLogDebug(OSRF_LOG_MARK, "Delete restriction policy set at '%s' for pkey of class %s", prop_str, current_class_name );
+                               osrfHashSet(
+                                       class_def_hash,
+                                       strdup( prop_str ),
+                                       "restrict_primary"
+                               );
+                       }
+
                        if ((prop_str = (char*)xmlGetNsProp(kid, BAD_CAST "virtual", BAD_CAST PERSIST_NS))) {
                                osrfHashSet(
                                        class_def_hash,
index 3a6c58a..c744ca4 100644 (file)
@@ -59,6 +59,7 @@ sub import {
                $$fieldmap{$n}{hint} = $c;
                $$fieldmap{$n}{virtual} = ($idl->{$c}{'oils_persist:virtual'} && $idl->{$c}{'oils_persist:virtual'} eq 'true') ? 1 : 0;
                $$fieldmap{$n}{table} = $idl->{$c}{'oils_persist:tablename'};
+               $$fieldmap{$n}{restrict_primary} = $idl->{$c}{'oils_persist:restrict_primary'};
                $$fieldmap{$n}{sequence} = $idl->{$c}{fields}{'oils_persist:sequence'};
                $$fieldmap{$n}{identity} = $idl->{$c}{fields}{'oils_persist:primary'};
 
@@ -176,6 +177,11 @@ sub Identity {
        return $$fieldmap{$self->class_name}{identity};
 }
 
+sub RestrictPrimary {
+       my $self = shift;
+       return $$fieldmap{$self->class_name}{restrict_primary};
+}
+
 sub Sequence {
        my $self = shift;
        return $$fieldmap{$self->class_name}{sequence};
index 95aed1f..3a0a3f4 100644 (file)
@@ -48,6 +48,7 @@ if(!dojo._hasResource["fieldmapper.IDL"]) {
                     //table   : node.getAttributeNS(this.NS_PERSIST, 'tablename'),
                     //core    : node.getAttributeNS(this.NS_REPORTS, 'core'),
                     label   : node.getAttributeNS(this.NS_REPORTS, 'label'),
+                    restrict_primary   : node.getAttributeNS(this.NS_PERSIST, 'restrict_primary'),
                     virtual : (node.getAttributeNS(this.NS_PERSIST, 'virtual') == 'true'),
                     pkey    : fields.getAttributeNS(this.NS_PERSIST, 'primary')
                 };