dke.smwp
Class CommandProcessor

java.lang.Object
  |
  +--dke.smwp.CommandProcessor

public class CommandProcessor
extends java.lang.Object

This class represents the interface for creating, dropping, altering, etc. fragment classes, fragment class parameters and page classes.

The class CommandProcessor uses identical interfaces like class Site. The methods in CommandProcessor check if the parameters provided for its methods are semantically correct. If the semantic check for given parameters is successful the corresponding method in class Site will be invoked. After the processing the method an proper feedback is stored in member varialbe _output.

Whenever a semantic error occurs during processing (e.g., invalid name, wrong number of fragment parameters, etc.) this should be signalled by throwing a dke.smwp.compiler.SemanticParserException.

Version:
1.0
Author:
Werner Enser

Field Summary
private  java.lang.String _output
          contains output/feedback from the previously executed method
private static Site _site
          central class for managing fragment classes, fragment class parameters and page classes
 
Constructor Summary
CommandProcessor()
          default constructor
 
Method Summary
 void alterFragmentClass(java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String[] xmlPublishStmt)
           
 void alterPageClassAddFC(java.lang.String pc_rootName, java.lang.String[] pc_paramNames, java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String fc_aliasName, java.util.Hashtable fc_parameterMapping, java.lang.String[] afc_rootNames, java.lang.String[][] afc_paramNames, java.lang.String[] afc_aliasNames, InternalPageRef[] fc_internalPageRefs, ExternalPageRef[] fc_externalPageRefs)
          method for ALTERING page classes; adds fragment class to page class
 void alterPageClassDropFC(java.lang.String pc_rootName, java.lang.String[] pc_paramNames, java.lang.String fc_rootName, java.lang.String[] fc_paramNames)
          method for ALTERING page classes remove fragment class from page class
 void createDerivedFragmentClass(java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String bfc_rootName, java.lang.String[] bfc_paramNames, java.lang.String bfc_aliasName, java.lang.String dfc_rootName, java.lang.String[] dfc_paramNames, java.lang.String dfc_aliasName, java.lang.String joinClause, java.lang.String[] xmlPublishStmt)
          method for CREATING derived fragment classes
 void createPageClass(java.lang.String pc_rootName, java.lang.String[] pc_paramNames, java.lang.String filename, java.lang.String genApproach, java.lang.String ffc_rootName, java.lang.String[] ffc_paramNames, java.lang.String ffc_aliasName, java.util.Hashtable ffc_paramMap, InternalPageRef[] ffc_internalPageRefs, ExternalPageRef[] ffc_externalPageRefs, java.lang.String[] fc_rootNames, java.lang.String[][] fc_paramNames, java.lang.String[] fc_aliasNames, java.util.Hashtable[] fc_paramMaps, InternalPageRef[][] fc_internalPageRefs, ExternalPageRef[][] fc_externalPageRefs, java.lang.String[] xmlPublishStmt)
          method for CREATING page classes
 void createPredicateParameter(java.lang.String pbpName, java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String[] labelNames, java.lang.String[] labelValues)
          create new reference relation containing predicate based parameters;
 void createPrimaryFragmentClass(java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String bfc_rootName, java.lang.String[] bfc_paramNames, java.lang.String tuplePredicate, java.lang.String fragmentPredicate, java.lang.String[] xmlPublishStmt)
          method for CREATING primary fragment classes
 void createValueParameter(java.lang.String vbpParam, java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String syncPolicy)
          create new reference relation defined upon existing root fragment class;
 void createValueParameter(java.lang.String vbpParam, java.lang.String fc_rootName, java.lang.String[] fc_paramNames, java.lang.String rr_tableName, java.lang.String rr_paramName)
          create value parameter by using the column of an existing relation as reference relation;
 void dropFragmentClass(java.lang.String fc_rootName, java.lang.String[] fc_paramNames)
          method for DROPPING fragment classes
 void dropPageClass(java.lang.String pc_rootName, java.lang.String[] pc_paramNames)
          method for DROPPING page classes
 void dropParameter(java.lang.String paramName, java.lang.String fc_rootName, java.lang.String[] fc_paramNames)
          method for DROPPING parameters; drop parameter mapped to fragment class (designated by fcName and fcParams) defining parameter paramName
 java.lang.String getOutput()
          gets the String output for command execution which is generated another method in this class for creating, dropping, altering, etc. fragment classes, fragment class parameters and page classes.
private  void setOutput(java.lang.String output)
          set output String
 void showFragmentClass(java.lang.String fc_rootName, java.lang.String[] fc_paramNames)
          method for DISPLAYING fragment classes
 void showPageClass(java.lang.String pc_rootName, java.lang.String[] pc_paramNames)
          methods for DISPLAYING page classes
 void showParameter(java.lang.String paramName, java.lang.String fc_rootName, java.lang.String[] fc_paramNames)
          methods for DISPLAYING parameter(s)
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

