public String getBarcode() { return containerStep == null ? stringStep.getInput() : containerStep.getInput().getIdentificationBarcode(); } }
@Override public String getConfirmMessage() { List<Pool> poolsScanned = partitionSteps.stream().map(PartitionStep::getPool).filter(Objects::nonNull).collect(Collectors.toList()); if (poolsScanned.isEmpty()) { if (containerStep.isExistingContainer()) { return String.format("Remove all pools from %s '%s'?", getContainerName(), containerStep.getContainer().getIdentificationBarcode()); } else { return String.format("Create empty %s '%s'?", getContainerName(), containerStep.getBarcode()); } } else { if (containerStep.isExistingContainer()) { return String.format("Add pools to existing %s '%s'?", getContainerName(), containerStep.getContainer().getIdentificationBarcode()); } else { return String.format("Create %s '%s'?", getContainerName(), containerStep.getBarcode()); } } }
@Override public ValidationResult validateDeletion(SequencerPartitionContainer object) { ValidationResult result = new ValidationResult(); if (object.getRunPositions() != null && !object.getRunPositions().isEmpty()) { result.addError(new ValidationError(String.format("Container %s (%s) is used in %d run(s)", object.getId(), object.getIdentificationBarcode(), object.getRunPositions().size()))); } return result; } }
@Override public boolean equals(Object obj) { if (obj == null) return false; if (obj == this) return true; if (!(obj instanceof SequencerPartitionContainer)) return false; SequencerPartitionContainer them = (SequencerPartitionContainer) obj; // If not saved, then compare resolved actual objects. Otherwise just compare IDs. if (getId() == SequencerPartitionContainerImpl.UNSAVED_ID || them.getId() == SequencerPartitionContainerImpl.UNSAVED_ID) { return getIdentificationBarcode().equals(them.getIdentificationBarcode()); } else { return getId() == them.getId(); } }
@Override protected void makeColumns(Run run, Partition p, PoolableElementView dilution, String userName, String[] output) { output[0] = p.getSequencerPartitionContainer().getIdentificationBarcode(); output[1] = p.getPartitionNumber().toString(); output[2] = String.format("%d_%s_%s", p.getSequencerPartitionContainer().getId(), dilution.getLibraryName(), dilution.getDilutionName()); output[3] = dilution.getSampleAlias().replaceAll("\\s", ""); output[4] = dilution.getIndices().stream()// .sorted(Comparator.comparingInt(Index::getPosition))// .map(i -> { if (run.getSequencer().getInstrumentModel().getDataManglingPolicy() == InstrumentDataManglingPolicy.I5_RC && i.getPosition() == 2) { return reverseComplement(i.getSequence()); } return i.getSequence(); })// .collect(Collectors.joining("-")); output[5] = dilution.getLibraryDescription(); output[6] = "N"; output[7] = "NA"; output[8] = userName; }
public static PartitionDto asDto(@Nonnull Partition from, boolean includePoolContents) { PartitionDto dto = new PartitionDto(); dto.setId(from.getId()); dto.setContainerId(from.getSequencerPartitionContainer().getId()); dto.setContainerName(from.getSequencerPartitionContainer().getIdentificationBarcode()); dto.setPartitionNumber(from.getPartitionNumber()); dto.setPool(from.getPool() == null ? null : asDto(from.getPool(), includePoolContents, false)); setString(dto::setLoadingConcentration, from.getLoadingConcentration()); dto.setLoadingConcentrationUnits(from.getLoadingConcentrationUnits()); return dto; }
@Override public void applyChanges(SequencerPartitionContainer source, SequencerPartitionContainer managed) throws IOException { managed.setIdentificationBarcode(source.getIdentificationBarcode()); managed.setDescription(source.getDescription()); managed.setClusteringKit(source.getClusteringKit()); managed.setMultiplexingKit(source.getMultiplexingKit()); if (LimsUtils.isOxfordNanoporeContainer(managed)) { applyOxfordNanoporeChanges((OxfordNanoporeContainer) source, (OxfordNanoporeContainer) managed); } for (Partition sourcePartition : source.getPartitions()) { for (Partition managedPartition : managed.getPartitions()) { if (sourcePartition == null || managedPartition == null) { throw new IOException("Partition from " + (sourcePartition == null ? "client" : "database") + " is null."); } if (sourcePartition.getId() == managedPartition.getId()) { Pool sourcePool = sourcePartition.getPool(); Pool managedPool = managedPartition.getPool(); if (sourcePool == null) { managedPartition.setPool(null); } else if (managedPool == null || sourcePool.getId() != managedPool.getId()) { managedPartition.setPool(poolService.get(sourcePool.getId())); } break; } } } }
public static ContainerDto asDto(@Nonnull SequencerPartitionContainer from, boolean includePartitions, boolean includePoolContents) { ContainerDto dto = new ContainerDto(); dto.setId(from.getId()); dto.setIdentificationBarcode(from.getIdentificationBarcode()); dto.setModel(asDto(from.getModel())); Run lastRun = from.getLastRun(); if (lastRun != null) { dto.setLastRunAlias(lastRun.getAlias()); dto.setLastRunId(lastRun.getId()); dto.setLastSequencerId(lastRun.getSequencer().getId()); dto.setLastSequencerName(lastRun.getSequencer().getName()); } if (from.getLastModified() != null) { dto.setLastModified(formatDateTime(from.getLastModified())); } if (from.getClusteringKit() != null) { dto.setClusteringKit(asDto(from.getClusteringKit())); } if (from.getMultiplexingKit() != null) { dto.setMultiplexingKit(asDto(from.getMultiplexingKit())); } if (includePartitions) { dto.setPartitions(asPartitionDtos(from.getPartitions(), includePoolContents)); } return dto; }