net.sf.taverna.t2.provenance.lineageservice
Class ProvenanceWriter

java.lang.Object
  extended by net.sf.taverna.t2.provenance.lineageservice.ProvenanceWriter
Direct Known Subclasses:
RDFProvenanceWriter

public abstract class ProvenanceWriter
extends java.lang.Object

Handles all the writing out of provenance items to the database layer. Uses standard SQL so all specific instances of this class can extend this writer to handle all of the db writes

Author:
Paolo Missier, Ian Dunlop, Stuart Owen

Field Summary
protected  int cnt
           
protected static org.apache.log4j.Logger logger
           
protected  ProvenanceQuery pq
           
 
Constructor Summary
ProvenanceWriter()
           
 
Method Summary
 void addArc(java.lang.String sourceVarName, java.lang.String sourceProcName, java.lang.String sinkVarName, java.lang.String sinkProcName, java.lang.String wfId)
           
 void addArc(Var sourceVar, Var sinkVar, java.lang.String wfId)
          inserts one row into the ARC DB table -- OBSOLETE, see instead
 java.lang.String addCollection(java.lang.String processorId, java.lang.String collId, java.lang.String parentCollectionId, java.lang.String iteration, java.lang.String portName, java.lang.String dataflowId)
           
 void addData(java.lang.String dataRef, java.lang.String wfInstanceId, byte[] data)
          adds (dataRef, data) pairs to the Data table (only for string data)
 void addData(java.lang.String dataRef, java.lang.String wfInstanceId, java.lang.Object data)
           
 void addProcessor(java.lang.String name, java.lang.String wfID, boolean isTopLevel)
          insert new processor into the provenance DB
 void addProcessor(java.lang.String name, java.lang.String type, java.lang.String wfNameRef, boolean isTopLevel)
          add a processor to the static portion of the DB with given name, type and wfnameRef scope
 void addProcessorBinding(ProcBinding pb)
           
 void addVarBinding(VarBinding vb)
           
 void addVariables(java.util.List<Var> vars, java.lang.String wfId)
          add each Var as a row into the VAR DB table
note: no static var type available as part of the dataflow...
 void addWFId(java.lang.String wfId)
           
 void addWFId(java.lang.String wfId, java.lang.String parentWFname, java.lang.String externalName, java.sql.Blob dataflow)
           
 void addWFInstanceId(java.lang.String wfId, java.lang.String wfInstanceId)
           
 java.util.Set<java.lang.String> clearDBDynamic()
           
 java.util.Set<java.lang.String> clearDBDynamic(java.lang.String runID)
          deletes DB contents for all runs -- for testing purposes
 void clearDBStatic()
          deletes DB contents for the static structures -- called prior to each run
 void clearDBStatic(java.lang.String wfID)
          deletes DB contents for the static structures -- called prior to each run
 void clearDD()
           
abstract  void closeCurrentModel()
           
 java.sql.Connection getConnection()
           
 ProvenanceQuery getQuery()
           
 void replaceCollectionRecord(NestedListNode nln, java.lang.String prevPName, java.lang.String prevVarName)
           
 void setQuery(ProvenanceQuery query)
           
 void updateVar(Var v)
          persists var v back to DB
 void updateVarBinding(VarBinding vb)
           
 void writeDDRecord(java.lang.String pFrom, java.lang.String vFrom, java.lang.String valFrom, java.lang.String pTo, java.lang.String vTo, java.lang.String valTo, java.lang.String iteration, java.lang.String wfInstanceID)
          used to support the implementation of
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static org.apache.log4j.Logger logger

cnt

protected int cnt

pq

protected ProvenanceQuery pq
Constructor Detail

ProvenanceWriter

public ProvenanceWriter()
Method Detail

getConnection

public java.sql.Connection getConnection()
                                  throws java.lang.InstantiationException,
                                         java.lang.IllegalAccessException,
                                         java.lang.ClassNotFoundException,
                                         java.sql.SQLException
Throws:
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.ClassNotFoundException
java.sql.SQLException

closeCurrentModel

public abstract void closeCurrentModel()

addVariables

public void addVariables(java.util.List<Var> vars,
                         java.lang.String wfId)
                  throws java.sql.SQLException
add each Var as a row into the VAR DB table
note: no static var type available as part of the dataflow...

Parameters:
vars -
wfId -
Throws:
java.sql.SQLException

addArc

public void addArc(Var sourceVar,
                   Var sinkVar,
                   java.lang.String wfId)
            throws java.sql.SQLException
inserts one row into the ARC DB table -- OBSOLETE, see instead

Parameters:
sourceVar -
sinkVar -
wfId -
Throws:
java.sql.SQLException