_site

private static Site _site
central class for managing fragment classes, fragment class parameters and page classes

_output

private java.lang.String _output
contains output/feedback from the previously executed method
Constructor Detail

CommandProcessor

public CommandProcessor()
default constructor
Method Detail

getOutput

public java.lang.String getOutput()
gets the String output for command execution which is generated another method in this class for creating, dropping, altering, etc. fragment classes, fragment class parameters and page classes.
Returns:
String output of message generated by another method of this class

setOutput

private void setOutput(java.lang.String output)
set output String
Parameters:
output - output String

createPrimaryFragmentClass

public void createPrimaryFragmentClass(java.lang.String fc_rootName,
                                       java.lang.String[] fc_paramNames,
                                       java.lang.String bfc_rootName,
                                       java.lang.String[] bfc_paramNames,
                                       java.lang.String tuplePredicate,
                                       java.lang.String fragmentPredicate,
                                       java.lang.String[] xmlPublishStmt)
                                throws SemanticParserException,
                                       SMWPException
method for CREATING primary fragment classes
Parameters:
fc_rootName - fragment class root name
fc_paramNames - array of parameter names for fragment class
bfc_rootName - base fragment class root name
bfc_paramNames - array of parameter names for base fragment class
tuplePredicate - tuple selection predicate
fragmentPredicate - fragment selection predicate
xmlPublishStmt - array of xml publish statements contains [0] fragmentNamespace, [1] fragmentElementName, [2] tupleNamespace, [3] tupleElementName, or null if no fragment class is not to be published
Throws:
SemanticParserException - parameter constellation incorrect
SMWPException - creating primary fragment class failed

createDerivedFragmentClass

public void createDerivedFragmentClass(java.lang.String fc_rootName,
                                       java.lang.String[] fc_paramNames,
                                       java.lang.String bfc_rootName,
                                       java.lang.String[] bfc_paramNames,
                                       java.lang.String bfc_aliasName,
                                       java.lang.String dfc_rootName,
                                       java.lang.String[] dfc_paramNames,
                                       java.lang.String dfc_aliasName,
                                       java.lang.String joinClause,
                                       java.lang.String[] xmlPublishStmt)
                                throws SyntacticParserException,
                                       SMWPException
method for CREATING derived fragment classes
Parameters:
fc_rootName - fragment class root name
fc_paramNames - array of parameter names for fragment class
bfc_rootName - base fragment class root name
bfc_paramNames - array of parameter names for base fragment class
bfc_aliasName - alias for base fragment class (designated by bfc_rootName and bfc_paramNames)
dfc_rootName - derived fragment class root name
dfc_paramNames - array of parameter names for derived fragment class
dfc_aliasName - alias for derived fragment class (designated by dfc_rootName and dfc_paramNames)
joinClause - join clause between base fragment class and derivation fragment class via thier join attributes in SQL statements (f.e. bfcAlias.column = dfcAlias.column)
xmlPublishStmt - array of xml publish statements contains [0] fragmentNamespace, [1] fragmentElementName, [2] tupleNamespace, [3] tupleElementName, or null if no fragment class is not to be published
Throws:
SyntacticParserException - incorrect parameter count
SMWPException - creating primary fragment class failed

createPageClass

public void createPageClass(java.lang.String pc_rootName,
                            java.lang.String[] pc_paramNames,
                            java.lang.String filename,
                            java.lang.String genApproach,
                            java.lang.String ffc_rootName,
                            java.lang.String[] ffc_paramNames,
                            java.lang.String ffc_aliasName,
                            java.util.Hashtable ffc_paramMap,
                            InternalPageRef[] ffc_internalPageRefs,
                            ExternalPageRef[] ffc_externalPageRefs,
                            java.lang.String[] fc_rootNames,
                            java.lang.String[][] fc_paramNames,
                            java.lang.String[] fc_aliasNames,
                            java.util.Hashtable[] fc_paramMaps,
                            InternalPageRef[][] fc_internalPageRefs,
                            ExternalPageRef[][] fc_externalPageRefs,
                            java.lang.String[] xmlPublishStmt)
                     throws SyntacticParserException,
                            SMWPException
