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 ExperimentDBEntry
createAndGetExperiment(Experiment experiment)
Creates a new experiment entry and returns it.ExperimentDBEntry
createAndGetExperiment(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.void
deleteDatabase()
Deletes everything known to the experiment database.void
deleteExperiment(ExperimentDBEntry exp)
Deletes an experiment from the databasevoid
finishExperiment(ExperimentDBEntry expEntry)
Signals that an experiment has been finished successfully.void
finishExperiment(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.String
getDatabaseFieldnameForConfigEntry(java.lang.String configKey)
protected java.util.List<ExperimentDBEntry>
getExperimentsForSQLQuery(java.lang.String sql)
ExperimentDBEntry
getExperimentWithId(int id)
Gets the experiment with the given id.java.lang.String
getLoggerName()
int
getNumberOfAllExperiments()
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.String
getSetupCreateTableQuery()
protected java.lang.String
getSQLPrefixForKeySelectQuery()
protected java.lang.String
getSQLPrefixForSelectQuery()
void
setLoggerName(java.lang.String name)
void
setup(IExperimentSetConfig config)
Prepares everything so that upcoming calls for create and update will be managed according to the specified configuration.void
startExperiment(ExperimentDBEntry exp)
Updates non-keyfield values of the experiment.void
updateExperiment(ExperimentDBEntry exp, java.util.Map<java.lang.String,? extends java.lang.Object> values)
Updates non-keyfield values of the experiment.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)
-
-
-
Method Detail
-
getSetupCreateTableQuery
protected java.lang.String getSetupCreateTableQuery()
-
setup
public void setup(IExperimentSetConfig config) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Prepares everything so that upcoming calls for create and update will be managed according to the specified configuration.- Specified by:
setup
in 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:
getConsideredValuesForKey
in interfaceIExperimentDatabaseHandle
- Parameters:
key
- The key attribute- Throws:
ExperimentDBInteractionFailedException
-
getNumberOfAllExperiments
public int getNumberOfAllExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Returns a list of all experiments contained in the database- Specified by:
getNumberOfAllExperiments
in interfaceIExperimentDatabaseHandle
- Throws:
ExperimentDBInteractionFailedException
-
getAllExperiments
public java.util.List<ExperimentDBEntry> getAllExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Returns a list of all experiments contained in the database- Specified by:
getAllExperiments
in interfaceIExperimentDatabaseHandle
- Returns:
- List of all experiments
- Throws:
ExperimentDBInteractionFailedException
-
getOpenExperiments
public java.util.List<ExperimentDBEntry> getOpenExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Returns a list of all experiments contained in the database that have not been started yet.- Specified by:
getOpenExperiments
in 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:IExperimentDatabaseHandle
Returns a list of all experiments contained in the database that have not been started yet.- Specified by:
getRandomOpenExperiments
in 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:IExperimentDatabaseHandle
Returns a list of all experiments that are currently being conducted.- Specified by:
getRunningExperiments
in interfaceIExperimentDatabaseHandle
- Returns:
- List of all experiments conducted so far
- Throws:
ExperimentDBInteractionFailedException
-
getConductedExperiments
public java.util.List<ExperimentDBEntry> getConductedExperiments() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Returns a list of all experiments contained in the database marked as being conducted.- Specified by:
getConductedExperiments
in 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:IExperimentDatabaseHandle
Creates a new experiment entry and returns it.- Specified by:
createAndGetExperiment
in interfaceIExperimentDatabaseHandle
- Returns:
- The id of the created experiment
- Throws:
ExperimentDBInteractionFailedException
ExperimentAlreadyExistsInDatabaseException
-
createAndGetExperiments
public java.util.List<ExperimentDBEntry> createAndGetExperiments(java.util.List<Experiment> experiments) throws ExperimentDBInteractionFailedException, ExperimentAlreadyExistsInDatabaseException
Description copied from interface:IExperimentDatabaseHandle
Creates a new experiment entry and returns it.- Specified by:
createAndGetExperiments
in interfaceIExperimentDatabaseHandle
- Parameters:
experiments
- the experiments to be created- Returns:
- The id of the created experiment
- Throws:
ExperimentDBInteractionFailedException
ExperimentAlreadyExistsInDatabaseException
-
updateExperiment
public void updateExperiment(ExperimentDBEntry exp, java.util.Map<java.lang.String,? extends java.lang.Object> values) throws ExperimentUpdateFailedException
Description copied from interface:IExperimentDatabaseHandle
Updates non-keyfield values of the experiment.- Specified by:
updateExperiment
in 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:
updateExperimentConditionally
in interfaceIExperimentDatabaseHandle
- Throws:
ExperimentUpdateFailedException
-
finishExperiment
public void finishExperiment(ExperimentDBEntry expEntry, java.lang.Throwable error) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Signals that an experiment has failed with an exception. The timestamp and the exception will be stored with the experiment.- Specified by:
finishExperiment
in interfaceIExperimentDatabaseHandle
- Throws:
ExperimentDBInteractionFailedException
-
finishExperiment
public void finishExperiment(ExperimentDBEntry expEntry) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Signals that an experiment has been finished successfully. A corresponding timestamp will be attached to the experiment entry.- Specified by:
finishExperiment
in 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:IExperimentDatabaseHandle
Deletes an experiment from the database- Specified by:
deleteExperiment
in interfaceIExperimentDatabaseHandle
- Throws:
ExperimentDBInteractionFailedException
-
deleteDatabase
public void deleteDatabase() throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Deletes 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:
deleteDatabase
in interfaceIExperimentDatabaseHandle
- Throws:
ExperimentDBInteractionFailedException
-
startExperiment
public void startExperiment(ExperimentDBEntry exp) throws ExperimentUpdateFailedException, ExperimentAlreadyStartedException
Description copied from interface:IExperimentDatabaseHandle
Updates non-keyfield values of the experiment.- Specified by:
startExperiment
in interfaceIExperimentDatabaseHandle
- Parameters:
exp
- The experiment that is started on the current machine- Throws:
ExperimentUpdateFailedException
ExperimentAlreadyStartedException
-
getLoggerName
public java.lang.String getLoggerName()
- Specified by:
getLoggerName
in interfaceorg.api4.java.common.control.ILoggingCustomizable
-
setLoggerName
public void setLoggerName(java.lang.String name)
- Specified by:
setLoggerName
in interfaceorg.api4.java.common.control.ILoggingCustomizable
-
getExperimentWithId
public ExperimentDBEntry getExperimentWithId(int id) throws ExperimentDBInteractionFailedException
Description copied from interface:IExperimentDatabaseHandle
Gets the experiment with the given id.- Specified by:
getExperimentWithId
in interfaceIExperimentDatabaseHandle
- Returns:
- Throws:
ExperimentDBInteractionFailedException
-
-