use of uk.ac.bbsrc.tgac.miso.dto.run.RunDto in project miso-lims by miso-lims.
the class Dtos method asDto.
public static InstrumentStatusDto asDto(@Nonnull InstrumentStatus from) {
InstrumentStatusDto to = new InstrumentStatusDto();
InstrumentDto instrumentDto = new InstrumentDto();
instrumentDto.setId(from.getId());
instrumentDto.setName(from.getName());
to.setInstrument(instrumentDto);
List<InstrumentPositionStatusDto> posDtos = new ArrayList<>();
for (InstrumentStatusPosition pos : from.getPositions()) {
InstrumentPositionStatusDto posDto = new InstrumentPositionStatusDto();
posDto.setPosition(pos.getAlias());
if (pos.getOutOfServiceTime() != null) {
posDto.setOutOfService(true);
setDateTimeString(posDto::setOutOfServiceTime, pos.getOutOfServiceTime());
}
if (pos.getRun() != null) {
RunDto runDto = new RunDto();
InstrumentStatusPositionRun run = pos.getRun();
runDto.setId(run.getRunId());
runDto.setName(run.getName());
runDto.setAlias(run.getAlias());
runDto.setStatus(run.getHealth().getKey());
setDateString(runDto::setStartDate, run.getStartDate());
setDateString(runDto::setEndDate, run.getCompletionDate());
setDateTimeString(runDto::setLastModified, run.getLastModified());
posDto.setRun(runDto);
List<PoolDto> poolDtos = new ArrayList<>();
for (InstrumentStatusPositionRunPool pool : run.getPools()) {
PoolDto poolDto = new PoolDto();
poolDto.setId(pool.getPoolId());
poolDto.setName(pool.getName());
poolDto.setAlias(pool.getAlias());
poolDtos.add(poolDto);
}
posDto.setPools(poolDtos);
}
posDtos.add(posDto);
}
to.setPositions(posDtos);
return to;
}
use of uk.ac.bbsrc.tgac.miso.dto.run.RunDto in project miso-lims by miso-lims.
the class Dtos method to.
public static Run to(@Nonnull RunDto dto) {
Run to = getPlatformRun(dto);
setLong(to::setId, dto.getId(), false);
setString(to::setName, dto.getName());
setString(to::setAlias, dto.getAlias());
setString(to::setDescription, dto.getDescription());
setObject(to::setHealth, dto.getStatus(), status -> HealthType.get(status));
setString(to::setAccession, dto.getAccession());
setObject(to::setSequencer, InstrumentImpl::new, dto.getInstrumentId());
setDate(to::setStartDate, dto.getStartDate());
setDate(to::setCompletionDate, dto.getEndDate());
setObject(to::setSequencingParameters, SequencingParameters::new, dto.getSequencingParametersId());
setObject(to::setSequencingKit, KitDescriptor::new, dto.getSequencingKitId());
setString(to::setSequencingKitLot, dto.getSequencingKitLot());
setString(to::setFilePath, dto.getRunPath());
setBoolean(to::setQcPassed, dto.getQcPassed(), true);
setBoolean(to::setDataReview, dto.getDataReview(), true);
setObject(to::setSop, Sop::new, dto.getSopId());
setObject(to::setDataManglingPolicy, dto.getDataManglingPolicy(), InstrumentDataManglingPolicy::valueOf);
return to;
}
use of uk.ac.bbsrc.tgac.miso.dto.run.RunDto in project miso-lims by miso-lims.
the class EditSampleController method setupForm.
@GetMapping(value = "/{sampleId}")
public ModelAndView setupForm(@PathVariable Long sampleId, ModelMap model) throws IOException {
Sample sample = sampleService.get(sampleId);
if (sample == null)
throw new NotFoundException("No sample found for ID " + sampleId.toString());
model.put("title", "Sample " + sampleId);
model.put("previousSample", sampleService.getPreviousInProject(sample));
model.put("nextSample", sampleService.getNextInProject(sample));
model.put("sampleCategory", LimsUtils.isDetailedSample(sample) ? ((DetailedSample) sample).getSampleClass().getSampleCategory() : "plain");
List<LibraryDto> libraries = sample.isSaved() ? libraryService.listBySampleId(sample.getId()).stream().map(lib -> Dtos.asDto(lib, false)).collect(Collectors.toList()) : Collections.emptyList();
model.put("sampleLibraries", libraries);
Set<Pool> pools = libraries.stream().flatMap(WhineyFunction.flatRethrow(library -> poolService.listByLibraryId(library.getId()))).distinct().collect(Collectors.toSet());
List<RunDto> runDtos = pools.stream().flatMap(WhineyFunction.flatRethrow(pool -> runService.listByPoolId(pool.getId()))).map(Dtos::asDto).collect(Collectors.toList());
model.put("samplePools", pools.stream().map(p -> Dtos.asDto(p, false, false, indexChecker)).collect(Collectors.toList()));
model.put("sampleRuns", runDtos);
model.put("sampleRelations", getRelations(sample));
addArrayData(sampleId, model);
model.put("sampleTransfers", sample.getTransferViews().stream().map(Dtos::asDto).collect(Collectors.toList()));
model.put("sample", sample);
SampleDto sampleDto = Dtos.asDto(sample, false, libraries.size());
setRelatedSlideDtos(sample, sampleDto);
model.put("sampleDto", !sample.isSaved() ? "null" : mapper.writeValueAsString(sampleDto));
ObjectNode formConfig = mapper.createObjectNode();
formConfig.put("detailedSample", isDetailedSampleEnabled());
MisoWebUtils.addJsonArray(mapper, formConfig, "projects", projectService.list(), Dtos::asDto);
MisoWebUtils.addJsonArray(mapper, formConfig, Config.SOPS, sopService.listByCategory(SopCategory.SAMPLE), Dtos::asDto);
model.put("formConfig", mapper.writeValueAsString(formConfig));
return new ModelAndView("/WEB-INF/pages/editSample.jsp", model);
}
use of uk.ac.bbsrc.tgac.miso.dto.run.RunDto in project miso-lims by miso-lims.
the class Dtos method asDto.
private static RunDto asDto(@Nonnull Run from, boolean includeContainers, boolean includeContainerPartitions, boolean includePoolContents) {
RunDto dto = getPlatformRunDto(from);
setLong(dto::setId, from.getId(), true);
setString(dto::setName, from.getName());
setString(dto::setAlias, from.getAlias());
setString(dto::setDescription, from.getDescription());
if (from.getHealth() != null) {
dto.setStatus(from.getHealth().getKey());
}
dto.setLastModified(formatDateTime(from.getLastModified()));
setString(dto::setAccession, from.getAccession());
if (from.getSequencer() != null) {
dto.setPlatformType(from.getSequencer().getInstrumentModel().getPlatformType().getKey());
dto.setInstrumentId(from.getSequencer().getId());
dto.setInstrumentName(from.getSequencer().getName());
if (from.getSequencer().getInstrumentModel() != null) {
dto.setInstrumentModelId(from.getSequencer().getInstrumentModel().getId());
dto.setInstrumentModelAlias(from.getSequencer().getInstrumentModel().getAlias());
}
}
if (from.getStartDate() != null) {
dto.setStartDate(formatDate(from.getStartDate()));
}
if (from.getCompletionDate() != null) {
dto.setEndDate(formatDate(from.getCompletionDate()));
}
if (from.getSequencingParameters() != null) {
dto.setSequencingParametersId(from.getSequencingParameters().getId());
dto.setSequencingParametersName(from.getSequencingParameters().getName());
}
setId(dto::setSequencingKitId, from.getSequencingKit());
setString(dto::setSequencingKitLot, from.getSequencingKitLot());
dto.setProgress(from.getProgress());
dto.setRunPath(from.getFilePath());
if (includeContainers) {
dto.setContainers(asContainerDtos(from.getSequencerPartitionContainers(), includeContainerPartitions, includePoolContents));
}
setBoolean(dto::setQcPassed, from.getQcPassed(), true);
setString(dto::setQcUserName, maybeGetProperty(from.getQcUser(), User::getFullName));
setDateString(dto::setQcDate, from.getQcDate());
setBoolean(dto::setDataReview, from.getDataReview(), true);
setString(dto::setDataReviewer, maybeGetProperty(from.getDataReviewer(), User::getFullName));
setDateString(dto::setDataReviewDate, from.getDataReviewDate());
setId(dto::setSopId, from.getSop());
setString(dto::setDataManglingPolicy, maybeGetProperty(from.getDataManglingPolicy(), InstrumentDataManglingPolicy::name));
dto.setProjectsLabel(from.getProjectsLabel());
return dto;
}
use of uk.ac.bbsrc.tgac.miso.dto.run.RunDto in project miso-lims by miso-lims.
the class RunRestController method getPotentialExperiments.
@GetMapping("/{runId}/potentialExperiments")
@ResponseBody
public List<StudiesForExperiment> getPotentialExperiments(@PathVariable long runId) throws IOException {
Run run = getRun(runId);
RunDto runDto = Dtos.asDto(run);
InstrumentModelDto instrumentModelDto = Dtos.asDto(run.getSequencer().getInstrumentModel());
Map<Library, List<Partition>> libraryGroups = getLibraryGroups(run);
return libraryGroups.entrySet().stream().map(group -> new Pair<>(group.getKey(), group.getValue().stream().map(partition -> Dtos.asDto(partition, indexChecker)).map(partitionDto -> new RunPartitionDto(runDto, partitionDto)).collect(Collectors.toList()))).map(group -> {
StudiesForExperiment result = new StudiesForExperiment();
result.experiment = new ExperimentDto();
result.experiment.setLibrary(Dtos.asDto(group.getKey(), false));
result.experiment.setInstrumentModel(instrumentModelDto);
result.experiment.setPartitions(group.getValue());
result.studies = group.getKey().getSample().getProject().getStudies().stream().map(Dtos::asDto).collect(Collectors.toList());
return result;
}).collect(Collectors.toList());
}
Aggregations