public void delete(Integer experimentId) { Experiment experiment = getExperiment(experimentId); clearSharedList(experiment); removeExperimentFromCopiedTo(experiment); for (Experimentable e : experiment.getExperimentables()) { log.info("Deleting experimentable: " + e.getId()); if (e instanceof DataSet) { DataSet dataSet = (DataSet) e; dataSetService.delete(dataSet); } if (e instanceof ModelOutput) { ModelOutput mo = (ModelOutput) e; modelOutputService.deleteModelOutput(mo); } if (e instanceof Model) { Model model = (Model) e; modelService.delete(model); } } experiment = getExperiment(experimentId); for (Experimentable e : experiment.getExperimentables()) { log.info("NOT DELETED: " + e.getId()); } remove(experiment); }
public void removeCurrentExperimentFromExperimentables(Experiment experiment) { String queryString = "from Experimentable where experiment.id=:experimentId"; Query query = dao.getEntityManager().createQuery(queryString); query.setParameter("experimentId", experiment.getId()); List<Experimentable> experimentables = query.getResultList(); for (Experimentable e : experimentables) { e.setExperiment(null); dao.getEntityManager().merge(e); } }
public void removeExperimentFromCopiedTo(Experiment experiment) { for (Experimentable experimentable : experiment.getExperimentable()) { List<Experiment> newCopiedToList = new ArrayList<Experiment>(); for (Experiment experimentCopiedTo : experimentable.getCopiedTo()) { if (experiment.getId() != experimentCopiedTo.getId()) { newCopiedToList.add(experiment); } } experimentable.setCopiedTo(newCopiedToList); dao.update(experimentable); dao.getEntityManager().flush(); } experiment.setExperimentable(new ArrayList<Experimentable>()); dao.update(experiment); dao.getEntityManager().flush(); }