dke.smwp.trigger
Class FragmentationTrigger

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

public class FragmentationTrigger
extends AbstractTrigger

class for creating/deploying and deleting Fragmentation Triggers.

This triggers are used to propagate tuple modifications in parameter relations (ValueParameter, PredicateParameter) to Fragmentation Relations.

Version:
1.0
Author:
Werner Enser

Fields inherited from class dke.smwp.trigger.AbstractTrigger
_connectionPool, NEW_OPERATOR, OLD_OPERATOR
 
Constructor Summary
FragmentationTrigger()
          default constructor
 
Method Summary
 void createDerived(DerivedFragmentClass fragmentClass)
          Creates Trigger for Fragmentation Relation defined upon Fragment Class fragmentClass. If the Derived Fragment Class is defined upon unfragmented Fragment Base Class, only one trigger is to be created which is defined on the Fragmentation Relation of its Derivation Base Class. Otherwise trigger 1 is defined upon the Fragmentation Relation of its Fragment Base Class, and trigger 2 is defined on the Fragmentation Relation of its Derivation Base Class.
 void createPrimary(PrimaryFragmentClass fragmentClass, AbstractParameter sourceParameter)
          Creates Trigger for Fragmentation Relation defined upon Fragment Class fragmentClass.
 void dropTrigger(java.lang.String fc_longName)
          drops all Fragmentation Trigger designated by Fragment Class fc_longName as trigger target;
private  java.lang.String getTrigger(AbstractParameter sourceParameter1, AbstractParameter sourceParameter2, FragmentationRelation targetParameter, java.lang.String fragmentSelectionPredicate, int number)
          creates PL/SQL trigger code for Fragmentation Relation;
private  java.lang.String getTrigger(AbstractParameter sourceParameter, FragmentationRelation targetParameter, java.lang.String fragmentSelectionPredicate, boolean isPrimaryFragmentClass)
          creates PL/SQL trigger code for Fragmentation Relation;
 
Methods inherited from class dke.smwp.trigger.AbstractTrigger
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
 

Constructor Detail

FragmentationTrigger

public FragmentationTrigger()
default constructor
Method Detail

createPrimary

public void createPrimary(PrimaryFragmentClass fragmentClass,
                          AbstractParameter sourceParameter)
                   throws java.sql.SQLException
Creates Trigger for Fragmentation Relation defined upon Fragment Class fragmentClass.

If the Fragment Base Class of the Primary Fragment Class fragmentClass is unfragmented only one trigger is generated which triggers from the sourceParameter to the Fragmentation Relation of the fragmentClass.

On fragmented Fragmentation Base Class two triggers are to be created. Trigger 1 defined upon sourceParameter and trigges to the Fragmentation Relation of the fragmentClass. Trigger 2 is defined upon the Fragmentation Relation of the Fragment Base Class and triggeres to the Fragmentation Relation of the fragmentClass.

Parameters:
fragmentClass - Fragmentation Relation of Fragment Class is trigger target
sourceParameter - trigger base and trigger source
Throws:
java.sql.SQLException - deployment of trigger failed

createDerived

public void createDerived(DerivedFragmentClass fragmentClass)
                   throws java.sql.SQLException
Creates Trigger for Fragmentation Relation defined upon Fragment Class fragmentClass.

If the Derived Fragment Class is defined upon unfragmented Fragment Base Class, only one trigger is to be created which is defined on the Fragmentation Relation of its Derivation Base Class.

Otherwise trigger 1 is defined upon the Fragmentation Relation of its Fragment Base Class, and trigger 2 is defined on the Fragmentation Relation of its Derivation Base Class.

Parameters:
fragmentClass - Fragment Class whose Fragment Base Class and Derivation Base Class are trigger base / source
Throws:
java.sql.SQLException - deployment of trigger fails

dropTrigger

public void dropTrigger(java.lang.String fc_longName)
drops all Fragmentation Trigger designated by Fragment Class fc_longName as trigger target;
Overrides:
dropTrigger in class AbstractTrigger
Parameters:
fc_longName - name of the Fragment Class, which is trigger target;

getTrigger

private java.lang.String getTrigger(AbstractParameter sourceParameter,
                                    FragmentationRelation targetParameter,
                                    java.lang.String fragmentSelectionPredicate,
                                    boolean isPrimaryFragmentClass)
                             throws java.sql.SQLException
creates PL/SQL trigger code for Fragmentation Relation;
Parameters:
sourceParameter - parameter the trigger is declared upon;
targetParameter - parameter (Fragmentation Relation) which designates the trigger target relation, which is to be modified on sourceParameter modifications (insert/update/delete)
fragmentSelectionPredicate - SQL statement; used as filter for Fragmentation Relation which is trigger target;
isPrimaryFragmentClass - true if trigger is created for Primary Fragment Class, false if fragment class is Derived Fragment Class
Returns:
String representation of PL/SQL trigger code
Throws:
java.sql.SQLException - error on fetching meta-data

getTrigger

private java.lang.String getTrigger(AbstractParameter sourceParameter1,
                                    AbstractParameter sourceParameter2,
                                    FragmentationRelation targetParameter,
                                    java.lang.String fragmentSelectionPredicate,
                                    int number)
                             throws java.sql.SQLException
creates PL/SQL trigger code for Fragmentation Relation;
Parameters:
sourceParameter1 - Reference Relation the PL/SQL trigger is declared upon; trigger base and trigger source
sourceParameter2 - additional trigger source
targetParameter - parameter which designates the trigger target relation, which is to be modified on sourceParameter1 modifications (insert/update/delete)
number - number used for extension of tigger name, due two triggers are created for the same targetParameter.
fragmentSelectionPredicate - SQL statement; used as filter for Fragmentation Relation which is trigger target;
Returns:
String representation of PL/SQL trigger code
Throws:
java.sql.SQLException - error on fetching meta-data