/** * {@inheritDoc} */ @Override public void deleteExperiment(NewExperiment newExperiment) { LOGGER.debug("Deleting experiment {}", newExperiment); try { experimentAccessor.deleteExperiment(newExperiment.getID().getRawID()); } catch (Exception e) { LOGGER.debug("Error while deleting experiment {}", newExperiment, e); throw new RepositoryException("Could not delete experiment " + "with id \"" + newExperiment.getId() + "\"", e); } }
/** * {@inheritDoc} */ // TODO - Why is this method is on the interface - if the client does not call it, the indices will be inconsistent ? @Override public void createIndicesForNewExperiment(NewExperiment newExperiment) { // Point the experiment index to this experiment LOGGER.debug("Create indices for new experiment Experiment {}", newExperiment); updateExperimentLabelIndex(newExperiment.getID(), newExperiment.getApplicationName(), newExperiment.getLabel(), newExperiment.getStartTime(), newExperiment.getEndTime(), State.DRAFT); try { updateStateIndex(newExperiment.getID(), ExperimentState.NOT_DELETED); } catch (Exception e) { LOGGER.error("Create indices for new experiment Experiment {} failed", newExperiment, e); // remove the created ExperimentLabelIndex removeExperimentLabelIndex(newExperiment.getApplicationName(), newExperiment.getLabel()); throw new RepositoryException("Could not update indices for experiment \"" + newExperiment + "\"", e); } }
Experiment experiment = experiments.getExperiment(newExperiment.getID());
batchStmt.add(updateStateIndexStatement(newExperiment.getID(), ExperimentState.NOT_DELETED));