method for CREATING page classes
Parameters:
pc_rootName - root name of Page Class
pc_paramNames - names of parameters used by Page Class
filename - prefix of filename for generated Page Fragments; final filename is fileName { "_" parameterValue ".xml"}
genApproach - generation approach which is either "coreSMWP" or "pullOfFragments" or "onTheFly"
ffc_rootName - root name of Foundation Fragment Class
ffc_paramNames - names of parameters used by Foundation Fragment Class
ffc_aliasName - alias name for Foundation Fragment Class (desinated by ffcName and ffcParams)
ffc_paramMap - parameter mapping between Page Class parameters and Foundation Fragment Class parameters; using Page Class parameters as key
ffc_internalPageRefs - array of internal page references mapped to Foundation Fragment Class
ffc_externalPageRefs - array of external page references mapped to Foundation Fragment Class
fc_rootNames - root names of Fragment Classes
fc_paramNames - names of parameters used by Fragment Classes; (f.e.: fcParams[x][] contains parameter names for fcName[x])
fc_aliasNames - alias names for Fragment Classes (designated by fcName[x] and fcParam[x][])
fc_paramMaps - parameter mapping between Page Class parameters and Fragment Class parameters; using Page Class parameters as key
fc_internalPageRefs - internal page references mapped to Fragment Class (designated by fcName[x] and fcParam[x][])
fc_externalPageRefs - external page references mapped to Fragment Class (designated by fcName[x] and fcParam[x][])
xmlPublishStmt - Array of xml publish statements; [0] pageNamespace, [1] pageElementName
Throws:
SMWPException - saving meta-data failed; xml document creation failed;
SyntacticParserException - invalid parameter count

alterFragmentClass

public void alterFragmentClass(java.lang.String fc_rootName,
                               java.lang.String[] fc_paramNames,
                               java.lang.String[] xmlPublishStmt)
                        throws SemanticParserException,
                               SyntacticParserException,
                               SMWPException
Parameters:
fc_rootName - root name of Fragment Class which is to be altered
fc_paramNames - names of parameters used by Fragment Class
xmlPublishStmt - XML publishing information
Throws:
SemanticParserException -  
SyntacticParserException -  
SMWPException - saving publishing information failed; Fragment Class not found; dropping publishing info while Fragment Class mapped to Page Class

alterPageClassAddFC

public void alterPageClassAddFC(java.lang.String pc_rootName,
                                java.lang.String[] pc_paramNames,
                                java.lang.String fc_rootName,
                                java.lang.String[] fc_paramNames,
                                java.lang.String fc_aliasName,
                                java.util.Hashtable fc_parameterMapping,
                                java.lang.String[] afc_rootNames,
                                java.lang.String[][] afc_paramNames,
                                java.lang.String[] afc_aliasNames,
                                InternalPageRef[] fc_internalPageRefs,
                                ExternalPageRef[] fc_externalPageRefs)
                         throws SyntacticParserException,
                                SMWPException
method for ALTERING page classes; adds fragment class to page class
Parameters:
pc_rootName - root name of Page Class
pc_paramNames - names of parameters used by Page Class
fc_rootName - root name of Fragment Class which is to be added to Page Class
fc_paramNames - names of parameters used by Fragment Class which is to be added to Page Class
fc_aliasName - alias name of Fragment Class which is to be added to Page Class; used by statements for creating page references
fc_parameterMapping - parameter mapping between Page Class parameters and Foundation Fragment Class parameters; uses Page Class parameters as key
afc_rootNames - array of root names for Fragment Classes
afc_paramNames - array of names of parameters used by Fragment Classes
afc_aliasNames - alias names for Fragment Classes; used by statements for creating page references
fc_internalPageRefs - internal page class references for added Fragment Class
fc_externalPageRefs - external page class references for added Fragment Class
Throws:
SyntacticParserException -  
SMWPException - altering page class failed

alterPageClassDropFC

public void alterPageClassDropFC(java.lang.String pc_rootName,
                                 java.lang.String[] pc_paramNames,
                                 java.lang.String fc_rootName,
                                 java.lang.String[] fc_paramNames)
                          throws SyntacticParserException,
                                 SMWPException
method for ALTERING page classes remove fragment class from page class
Parameters:
pc_rootName - root name of Page Class the Fragment Class is removed from
pc_paramNames - names of parameters used by Page Class
fc_rootName - root name of Fragment Class which is to be removed from Page Class
fc_paramNames - names of parameters used by Fragment Class which is to be removed from Page Class
Throws:
SMWPException - Fragment Class not found, Page Class not found, deleting smwp meta-data failed
SyntacticParserException -  

createPredicateParameter

public void createPredicateParameter(java.lang.String pbpName,
                                     java.lang.String fc_rootName,
                                     java.lang.String[] fc_paramNames,
                                     java.lang.String[] labelNames,
                                     java.lang.String[] labelValues)
                              throws SemanticParserException,
                                     SyntacticParserException,
                                     SMWPException
