Class AExperimenterSQLHandle
- java.lang.Object
-
- ai.libs.jaicore.experiments.databasehandle.AExperimenterSQLHandle
-
- All Implemented Interfaces:
IExperimentDatabaseHandle,org.api4.java.common.control.ILoggingCustomizable
- Direct Known Subclasses:
ExperimenterMySQLHandle,ExperimenterRestSQLHandle
public class AExperimenterSQLHandle extends java.lang.Object implements IExperimentDatabaseHandle, org.api4.java.common.control.ILoggingCustomizable
-
-
Constructor Summary
Constructors Constructor Description AExperimenterSQLHandle(ai.libs.jaicore.db.IDatabaseAdapter adapter, java.lang.String tablename)AExperimenterSQLHandle(ai.libs.jaicore.db.IDatabaseConfig config)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ExperimentDBEntrycreateAndGetExperiment(Experiment experiment)Creates a new experiment entry and returns it.ExperimentDBEntrycreateAndGetExperiment(java.util.Map<java.lang.String,java.lang.String> values)java.util.List<ExperimentDBEntry>createAndGetExperiments(java.util.List<Experiment> experiments)Creates a new experiment entry and returns it.voiddeleteDatabase()Deletes everything known to the experiment database.voiddeleteExperiment(ExperimentDBEntry exp)Deletes an experiment from the databasevoidfinishExperiment(ExperimentDBEntry expEntry)Signals that an experiment has been finished successfully.voidfinishExperiment(ExperimentDBEntry expEntry, java.lang.Throwable error)Signals that an experiment has failed with an exception.java.util.List<ExperimentDBEntry>getAllExperiments()Returns a list of all experiments contained in the databasejava.util.List<ExperimentDBEntry>getConductedExperiments()Returns a list of all experiments contained in the database marked as being conducted.java.util.Collection<java.lang.String>getConsideredValuesForKey(java.lang.String key)protected java.lang.StringgetDatabaseFieldnameForConfigEntry(java.lang.String configKey)protected java.util.List<ExperimentDBEntry>getExperimentsForSQLQuery(java.lang.String sql)ExperimentDBEntrygetExperimentWithId(int id)Gets the experiment with the given id.java.lang.StringgetLoggerName()intgetNumberOfAllExperiments()Returns a list of all experiments contained in the databasejava.util.List<ExperimentDBEntry>getOpenExperiments()Returns a list of all experiments contained in the database that have not been started yet.java.util.List<ExperimentDBEntry>getRandomOpenExperiments(int limit)Returns a list of all experiments contained in the database that have not been started yet.java.util.List<ExperimentDBEntry>getRunningExperiments()Returns a list of all experiments that are currently being conducted.protected java.lang.StringgetSetupCreateTableQuery()protected java.lang.StringgetSQLPrefixForKeySelectQuery()protected java.lang.StringgetSQLPrefixForSelectQuery()voidsetLoggerName(java.lang.String name)voidsetup(IExperimentSetConfig config)Prepares everything so that upcoming calls for create and update will be managed according to the specified configuration.voidstartExperiment(ExperimentDBEntry exp)Updates non-keyfield values of the experiment.voidupdateExperiment(ExperimentDBEntry exp, java.util.Map<java.lang.String,? extends java.lang.Object> values)Updates non-keyfield values of the experiment.booleanupdateExperimentConditionally(ExperimentDBEntry exp, java.util.Map<java.lang.String,java.lang.String> conditions, java.util.Map<java.lang.String,? extends java.lang.Object> values)
-
-
-
Method Detail
-
getSetupCreateTableQuery
protected java.lang.String getSetupCreateTableQuery()
-
setup
public void setup(IExperimentSetConfig config) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandlePrepares everything so that upcoming calls for create and update will be managed according to the specified configuration.- Specified by:
setupin interfaceIExperimentDatabaseHandle- Parameters:
config- Description of the experiment setup- Throws:
ExperimentDBInteractionFailedException
-
getSQLPrefixForKeySelectQuery
protected java.lang.String getSQLPrefixForKeySelectQuery()
-
getSQLPrefixForSelectQuery
protected java.lang.String getSQLPrefixForSelectQuery()
-
getConsideredValuesForKey
public java.util.Collection<java.lang.String> getConsideredValuesForKey(java.lang.String key) throws ExperimentDBInteractionFailedException- Specified by:
getConsideredValuesForKeyin interfaceIExperimentDatabaseHandle- Parameters:
key- The key attribute- Throws:
ExperimentDBInteractionFailedException
-
getNumberOfAllExperiments
public int getNumberOfAllExperiments() throws ExperimentDBInteractionFailedExceptionDescription copied from interface:IExperimentDatabaseHandleReturns a list of all experiments contained in the database- Specified by:
getNumberOfAllExperimentsin interfaceIExperimentDatabaseHandle- Throws:
ExperimentDBInteractionFailedException
-
getAllExperiments
public java.util.List<ExperimentDBEntry> getAllExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleReturns a list of all experiments contained in the database- Specified by:
getAllExperimentsin interfaceIExperimentDatabaseHandle- Returns:
- List of all experiments
- Throws:
ExperimentDBInteractionFailedException
-
getOpenExperiments
public java.util.List<ExperimentDBEntry> getOpenExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleReturns a list of all experiments contained in the database that have not been started yet.- Specified by:
getOpenExperimentsin interfaceIExperimentDatabaseHandle- Returns:
- List of all experiments conducted so far
- Throws:
ExperimentDBInteractionFailedException
-
getRandomOpenExperiments
public java.util.List<ExperimentDBEntry> getRandomOpenExperiments(int limit) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleReturns a list of all experiments contained in the database that have not been started yet.- Specified by:
getRandomOpenExperimentsin interfaceIExperimentDatabaseHandle- Parameters:
limit- Maximum number of open experiments that should be returned- Returns:
- List of all experiments conducted so far
- Throws:
ExperimentDBInteractionFailedException
-
getRunningExperiments
public java.util.List<ExperimentDBEntry> getRunningExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleReturns a list of all experiments that are currently being conducted.- Specified by:
getRunningExperimentsin interfaceIExperimentDatabaseHandle- Returns:
- List of all experiments conducted so far
- Throws:
ExperimentDBInteractionFailedException
-
getConductedExperiments
public java.util.List<ExperimentDBEntry> getConductedExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleReturns a list of all experiments contained in the database marked as being conducted.- Specified by:
getConductedExperimentsin interfaceIExperimentDatabaseHandle- Returns:
- List of all experiments conducted so far
- Throws:
ExperimentDBInteractionFailedException
-
getExperimentsForSQLQuery
protected java.util.List<ExperimentDBEntry> getExperimentsForSQLQuery(java.lang.String sql) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
createAndGetExperiment
public ExperimentDBEntry createAndGetExperiment(java.util.Map<java.lang.String,java.lang.String> values) throws ExperimentDBInteractionFailedException, ExperimentAlreadyExistsInDatabaseException
-
createAndGetExperiment
public ExperimentDBEntry createAndGetExperiment(Experiment experiment) throws ExperimentDBInteractionFailedException, ExperimentAlreadyExistsInDatabaseException
Description copied from interface:IExperimentDatabaseHandleCreates a new experiment entry and returns it.- Specified by:
createAndGetExperimentin interfaceIExperimentDatabaseHandle- Returns:
- The id of the created experiment
- Throws:
ExperimentDBInteractionFailedExceptionExperimentAlreadyExistsInDatabaseException
-
createAndGetExperiments
public java.util.List<ExperimentDBEntry> createAndGetExperiments(java.util.List<Experiment> experiments) throws ExperimentDBInteractionFailedException, ExperimentAlreadyExistsInDatabaseException
Description copied from interface:IExperimentDatabaseHandleCreates a new experiment entry and returns it.- Specified by:
createAndGetExperimentsin interfaceIExperimentDatabaseHandle- Parameters:
experiments- the experiments to be created- Returns:
- The id of the created experiment
- Throws:
ExperimentDBInteractionFailedExceptionExperimentAlreadyExistsInDatabaseException
-
updateExperiment
public void updateExperiment(ExperimentDBEntry exp, java.util.Map<java.lang.String,? extends java.lang.Object> values) throws ExperimentUpdateFailedException
Description copied from interface:IExperimentDatabaseHandleUpdates non-keyfield values of the experiment.- Specified by:
updateExperimentin interfaceIExperimentDatabaseHandle- Parameters:
exp- The experiment entry in the databasevalues- A key-value store where keys are names of result fields. The values will be associated to each key in the database.- Throws:
ExperimentUpdateFailedException
-
updateExperimentConditionally
public boolean updateExperimentConditionally(ExperimentDBEntry exp, java.util.Map<java.lang.String,java.lang.String> conditions, java.util.Map<java.lang.String,? extends java.lang.Object> values) throws ExperimentUpdateFailedException
- Specified by:
updateExperimentConditionallyin interfaceIExperimentDatabaseHandle- Throws:
ExperimentUpdateFailedException
-
finishExperiment
public void finishExperiment(ExperimentDBEntry expEntry, java.lang.Throwable error) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleSignals that an experiment has failed with an exception. The timestamp and the exception will be stored with the experiment.- Specified by:
finishExperimentin interfaceIExperimentDatabaseHandle- Throws:
ExperimentDBInteractionFailedException
-
finishExperiment
public void finishExperiment(ExperimentDBEntry expEntry) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleSignals that an experiment has been finished successfully. A corresponding timestamp will be attached to the experiment entry.- Specified by:
finishExperimentin interfaceIExperimentDatabaseHandle- Throws:
ExperimentDBInteractionFailedException
-
getDatabaseFieldnameForConfigEntry
protected java.lang.String getDatabaseFieldnameForConfigEntry(java.lang.String configKey)
-
deleteExperiment
public void deleteExperiment(ExperimentDBEntry exp) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleDeletes an experiment from the database- Specified by:
deleteExperimentin interfaceIExperimentDatabaseHandle- Throws:
ExperimentDBInteractionFailedException
-
deleteDatabase
public void deleteDatabase() throws ExperimentDBInteractionFailedExceptionDescription copied from interface:IExperimentDatabaseHandleDeletes everything known to the experiment database. Note that database is understood as an abstract term. In a true database, this could just be a table.- Specified by:
deleteDatabasein interfaceIExperimentDatabaseHandle- Throws:
ExperimentDBInteractionFailedException
-
startExperiment
public void startExperiment(ExperimentDBEntry exp) throws ExperimentUpdateFailedException, ExperimentAlreadyStartedException
Description copied from interface:IExperimentDatabaseHandleUpdates non-keyfield values of the experiment.- Specified by:
startExperimentin interfaceIExperimentDatabaseHandle- Parameters:
exp- The experiment that is started on the current machine- Throws:
ExperimentUpdateFailedExceptionExperimentAlreadyStartedException
-
getLoggerName
public java.lang.String getLoggerName()
- Specified by:
getLoggerNamein interfaceorg.api4.java.common.control.ILoggingCustomizable
-
setLoggerName
public void setLoggerName(java.lang.String name)
- Specified by:
setLoggerNamein interfaceorg.api4.java.common.control.ILoggingCustomizable
-
getExperimentWithId
public ExperimentDBEntry getExperimentWithId(int id) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandleGets the experiment with the given id.- Specified by:
getExperimentWithIdin interfaceIExperimentDatabaseHandle- Returns:
- Throws:
ExperimentDBInteractionFailedException
-
-