addArc

public void addArc(java.lang.String sourceVarName,
                   java.lang.String sourceProcName,
                   java.lang.String sinkVarName,
                   java.lang.String sinkProcName,
                   java.lang.String wfId)

addWFId

public void addWFId(java.lang.String wfId)
             throws java.sql.SQLException
Throws:
java.sql.SQLException

addWFId

public void addWFId(java.lang.String wfId,
                    java.lang.String parentWFname,
                    java.lang.String externalName,
                    java.sql.Blob dataflow)
             throws java.sql.SQLException
Throws:
java.sql.SQLException

addWFInstanceId

public void addWFInstanceId(java.lang.String wfId,
                            java.lang.String wfInstanceId)
                     throws java.sql.SQLException
Throws:
java.sql.SQLException

addProcessor

public void addProcessor(java.lang.String name,
                         java.lang.String wfID,
                         boolean isTopLevel)
                  throws java.sql.SQLException
insert new processor into the provenance DB

Parameters:
name -
Throws:
java.sql.SQLException

addProcessor

public void addProcessor(java.lang.String name,
                         java.lang.String type,
                         java.lang.String wfNameRef,
                         boolean isTopLevel)
                  throws java.sql.SQLException
add a processor to the static portion of the DB with given name, type and wfnameRef scope

Parameters:
name -
type -
wfNameRef -
Throws:
java.sql.SQLException

addProcessorBinding

public void addProcessorBinding(ProcBinding pb)
                         throws java.sql.SQLException
Throws:
java.sql.SQLException

addCollection

public java.lang.String addCollection(java.lang.String processorId,
                                      java.lang.String collId,
                                      java.lang.String parentCollectionId,
                                      java.lang.String iteration,
                                      java.lang.String portName,
                                      java.lang.String dataflowId)
                               throws java.sql.SQLException
Throws:
java.sql.SQLException

addData

public void addData(java.lang.String dataRef,
                    java.lang.String wfInstanceId,
                    java.lang.Object data)
             throws java.sql.SQLException
Throws:
java.sql.SQLException

addData

public void addData(java.lang.String dataRef,
                    java.lang.String wfInstanceId,
                    byte[] data)
             throws java.sql.SQLException
adds (dataRef, data) pairs to the Data table (only for string data)

Throws:
java.sql.SQLException

addVarBinding

public void addVarBinding(VarBinding vb)
                   throws java.sql.SQLException
Parameters:
dataRef -
wfInstanceId -
data - the data in bytearray form, untyped
dve - an instance of a DataExtractor. This maps the data bytearray to a string according to the semantics of the data prior to inserting the data into the DB. It's a bit of a hack used in this impl. to extract significant parts of an XMLEncoded bean that can be then used in other contexts (mainly, in OPM graphs, where a raw byte array would not be interpreted).
Throws:
java.sql.SQLException

updateVar

public void updateVar(Var v)
               throws java.sql.SQLException
persists var v back to DB

Parameters:
v -
Throws:
java.sql.SQLException

updateVarBinding

public void updateVarBinding(VarBinding vb)

replaceCollectionRecord

public void replaceCollectionRecord(NestedListNode nln,
                                    java.lang.String prevPName,
                                    java.lang.String prevVarName)

clearDBStatic

public void clearDBStatic()
                   throws java.sql.SQLException
deletes DB contents for the static structures -- called prior to each run

Throws:
java.sql.SQLException

clearDBStatic

public void clearDBStatic(java.lang.String wfID)
                   throws java.sql.SQLException
deletes DB contents for the static structures -- called prior to each run

Throws:
java.sql.SQLException

clearDBDynamic

public java.util.Set<java.lang.String> clearDBDynamic()
                                               throws java.sql.SQLException
Throws:
java.sql.SQLException

clearDBDynamic

public java.util.Set<java.lang.String> clearDBDynamic(java.lang.String runID)
                                               throws java.sql.SQLException
deletes DB contents for all runs -- for testing purposes

Throws:
java.sql.SQLException

clearDD

public void clearDD()

writeDDRecord

public void writeDDRecord(java.lang.String pFrom,
                          java.lang.String vFrom,
                          java.lang.String valFrom,
                          java.lang.String pTo,
                          java.lang.String vTo,
                          java.lang.String valTo,
                          java.lang.String iteration,
                          java.lang.String wfInstanceID)
used to support the implementation of

Parameters:
pname -
vFrom -
valFrom -
vTo -
valTo -
iteration -
wfInstanceID -

setQuery

public void setQuery(ProvenanceQuery query)

getQuery

public ProvenanceQuery getQuery()