@Override public boolean isSaved() { return getId() != UNSAVED_ID; }
private void applyChanges(Workset from, Workset to) throws IOException { to.setAlias(from.getAlias()); to.setDescription(from.getDescription()); applyMemberChanges(from, to); }
@Override public void authorizeDeletion(Workset workset) throws IOException { authorizationManager.throwIfNonAdminOrMatchingOwner(workset.getCreator()); }
public static WorksetDto asDto(@Nonnull Workset from) { WorksetDto dto = new WorksetDto(); dto.setId(from.getId()); dto.setAlias(from.getAlias()); dto.setDescription(from.getDescription()); if (!from.getSamples().isEmpty()) { dto.setSampleIds(from.getSamples().stream().map(Identifiable::getId).collect(Collectors.toList())); } if (!from.getLibraries().isEmpty()) { dto.setLibraryIds(from.getLibraries().stream().map(Identifiable::getId).collect(Collectors.toList())); } if (!from.getDilutions().isEmpty()) { dto.setDilutionIds(from.getDilutions().stream().map(Identifiable::getId).collect(Collectors.toList())); } dto.setCreator(from.getCreator().getFullName()); dto.setLastModified(formatDateTime(from.getLastModified())); return dto; }
private void loadMembers(Workset newWorkflow) { newWorkflow.setSamples(loadMembers("Sample", newWorkflow.getSamples(), WhineyFunction.rethrow(id -> sampleService.get(id)))); newWorkflow.setLibraries(loadMembers("Library", newWorkflow.getLibraries(), WhineyFunction.rethrow(id -> libraryService.get(id)))); newWorkflow.setDilutions(loadMembers("Dilution", newWorkflow.getDilutions(), WhineyFunction.rethrow(id -> dilutionService.get(id)))); }
public static Workset to(@Nonnull WorksetDto from) { Workset workset = new Workset(); if (from.getId() != null) { workset.setId(from.getId()); } workset.setAlias(from.getAlias()); workset.setDescription(from.getDescription()); if (from.getSampleIds() != null && !from.getSampleIds().isEmpty()) { workset.setSamples(from.getSampleIds().stream().map(id -> { Sample s = new SampleImpl(); s.setId(id); return s; }).collect(Collectors.toSet())); } if (from.getLibraryIds() != null && !from.getLibraryIds().isEmpty()) { workset.setLibraries(from.getLibraryIds().stream().map(id -> { Library l = new LibraryImpl(); l.setId(id); return l; }).collect(Collectors.toSet())); } if (from.getDilutionIds() != null && !from.getDilutionIds().isEmpty()) { workset.setDilutions(from.getDilutionIds().stream().map(id -> { LibraryDilution d = new LibraryDilution(); d.setId(id); return d; }).collect(Collectors.toSet())); } return workset; }
@Override public long save(Workset workset) throws IOException { if (!workset.isSaved()) { loadMembers(workset); validateChange(workset, null); workset.setChangeDetails(authorizationManager.getCurrentUser()); return worksetStore.save(workset); } else { Workset managed = worksetStore.get(workset.getId()); validateChange(workset, managed); applyChanges(workset, managed); managed.setChangeDetails(authorizationManager.getCurrentUser()); return worksetStore.save(managed); } }
private void applyMemberChanges(Workset changed, Workset managed) { applyMemberChanges(changed.getSamples(), managed.getSamples(), WhineyFunction.rethrow(ids -> sampleService.listByIdList(ids))); applyMemberChanges(changed.getLibraries(), managed.getLibraries(), WhineyFunction.rethrow(ids -> libraryService.listByIdList(ids))); applyMemberChanges(changed.getDilutions(), managed.getDilutions(), WhineyFunction.rethrow(ids -> dilutionService.listByIdList(ids))); }
@Override public String getDeleteDescription() { return getAlias(); }
@Override public void beforeDelete(Library object) throws IOException { List<Workset> worksets = worksetService.listByLibrary(object.getId()); for (Workset workset : worksets) { workset.getLibraries().removeIf(lib -> lib.getId() == object.getId()); worksetService.save(workset); } Box box = object.getBox(); if (box != null) { box.getBoxPositions().remove(object.getBoxPosition()); boxService.save(box); } }
@Override public void beforeDelete(Sample object) throws IOException { List<Workset> worksets = worksetService.listBySample(object.getId()); for (Workset workset : worksets) { workset.getSamples().removeIf(sam -> sam.getId() == object.getId()); worksetService.save(workset); } Box box = object.getBox(); if (box != null) { box.getBoxPositions().remove(object.getBoxPosition()); boxService.save(box); } }
@Override public void beforeDelete(LibraryDilution object) throws IOException { List<Workset> worksets = worksetService.listByDilution(object.getId()); for (Workset workset : worksets) { workset.getDilutions().removeIf(ldi -> ldi.getId() == object.getId()); worksetService.save(workset); } Box box = object.getBox(); if (box != null) { box.getBoxPositions().remove(object.getBoxPosition()); boxService.save(box); } }
private void validateChange(Workset workset, Workset beforeChange) { List<ValidationError> errors = new ArrayList<>(); if ((beforeChange == null || !workset.getAlias().equals(beforeChange.getAlias())) && worksetStore.getByAlias(workset.getAlias()) != null) { errors.add(new ValidationError("alias", "There is already a workset with this alias")); } if (!errors.isEmpty()) { throw new ValidationException(errors); } }