dke.smwp.trigger
Class DerivedDataTrigger

java.lang.Object
  |
  +--dke.smwp.trigger.AbstractTrigger
        |
        +--dke.smwp.trigger.DerivedDataTrigger

public class DerivedDataTrigger
extends AbstractTrigger

manages data trigger for derived fragment classes. creates two Derived Fragment Data Trigger; Trigger 1 triggers from fragmentBaseClass to fragmentClass, Trigger 2 triggers from derivedFragmentClass to fragmentClass; Trigger 2 is seperated into before and after trigger to evade Mutating Table problems; both triggers propagate tuple deleting/insertion/update to its trigger target;

Version:
1.0
Author:
Werner Enser

Field Summary
static java.lang.String TABLE_SMWP_WORKTRACE
           
 
Fields inherited from class dke.smwp.trigger.AbstractTrigger
_connectionPool, NEW_OPERATOR, OLD_OPERATOR
 
Constructor Summary
DerivedDataTrigger()
          default constructor
 
Method Summary
 void createDerivedTrigger(DerivedFragmentClass fragmentClass, FragmentClass fragmentBaseClass, FragmentClass derivationBaseClass)
          creates two Derived Fragment Data Trigger; Trigger 1 triggers from fragmentBaseClass to fragmentClass, Trigger 2 triggers from derivedFragmentClass to fragmentClass; Trigger 2 is seperated into before and after trigger to evade Mutating Table problems; both triggers propagate tuple deleting/insertion/update to its trigger target;
private  java.lang.String derivedColumnNamesToString(FragmentClass fragmentClass, java.lang.String prefix)
          generates a comma seperated list of derived column names; columns of Fragment Class MINUS columns of Fragment Base Class = derived column(s); syntax of generated string:
prefix columnName { ", " prefix columnName }
 java.lang.String getDerivedTupleTrigger_derivBase_after(DerivedFragmentClass fragmentClass, FragmentClass fragmentBaseClass, FragmentClass derivationBaseClass)
          creates PL/SQL trigger code for PL/SQL trigger defined upon Fragment Class derivatoinBaseClass and Fragment Class fragmentClass as trigger target; due mutating table problems this trigger is devided into before and after trigger; the generated trigger uses the data saved into the temporary database relation as substitute to :NEW, :OLD database operators to propagate changes from fragmentBaseClass to fragmentClass
 java.lang.String getDerivedTupleTrigger_derivBase_before(DerivedFragmentClass fragmentClass, FragmentClass derivationBaseClass)
          creates PL/SQL trigger code for PL/SQL trigger defined upon Fragment Class derivatoinBaseClass and Fragment Class fragmentClass as trigger target; due mutating table problems this trigger is devided into before and after trigger; the generated trigger saves inserted/deleted/updated tuples in derivationBaseClass into a temporary database relation for further processing in the after part of this trigger
 java.lang.String getDerivedTupleTrigger_fragBase(DerivedFragmentClass fragmentClass, FragmentClass fragmentBaseClass, FragmentClass derivationBaseClass)
          creates PL/SQL trigger code for trigger defined upon fragment class fragmentBaseClass and fragment class fragmentClass as trigger target;
private  java.lang.String getFragmentationKeys(FragmentClass fragmentClass, java.lang.String prefix, boolean showType)
          creates comma seperated list of primary keys from Fragment Class fragmentClass; method used for trigger generation on SQL cursor handling; syntax of generated String:
prefix columnName [columnType] { "," prefix columnName [columnType] }
 
Methods inherited from class dke.smwp.trigger.AbstractTrigger
dropTrigger, getTColumnPosition, getTColumnPosition, getTColumnPosition, getTColumnString, getWhereClause, getWhereClause, getWhereClause, getWhereClause, stingReplace, stingTablenameReplace
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

TABLE_SMWP_WORKTRACE

public static final java.lang.String TABLE_SMWP_WORKTRACE
Constructor Detail

DerivedDataTrigger

public DerivedDataTrigger()
default constructor
Method Detail

