|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.ObjectgeneralDatabase.SQLLogging
public abstract class SQLLogging
SQLLogging performs basic SQL actions to write and read data from a database.
Each SQLLogging object is Associated with a PamDataBlock.
When a database is first connected, the last values entered into the database will be read back into Pamguard.
When a PamDataUnit is added to a PamDataBlock, Pamguard will automatically call the fillTableData function. This will automatically fill in any database columns that are cross referenced to data from other tables. It will then call the abstract function setTableData where the programmer is responsible for filling data for other columns.
PamDataBlock,
PamTableDefinition,
PamTableItem| Field Summary | |
|---|---|
private boolean |
canView
|
private PamViewParameters |
currentViewParameters
|
private java.sql.Statement |
dbStatement
|
private int |
lastLoadIndex
Database index of last item loaded offlien or mixed mode |
private long |
lastTime
time of last item loaded offline or mixed mode |
private boolean |
loadViewData
|
private CursorFinder |
loggingCursorFinder
|
private boolean |
mixedDataWaiting
|
private java.sql.ResultSet |
mixedModeResult
|
private java.sql.PreparedStatement |
mixedModeStatement
|
private PamDataBlock |
pamDataBlock
|
private PamTableDefinition |
pamTableDefinition
Reference to the table definition object. |
private java.sql.ResultSet |
resultSet
|
private java.sql.Connection |
selectConnection
|
private java.sql.PreparedStatement |
selectStatement
|
private java.sql.Connection |
statementCon
|
static int |
UPDATE_POLICY_OVERWRITE
|
static int |
UPDATE_POLICY_WRITENEW
|
private int |
updatePolicy
|
private CursorFinder |
viewerCursorFinder
|
| Constructor Summary | |
|---|---|
protected |
SQLLogging(PamDataBlock pamDataBlock)
SQLLogging constructor. |
| Method Summary | |
|---|---|
protected boolean |
createDataUnit(long timeMilliseconds,
int databaseIndex)
Turn the data, which have been transferred back into the PamTableItems back into a useable data unit and put it into the datablock. |
java.lang.String |
createInClause(int[] idList)
Make an SQL clause in the from IN ( ... |
protected java.sql.ResultSet |
createViewResultSet(java.sql.Connection con,
PamViewParameters pamViewParameters)
|
boolean |
doExtraChecks(DBProcess dbProcess,
java.sql.Connection connection)
Gives each module a chance to do additional checks and alterations to the database table at connection time. |
protected void |
fillTableData(PamDataUnit pamDataUnit)
Automatically fills table data columns that can be done automatically (counters, primary keys and columns cross referenced to data in other tables). |
protected void |
finalize()
|
static SQLLogging |
findLogger(java.lang.String tableName)
Searches the Pamguard system for a SQLLogger with a given table name. |
java.lang.String |
getIdListUpdatClause(SaveRequirements sr)
|
long |
getLastTime()
|
PamDataBlock |
getPamDataBlock()
|
private java.sql.ResultSet |
getResultSet(java.sql.Connection con)
|
PamTableDefinition |
getTableDefinition()
Each SQLLogging class must provide a valid Pamguard database definition object |
java.lang.String |
getTimesUpdateClause(SaveRequirements sr)
Get a select clause for viewer updates. |
int |
getUpdatePolicy()
|
CursorFinder |
getViewerCursorFinder()
|
java.lang.String |
getViewerLoadClause(PamViewParameters pvp)
|
java.lang.String |
getViewerUpdateClause(SaveRequirements sr)
Get a select clause for viewer updates. |
boolean |
isCanView()
|
boolean |
isLoadViewData()
|
boolean |
loadViewData(java.sql.Connection con,
PamViewParameters pamViewParameters)
Load viewer data for a single datablock. |
boolean |
loadViewerData(long dataStart,
long dataEnd)
|
boolean |
logData(java.sql.Connection con,
PamDataUnit dataUnit)
Called when a new PamDataUnit is added to a PamDataBlock to write those data to the database. |
boolean |
prepareEmulation(long[] times)
Written to prepare the AIS module for general data emulation - will try to put it in this higher level class, but will move to AISLogger if there are any problems with it. |
boolean |
prepareForMixedMode(java.sql.Connection con)
|
boolean |
readLastData(java.sql.Connection con)
Called when a new database is connected to read the last values back in from the database. |
boolean |
readMixedModeData(long timeTo)
always creates the data unit on the next pass through each loop so that they are only created AFTER the tiem cut off ahs passed. |
boolean |
readNextEmulation()
|
boolean |
reCheckTable()
Recheck the databse tables associated with this Logger. |
boolean |
reLogData(java.sql.Connection con,
PamDataUnit dataUnit)
Called when an old PamDataUnit is updated. |
boolean |
saveOfflineData(DBControlUnit dbControlUnit,
java.sql.Connection connection)
Save offline data in viewer mode. |
void |
setCanView(boolean canView)
|
void |
setColumnData(int iCol,
java.lang.Object data)
Data values going in and out of the database are stored with their respective PamTableItems. |
void |
setLoadViewData(boolean loadViewData)
|
abstract void |
setTableData(PamDataUnit pamDataUnit)
Callback function when new data are created that allows the user to set the data for each column. |
void |
setTableDefinition(PamTableDefinition pamTableDefinition)
|
void |
setUpdatePolicy(int updatePolicy)
|
private boolean |
standardOfflineSave(DBControlUnit dbControlUnit,
java.sql.Connection connection)
|
boolean |
transferDataFromResult(java.sql.ResultSet resultSet)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private java.sql.PreparedStatement selectStatement
private java.sql.Connection selectConnection
private PamTableDefinition pamTableDefinition
private PamViewParameters currentViewParameters
private PamDataBlock pamDataBlock
private long lastTime
private int lastLoadIndex
private java.sql.Statement dbStatement
private boolean canView
private boolean loadViewData
private CursorFinder loggingCursorFinder
private CursorFinder viewerCursorFinder
public static final int UPDATE_POLICY_OVERWRITE
public static final int UPDATE_POLICY_WRITENEW
private int updatePolicy
private java.sql.Connection statementCon
private java.sql.ResultSet resultSet
private java.sql.PreparedStatement mixedModeStatement
private java.sql.ResultSet mixedModeResult
private boolean mixedDataWaiting
| Constructor Detail |
|---|
protected SQLLogging(PamDataBlock pamDataBlock)
| Method Detail |
|---|
public CursorFinder getViewerCursorFinder()
protected void finalize()
throws java.lang.Throwable
finalize in class java.lang.Objectjava.lang.Throwablepublic static final SQLLogging findLogger(java.lang.String tableName)
tableName - table name to search for.
public void setColumnData(int iCol,
java.lang.Object data)
It is more efficient to maintain references to each PamTableItem and to set the values directly in each PamTableItem in the setTableData function.
iCol - Database item indexdata - Data object (can be null, otherwise must be correct type for
the column)PamTableDefinition,
PamTableItempublic final PamTableDefinition getTableDefinition()
PamTableDefinitionpublic void setTableDefinition(PamTableDefinition pamTableDefinition)
pamTableDefinition - PamTableDefinition to setpublic abstract void setTableData(PamDataUnit pamDataUnit)
pamDataUnit - protected final void fillTableData(PamDataUnit pamDataUnit)
pamDataUnit -
public boolean logData(java.sql.Connection con,
PamDataUnit dataUnit)
con - Database ConnectiondataUnit - Pamguard Data unit.
PamDataUnit
public boolean reLogData(java.sql.Connection con,
PamDataUnit dataUnit)
con - Database ConnectiondataUnit - Pamguard Data nit.
PamDataUnitprivate java.sql.ResultSet getResultSet(java.sql.Connection con)
public boolean readLastData(java.sql.Connection con)
con - Database connection handle.
public boolean loadViewerData(long dataStart,
long dataEnd)
public boolean loadViewData(java.sql.Connection con,
PamViewParameters pamViewParameters)
this executes in a Swing Worker thread, so needs to send notification objects to that thread, and not direct to the Controller so that they can be published back in the AWT thread.
loadViewerData - Swing Worker objectcon - database connectionpamViewParameters - viewer parameters.
public java.lang.String getViewerLoadClause(PamViewParameters pvp)
protected boolean createDataUnit(long timeMilliseconds,
int databaseIndex)
protected java.sql.ResultSet createViewResultSet(java.sql.Connection con,
PamViewParameters pamViewParameters)
public final boolean transferDataFromResult(java.sql.ResultSet resultSet)
public PamDataBlock getPamDataBlock()
public boolean prepareEmulation(long[] times)
times - time limits for the emulation.
public boolean readNextEmulation()
public boolean prepareForMixedMode(java.sql.Connection con)
public boolean readMixedModeData(long timeTo)
timeTo -
public int getUpdatePolicy()
public void setUpdatePolicy(int updatePolicy)
public boolean isCanView()
public void setCanView(boolean canView)
public boolean isLoadViewData()
public void setLoadViewData(boolean loadViewData)
public boolean reCheckTable()
Note that if no databse is present, false will be returned
public boolean doExtraChecks(DBProcess dbProcess,
java.sql.Connection connection)
connection -
public long getLastTime()
public boolean saveOfflineData(DBControlUnit dbControlUnit,
java.sql.Connection connection)
This is a pretty basic function which assumes pretty much a 1:1 correspondence between data loaded into the viewer and data to be saved.
Three types of saving to do
Should be able to deal with first tow here, but functions must override for 3.
dbControlUnit - connection -
private boolean standardOfflineSave(DBControlUnit dbControlUnit,
java.sql.Connection connection)
public java.lang.String getViewerUpdateClause(SaveRequirements sr)
A couple of examples you may want to use are in getTimesUpdateClause and getIdListUpdatClause
getIdListUpdatClause is currently the default.
sr - requirements extracted from loaded data
public java.lang.String getTimesUpdateClause(SaveRequirements sr)
for example, the default selection is based on time - which won't work if the event times may have changed - ok for things which will be fixed in time.
sr - requirements extracted from loaded data
public java.lang.String getIdListUpdatClause(SaveRequirements sr)
public java.lang.String createInClause(int[] idList)
idList -
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||