@Override public void erasePageData(Application.Name applicationName, Experiment.ID experimentID) { ExperimentPageList experimentPageList = getExperimentPages(experimentID); for (ExperimentPage experimentPage : experimentPageList.getPages()) { deletePage(applicationName, experimentID, experimentPage.getName()); logger.debug("CassandraPagesRepository Removing page: {} from terminated experiment: {} for application: {}", experimentPage.getName(), experimentID, applicationName); } } }
@Override public ExperimentPageList getExperimentPages(Experiment.ID experimentID) { ExperimentPageList experimentPageList = new ExperimentPageList(); try { Result<PageExperimentByAppNamePage> result = experimentPageAccessor.selectBy(experimentID.getRawID()); Stream<PageExperimentByAppNamePage> resultList = StreamSupport.stream( Spliterators.spliteratorUnknownSize(result.iterator(), Spliterator.ORDERED), false); List<ExperimentPage> experimentPages = resultList .map(t -> ExperimentPage.withAttributes( Page.Name.valueOf(t.getPage()), t.isAssign() ).build() ).collect(Collectors.toList()); experimentPageList.setPages(experimentPages); } catch (ReadTimeoutException | UnavailableException | NoHostAvailableException e) { throw new RepositoryException("Could not retrieve the pages for experiment: \"" + experimentID + "\"", e); } return experimentPageList; }
void saveExperimentPageState(Experiment.ID experimentID, ExperimentPageList oldPageList, ExperimentPageList newPageList) { try { this.experimentAuditLogAccessor.insertBy( experimentID.getRawID(), new Date(), "pages", oldPageList.toString(), newPageList.toString() ); } catch (WriteTimeoutException | UnavailableException | NoHostAvailableException e) { throw new RepositoryException("Could not write pages change to audit log: \"" + experimentID + "\"", e); } }
/** * {@inheritDoc} */ @Override public void postPages(Experiment.ID experimentID, ExperimentPageList experimentPageList, UserInfo user) { Application.Name applicationName = getApplicationNameForModifyingPages(experimentID); pagesRepository.postPages(applicationName, experimentID, experimentPageList); Experiment experiment = experiments.getExperiment(experimentID); if (experiment != null) { List<String> pageNames = new ArrayList<>(); for (ExperimentPage experimentPage : experimentPageList.getPages()) { pageNames.add(experimentPage.getName().toString()); } String pageString = StringUtils.join(pageNames, ", "); eventLog.postEvent(new ExperimentChangeEvent(user, experiment, "pages", null, pageString)); LOGGER.info("event=EXPERIMENT_METADATA_CHANGE, message=PAGES_ADDED, applicationName={}, experimentName={}, configuration=[pages={}]", experiment.getApplicationName(), experiment.getLabel(), pageString); } }
experiment.setExperimentPageList(experimentPageList.getPages()); });
@Override public void postPages(Application.Name applicationName, Experiment.ID experimentID, ExperimentPageList experimentPageList) throws RepositoryException { ExperimentPageList oldPageList = getExperimentPages(experimentID); BatchStatement batch = new BatchStatement(); for (ExperimentPage experimentPage : experimentPageList.getPages()) { batch.add(pageExperimentIndexAccessor.insertBy( applicationName.toString(), experimentPage.getName().toString(), experimentID.getRawID(), experimentPage.getAllowNewAssignment() )); batch.add(experimentPageAccessor.insertBy( experimentPage.getName().toString(), experimentID.getRawID(), experimentPage.getAllowNewAssignment() )); batch.add(appPageIndexAccessor.insertBy( applicationName.toString(), experimentPage.getName().toString() )); } executeBatchStatement(experimentID, batch); ExperimentPageList newPageList = getExperimentPages(experimentID); saveExperimentPageState(experimentID, oldPageList, newPageList); }