public static State toExperimentState(String state) { for (State experimentState : State.values()) { if (experimentState.name().equalsIgnoreCase(state)) { return experimentState; } } return null; }
/** * {@inheritDoc} */ @Override public List<Experiment> getExperiments(Application.Name appName) { LOGGER.debug("Getting experiments for application {}", appName); try { Result<com.intuit.wasabi.repository.cassandra.pojo.Experiment> experimentPojos = experimentAccessor.getExperimentByAppName(appName.toString()); List<Experiment> experiments = experimentPojos.all().stream().filter(experiment -> (experiment.getState() != null) && (!experiment.getState().equals(Experiment.State.TERMINATED.name())) && (!experiment.getState().equals(Experiment.State.DELETED.name()))) .map(experimentPojo -> ExperimentHelper.makeExperiment(experimentPojo)) .collect(Collectors.toList()); return experiments; } catch (Exception e) { LOGGER.error("Error while getting experiments for app {}", appName, e); throw new RepositoryException("Could not retrieve experiments for app " + appName, e); } }
/** * {@inheritDoc} */ protected Experiment internalGetExperiment(Experiment.ID experimentID) { LOGGER.debug("Getting experiment {}", experimentID); Preconditions.checkNotNull(experimentID, "Parameter \"experimentID\" cannot be null"); try { com.intuit.wasabi.repository.cassandra.pojo.Experiment experimentPojo = experimentAccessor .getExperimentById(experimentID.getRawID()).one(); LOGGER.debug("Experiment retrieved {}", experimentPojo); if (experimentPojo == null) return null; if (State.DELETED.name().equals(experimentPojo.getState())) return null; return ExperimentHelper.makeExperiment(experimentPojo); } catch (Exception e) { LOGGER.error("Exception while getting experiment {}", experimentID); throw new RepositoryException("Could not retrieve experiment with ID \"" + experimentID + "\"", e); } }
newExperiment.getStartTime(), newExperiment.getEndTime(), DRAFT.name(), newExperiment.getLabel().toString(), newExperiment.getApplicationName().toString(), newExperiment.getStartTime(), newExperiment.getEndTime(), DRAFT.name(), newExperiment.getApplicationName().toString(), newExperiment.getLabel().toString()));
experiment.getStartTime(), experiment.getEndTime(), experiment.getState().name(), experiment.getLabel().toString(), experiment.getApplicationName().toString(),
/** * {@inheritDoc} */ @Override public Experiment updateExperimentState(Experiment experiment, State state) { LOGGER.debug("Updating experiment {} state {} ", new Object[]{experiment, state}); validator.validateExperiment(experiment); try { // Note that this timestamp gets serialized as mulliseconds from // the epoch, so timezone is irrelevant final Date NOW = new Date(); experimentAccessor.updateExperiment(state.name(), NOW, experiment.getID().getRawID()); experiment = Experiment.from(experiment).withState(state).build(); // Point the experiment index to this experiment updateExperimentLabelIndex(experiment.getID(), experiment.getApplicationName(), experiment.getLabel(), experiment.getStartTime(), experiment.getEndTime(), experiment.getState()); updateStateIndex(experiment); } catch (Exception e) { LOGGER.error("Error while updating experiment {} state {} ", new Object[]{experiment, state}, e); throw new RepositoryException("Could not update experiment with ID \"" + experiment.getID() + "\"" + " to state " + state.toString(), e); } return experiment; }
protected void updateExperimentLabelIndex(Experiment.ID experimentID, Application.Name appName, Experiment.Label experimentLabel, Date startTime, Date endTime, Experiment.State state) { LOGGER.debug("update experiment label index experiment id {} app {} label {} " + " start time {} end time {} state {} ", new Object[]{experimentID, appName, experimentLabel, startTime, endTime, state}); if (state == Experiment.State.TERMINATED || state == Experiment.State.DELETED) { removeExperimentLabelIndex(appName, experimentLabel); return; } try { // Note that this timestamp gets serialized as mulliseconds from // the epoch, so timezone is irrelevant final Date NOW = new Date(); experimentLabelIndexAccessor.insertOrUpdateBy(experimentID.getRawID(), NOW, startTime, endTime, state.name(), appName.toString(), experimentLabel.toString()); } catch (Exception e) { LOGGER.debug("Error while updating experiment label index experiment id {} app {} label {} " + " start time {} end time {} state {} ", new Object[]{experimentID, appName, experimentLabel, startTime, endTime, state}, e); throw new RepositoryException("Could not index experiment \"" + experimentID + "\"", e); } }
public static State toExperimentState(String state) { for (State experimentState : State.values()) { if (experimentState.name().equalsIgnoreCase(state)) { return experimentState; } } return null; }