public static RunPositionDto asDto(@Nonnull RunPosition from) { RunPositionDto dto = new RunPositionDto(); setId(dto::setPositionId, from.getPosition()); setString(dto::setPositionAlias, maybeGetProperty(from.getPosition(), InstrumentPosition::getAlias)); setId(dto::setId, from.getContainer()); setString(dto::setIdentificationBarcode, maybeGetProperty(from.getContainer(), SequencerPartitionContainer::getIdentificationBarcode)); setObject(dto::setContainerModel, from.getContainer().getModel(), Dtos::asDto); setDateTimeString(dto::setLastModified, maybeGetProperty(from.getContainer(), SequencerPartitionContainer::getLastModified)); return dto; }
private void saveContainers(Run run) throws IOException { for (RunPosition runPos : run.getRunPositions()) { runPos.setContainer(containerService.save(runPos.getContainer())); } }
private void applyContainerChanges(Run target, Run source) { Iterator<RunPosition> iterator = target.getRunPositions().iterator(); while (iterator.hasNext()) { RunPosition existingPos = iterator.next(); if (source.getRunPositions().stream().noneMatch(rp -> isSamePosition(rp, existingPos))) { iterator.remove(); } } for (RunPosition sourcePos : source.getRunPositions()) { RunPosition existingPos = target.getRunPositions().stream() .filter(rp -> isSamePosition(rp, sourcePos)) .findFirst().orElse(null); if (existingPos == null) { RunPosition newPos = new RunPosition(); newPos.setRun(target); newPos.setContainer(sourcePos.getContainer()); newPos.setPosition(sourcePos.getPosition()); target.getRunPositions().add(newPos); } else { existingPos.setContainer(sourcePos.getContainer()); } } }
containerService.save(pos.getContainer());