@Override public long save(final Pool pool) throws IOException { currentSession().flush(); Long id; if (pool.getId() == PoolImpl.UNSAVED_ID) { id = (Long) currentSession().save(pool); currentSession().flush(); } else { if (pool.isDiscarded()) { getBoxStore().removeBoxableFromBox(pool); pool.setVolume(0D); } id = pool.getId(); currentSession().update(pool); currentSession().flush(); ChangeLogEntry log; while ((log = changeLogQueue.poll()) != null) { pool.createChangeLog(log.summary, "contents", log.pool.getLastModifier()); } } return id; }
@Override public int compareTo(Pool t) { if (getId() != 0L && t.getId() != 0L) { if (getId() < t.getId()) return -1; if (getId() > t.getId()) return 1; } else if (getName() != null && t.getName() != null) { return getName().compareTo(t.getName()); } else if (getAlias() != null && t.getAlias() != null) { return getAlias().compareTo(t.getAlias()); } return 0; }
@Override public boolean equals(Object obj) { if (obj == null) return false; if (obj == this) return true; if (!(obj instanceof Pool)) return false; Pool other = (Pool) obj; return new EqualsBuilder().appendSuper(super.equals(obj)).append(description, other.getDescription()) .append(poolDilutions, other.getPoolDilutions()) .append(concentration, other.getConcentration()) .append(identificationBarcode, other.getIdentificationBarcode()) .append(qcPassed, other.getQcPassed()) .isEquals(); }
@Override public void updateField(Pool pool, double value, String units) { pool.setVolume(value); VolumeUnit volUnit = VolumeUnit.getFromString(units); if (volUnit != null) { pool.setVolumeUnits(volUnit); } }
private void validateChange(Pool pool, Pool beforeChange) throws IOException { List<ValidationError> errors = new ArrayList<>(); validateConcentrationUnits(pool.getConcentration(), pool.getConcentrationUnits(), errors); validateVolumeUnits(pool.getVolume(), pool.getVolumeUnits(), errors); validateBarcodeUniqueness(pool, beforeChange, poolStore::getByBarcode, errors, "pool"); if (!errors.isEmpty()) { throw new ValidationException(errors); } }
@Override public long save(Pool pool) throws IOException { if (pool.isDiscarded()) { pool.setVolume(0.0); if (pool.getConcentration() == null) { pool.setConcentrationUnits(null); if (pool.getVolume() == null) { pool.setVolumeUnits(null); if (!pool.isSaved()) { pool.setName(generateTemporaryName()); loadSecurityProfile(pool); loadPoolDilutions(pool.getPoolDilutions(), pool); pool.setChangeDetails(authorizationManager.getCurrentUser()); boxService.throwIfBoxPositionIsFilled(pool); validateChange(pool, null); pool.setName(namingScheme.generateNameFor(pool)); validateNameOrThrow(pool, namingScheme); } catch (MisoNamingException e) { Pool managed = poolStore.get(pool.getId()); authorizationManager.throwIfNotWritable(managed); boxService.throwIfBoxPositionIsFilled(pool); validateChange(pool, managed); managed.setAlias(pool.getAlias()); managed.setConcentration(pool.getConcentration()); managed.setConcentrationUnits(pool.getConcentrationUnits());
public static PoolDto asDto(@Nonnull Pool from, boolean includeContents, boolean includeBoxPositions) { PoolDto dto = new PoolDto(); dto.setId(from.getId()); dto.setName(from.getName()); dto.setAlias(from.getAlias()); dto.setDescription(from.getDescription()); dto.setConcentration(from.getConcentration() == null ? null : from.getConcentration().toString()); dto.setConcentrationUnits(from.getConcentrationUnits()); dto.setQcPassed(from.getQcPassed()); dto.setCreationDate(formatDate(from.getCreationDate())); if (from.getVolume() != null) { dto.setVolume(from.getVolume().toString()); dto.setVolumeUnits(from.getVolumeUnits()); if (from.getPlatformType() != null) { dto.setPlatformType(from.getPlatformType().name()); dto.setLongestIndex(from.getLongestIndex()); dto.setLastModified(formatDateTime(from.getLastModified())); dto.setDilutionCount(from.getPoolDilutions().size()); from.getPoolDilutions().stream()// if (includeContents) { Set<DilutionDto> pooledElements = new HashSet<>(); for (PoolDilution pd : from.getPoolDilutions()) { DilutionDto ldi = asDto(pd.getPoolableElementView()); ldi.setProportion(pd.getProportion()); dto.setDuplicateIndicesSequences(from.getDuplicateIndicesSequences()); dto.setDuplicateIndices(!dto.getDuplicateIndicesSequences().isEmpty());
@Override public Long getId() { return pool.getId(); }
@Override public void beforeDelete(Pool object) throws IOException { Set<PoolOrder> orders = poolOrderService.getByPool(object.getId()); poolOrderService.bulkDelete(orders); Box box = object.getBox(); if (box != null) { box.getBoxPositions().remove(object.getBoxPosition()); boxService.save(box); } }
@Override public String getLogMessage() { if (poolStep == null) { return String.format("Selected NO POOL for %s %d", platformType.getPartitionName(), partitionIndex + 1); } Pool pool = poolStep.getInput(); return String.format("Selected Pool %s (%s) for %s %d", pool.getAlias(), pool.getName(), platformType.getPartitionName(), partitionIndex + 1); }
private void loadPoolDilutions(Pool source, Pool target) throws IOException { loadPoolDilutions(source.getPoolDilutions(), target); }
@Override public void deleteNote(Pool pool, Long noteId) throws IOException { if (noteId == null || noteId.equals(Note.UNSAVED_ID)) { throw new IllegalArgumentException("Cannot delete an unsaved Note"); } Pool managed = poolStore.get(pool.getId()); Note deleteNote = null; for (Note note : managed.getNotes()) { if (note.getNoteId().equals(noteId)) { deleteNote = note; break; } } if (deleteNote == null) { throw new IOException("Note " + noteId + " not found for Pool " + pool.getId()); } authorizationManager.throwIfNonAdminOrMatchingOwner(deleteNote.getOwner()); managed.getNotes().remove(deleteNote); poolStore.save(managed); }
@Override public void beforeDelete(PoolOrder object) throws IOException { Pool pool = poolService.get(object.getPool().getId()); pool.setLastModifier(authorizationManager.getCurrentUser()); poolService.save(pool); }
@Override public void addNote(Pool pool, Note note) throws IOException { Pool managed = poolStore.get(pool.getId()); authorizationManager.throwIfNotWritable(managed); note.setCreationDate(new Date()); note.setOwner(authorizationManager.getCurrentUser()); managed.addNote(note); poolStore.save(managed); }
@Override public ValidationResult validateDeletion(Pool object) { ValidationResult result = new ValidationResult(); long usage = poolStore.getPartitionCount(object); if (usage > 0L) { result.addError(new ValidationError("Pool '" + object.getName() + "' has been added to " + usage + " partitions")); } return result; }
private Stream<String> createRowsForPartition(Run run, User user, List<String> columns, Partition partition) { return partition.getPool().getPoolDilutions().stream()// .map(PoolDilution::getPoolableElementView) .map(dilution -> { final String[] output = new String[columns.size()]; makeColumns(run, partition, dilution, user.getLoginName(), output); return String.join(",", output); }); }
@Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append(getId()); sb.append(" : "); sb.append(getPartitionNumber()); if (getPool() != null) { sb.append(" : "); sb.append(getPool().getId()); } return sb.toString(); }
@Override protected Stream<Pair<PoolableElementView, Partition>> items() { return submission.getExperiments().stream().flatMap(experiment -> experiment.getRunPartitions().stream()).flatMap( rp -> rp.getPartition().getPool().getPoolDilutions().stream() .map(pd -> new Pair<>(pd.getPoolableElementView(), rp.getPartition()))); }