createDerivedTrigger

public void createDerivedTrigger(DerivedFragmentClass fragmentClass,
                                 FragmentClass fragmentBaseClass,
                                 FragmentClass derivationBaseClass)
                          throws java.sql.SQLException
creates two Derived Fragment Data Trigger; Trigger 1 triggers from fragmentBaseClass to fragmentClass, Trigger 2 triggers from derivedFragmentClass to fragmentClass; Trigger 2 is seperated into before and after trigger to evade Mutating Table problems; both triggers propagate tuple deleting/insertion/update to its trigger target;
Parameters:
fragmentClass - trigger target
fragmentBaseClass - trigger source 1
derivationBaseClass - trigger source 2
Throws:
java.sql.SQLException - trigger deployment fails

getDerivedTupleTrigger_fragBase

public java.lang.String getDerivedTupleTrigger_fragBase(DerivedFragmentClass fragmentClass,
                                                        FragmentClass fragmentBaseClass,
                                                        FragmentClass derivationBaseClass)
                                                 throws java.sql.SQLException
creates PL/SQL trigger code for trigger defined upon fragment class fragmentBaseClass and fragment class fragmentClass as trigger target;
Parameters:
fragmentClass - trigger target
fragmentBaseClass - trigger base / trigger source
derivationBaseClass - trigger source
Throws:
java.sql.SQLException - error fetching meta-data

getDerivedTupleTrigger_derivBase_before

public java.lang.String getDerivedTupleTrigger_derivBase_before(DerivedFragmentClass fragmentClass,
                                                                FragmentClass derivationBaseClass)
                                                         throws java.sql.SQLException
creates PL/SQL trigger code for PL/SQL trigger defined upon Fragment Class derivatoinBaseClass and Fragment Class fragmentClass as trigger target; due mutating table problems this trigger is devided into before and after trigger;

the generated trigger saves inserted/deleted/updated tuples in derivationBaseClass into a temporary database relation for further processing in the after part of this trigger

Parameters:
fragmentClass - only used for naming the trigger
derivationBaseClass - trigger base / source
Returns:
String representation of PL/SQL trigger
Throws:
java.sql.SQLException - error fetching meta-data

getDerivedTupleTrigger_derivBase_after

public java.lang.String getDerivedTupleTrigger_derivBase_after(DerivedFragmentClass fragmentClass,
                                                               FragmentClass fragmentBaseClass,
                                                               FragmentClass derivationBaseClass)
                                                        throws java.sql.SQLException
creates PL/SQL trigger code for PL/SQL trigger defined upon Fragment Class derivatoinBaseClass and Fragment Class fragmentClass as trigger target; due mutating table problems this trigger is devided into before and after trigger;

the generated trigger uses the data saved into the temporary database relation as substitute to :NEW, :OLD database operators to propagate changes from fragmentBaseClass to fragmentClass

Parameters:
fragmentClass - trigger target
fragmentBaseClass - trigger source
derivationBaseClass - trigger base / source
Throws:
java.sql.SQLException - error fetching meta-data

getFragmentationKeys

private java.lang.String getFragmentationKeys(FragmentClass fragmentClass,
                                              java.lang.String prefix,
                                              boolean showType)
creates comma seperated list of primary keys from Fragment Class fragmentClass; method used for trigger generation on SQL cursor handling;

syntax of generated String:

prefix columnName [columnType] { "," prefix columnName [columnType] }
Parameters:
fragmentClass - Fragment Class whose primary keys are fetched
prefix - output column name prefix
showType - true if column data type is to be displayed, false otherwise

derivedColumnNamesToString

private java.lang.String derivedColumnNamesToString(FragmentClass fragmentClass,
                                                    java.lang.String prefix)
generates a comma seperated list of derived column names; columns of Fragment Class MINUS columns of Fragment Base Class = derived column(s);

syntax of generated string:

prefix columnName  { ", " prefix columnName }
Parameters:
fragmentClass - Fragment Class whose derived column names are fetched
prefix - output column name prefix