create new reference relation containing predicate based parameters;
Parameters:
pbpName - name of the Predicate Parameter which is to be created
fc_rootName - name of the root Fragment Class, which the parameter is defined upon
fc_paramNames - names of fragment class, the parameter is to be defined upon, must be null
labelNames - predicate parameter label names
labelValues - predicate parameter label values; SQL statements
Throws:
SMWPException - Fragment Class is not Root Fragment Class; parameter already exists; table creation failed; meta-data insertion failed
SemanticParserException - invalid parameter count
SyntacticParserException - parameter value missing

createValueParameter

public void createValueParameter(java.lang.String vbpParam,
                                 java.lang.String fc_rootName,
                                 java.lang.String[] fc_paramNames,
                                 java.lang.String rr_tableName,
                                 java.lang.String rr_paramName)
                          throws SemanticParserException,
                                 SyntacticParserException,
                                 SMWPException
create value parameter by using the column of an existing relation as reference relation;
Parameters:
vbpParam - name of the value based parameter
fc_rootName - Fragment Class root name
fc_paramNames - array of parameter names for Fragment Class
rr_tableName - name of table used as reference realation
rr_paramName - parameter name of reference relation (column of reference relation which is to be used as parameter)
Throws:
SemanticParserException - parameter not set
SyntacticParserException - fc_paramNames is not null, Fragment Class is parameterized
SMWPException - if Fragment Class is not Root Fragment Class, parameter already exists, table creation failed, meta-data insertion failed

createValueParameter

public void createValueParameter(java.lang.String vbpParam,
                                 java.lang.String fc_rootName,
                                 java.lang.String[] fc_paramNames,
                                 java.lang.String syncPolicy)
                          throws SemanticParserException,
                                 SyntacticParserException,
                                 SMWPException
create new reference relation defined upon existing root fragment class;
Parameters:
vbpParam - name of the value based parameter
fc_rootName - root name of Fragment Class upon which the parameter is to be created
fc_paramNames - names of parameters used by Fragment Class
syncPolicy - synchronize policy used between Root Fragment Class and created Reference Relation, which can be "expansive" or "synchronized" or "none"
Throws:
SemanticParserException - invalid parameter count
SyntacticParserException - invalid syncPolicy entered
SMWPException - Fragment Class is not Root Fragment Class, parameter already exists, table creation failed, meta-data insertion failed

dropFragmentClass

public void dropFragmentClass(java.lang.String fc_rootName,
                              java.lang.String[] fc_paramNames)
                       throws SMWPException
method for DROPPING fragment classes
Parameters:
fc_rootName - root name of fragment class which is to be dropped
fc_paramNames - names of parameters used by Fragment Class
Throws:
SMWPException - drop failed

dropPageClass

public void dropPageClass(java.lang.String pc_rootName,
                          java.lang.String[] pc_paramNames)
                   throws SMWPException
method for DROPPING page classes
Parameters:
pc_rootName - root name of page class which is to be dropped
pc_paramNames - names of parameters used by page class
Throws:
SMWPException - drop failed

dropParameter

public void dropParameter(java.lang.String paramName,
                          java.lang.String fc_rootName,
                          java.lang.String[] fc_paramNames)
                   throws SemanticParserException,
                          SyntacticParserException,
                          SMWPException
method for DROPPING parameters; drop parameter mapped to fragment class (designated by fcName and fcParams) defining parameter paramName
Parameters:
paramName - parameter name which is to be deleted
fc_rootName - name of Root Fragment Class the parameter is defined upon
fc_paramNames - names of parameters used by Fragment Class; must be null
Throws:
SemanticParserException - fragment class is fragmented (fc_paramNames is not null)
SyntacticParserException - missing paremter value
SMWPException - dropping parameter failed

showFragmentClass

public void showFragmentClass(java.lang.String fc_rootName,
                              java.lang.String[] fc_paramNames)
                       throws SyntacticParserException
method for DISPLAYING fragment classes
Parameters:
fc_rootName - fragment class root name
fc_paramNames - array of parameter names for fragment class
Throws:
SyntacticParserException -  

showPageClass

public void showPageClass(java.lang.String pc_rootName,
                          java.lang.String[] pc_paramNames)
                   throws SyntacticParserException
methods for DISPLAYING page classes
Parameters:
pc_rootName - page class root name
pc_paramNames - array of parameter names for page class
Throws:
SyntacticParserException -  

showParameter

public void showParameter(java.lang.String paramName,
                          java.lang.String fc_rootName,
                          java.lang.String[] fc_paramNames)
methods for DISPLAYING parameter(s)
Parameters:
paramName - name of parameter which is to be displayed
fc_rootName - root name of fragment class
fc_paramNames - names of parameters used by Fragment Class