Search in sources :

Example 21 with Dtos

use of uk.ac.bbsrc.tgac.miso.dto.Dtos in project miso-lims by miso-lims.

the class EditInstrumentController method viewInstrument.

@GetMapping("/{instrumentId}")
public ModelAndView viewInstrument(@PathVariable(value = "instrumentId") Long instrumentId, ModelMap model) throws IOException {
    Instrument instrument = instrumentService.get(instrumentId);
    if (instrument == null) {
        throw new NotFoundException("No instrument found for ID " + instrumentId.toString());
    }
    model.put("title", "Instrument " + instrument.getId());
    Collection<ServiceRecord> serviceRecords = serviceRecordService.listByInstrument(instrumentId);
    model.put("serviceRecords", serviceRecords.stream().map(Dtos::asDto).collect(Collectors.toList()));
    return setupForm(instrument, model);
}
Also used : Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) NotFoundException(org.springframework.security.acls.model.NotFoundException) ServiceRecord(uk.ac.bbsrc.tgac.miso.core.data.ServiceRecord) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 22 with Dtos

use of uk.ac.bbsrc.tgac.miso.dto.Dtos in project miso-lims by miso-lims.

the class EditLibraryAliquotController method edit.

@GetMapping("/{aliquotId}")
public ModelAndView edit(ModelMap model, @PathVariable long aliquotId) throws IOException {
    LibraryAliquot aliquot = libraryAliquotService.get(aliquotId);
    if (aliquot == null) {
        throw new NotFoundException("Library aliquot not found");
    }
    model.put("title", "Library Aliquot " + aliquot.getId());
    ObjectMapper mapper = new ObjectMapper();
    model.put("aliquot", aliquot);
    model.put("aliquotDto", mapper.writeValueAsString(Dtos.asDto(aliquot, false)));
    List<Pool> pools = poolService.listByLibraryAliquotId(aliquotId);
    model.put("aliquotPools", pools.stream().map(p -> Dtos.asDto(p, false, false, indexChecker)).collect(Collectors.toList()));
    model.put("aliquotRuns", pools.stream().flatMap(WhineyFunction.flatRethrow(p -> runService.listByPoolId(p.getId()))).map(Dtos::asDto).collect(Collectors.toList()));
    model.put("aliquotTransfers", aliquot.getTransferViews().stream().map(Dtos::asDto).collect(Collectors.toList()));
    return new ModelAndView("/WEB-INF/pages/editLibraryAliquot.jsp", model);
}
Also used : Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ModelAndView(org.springframework.web.servlet.ModelAndView) NotFoundException(org.springframework.security.acls.model.NotFoundException) DetailedLibraryAliquot(uk.ac.bbsrc.tgac.miso.core.data.impl.DetailedLibraryAliquot) LibraryAliquot(uk.ac.bbsrc.tgac.miso.core.data.impl.LibraryAliquot) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 23 with Dtos

use of uk.ac.bbsrc.tgac.miso.dto.Dtos in project miso-lims by miso-lims.

the class EditLibraryController method setupForm.

@GetMapping(value = "/{libraryId}")
public ModelAndView setupForm(@PathVariable Long libraryId, ModelMap model) throws IOException {
    Library library = libraryService.get(libraryId);
    if (library == null)
        throw new NotFoundException("No library found for ID " + libraryId.toString());
    model.put("title", "Library " + library.getId());
    model.put("library", library);
    addAdjacentLibraries(library, model);
    Collection<Pool> pools = poolService.listByLibraryId(library.getId());
    model.put("libraryPools", pools.stream().map(p -> Dtos.asDto(p, false, false, indexChecker)).collect(Collectors.toList()));
    model.put("libraryRuns", pools.stream().flatMap(WhineyFunction.flatRethrow(p -> runService.listByPoolId(p.getId()))).map(Dtos::asDto).collect(Collectors.toList()));
    model.put("libraryAliquots", library.getLibraryAliquots().stream().map(ldi -> Dtos.asDto(ldi, false)).collect(Collectors.toList()));
    ObjectMapper mapper = new ObjectMapper();
    ObjectNode config = mapper.createObjectNode();
    config.putPOJO("library", Dtos.asDto(library, false));
    model.put("libraryAliquotsConfig", mapper.writeValueAsString(config));
    model.put("experiments", experimentService.listAllByLibraryId(library.getId()).stream().map(exp -> Dtos.asDto(exp)).collect(Collectors.toList()));
    model.put("libraryDto", mapper.writeValueAsString(Dtos.asDto(library, false)));
    if (LimsUtils.isDetailedLibrary(library)) {
        DetailedLibrary detailed = (DetailedLibrary) library;
        SampleIdentity identity = getParent(SampleIdentity.class, (DetailedSample) detailed.getSample());
        model.put("effectiveExternalNames", identity.getExternalName());
    }
    model.put("libraryTransfers", library.getTransferViews().stream().map(Dtos::asDto).collect(Collectors.toList()));
    ObjectNode formConfig = mapper.createObjectNode();
    formConfig.put("detailedSample", isDetailedSampleEnabled());
    addJsonArray(mapper, formConfig, "workstations", workstationService.list(), Dtos::asDto);
    addJsonArray(mapper, formConfig, "thermalCyclers", instrumentService.listByType(InstrumentType.THERMAL_CYCLER), Dtos::asDto);
    addJsonArray(mapper, formConfig, "sops", sopService.listByCategory(SopCategory.LIBRARY), Dtos::asDto);
    model.put("formConfig", mapper.writeValueAsString(formConfig));
    return new ModelAndView("/WEB-INF/pages/editLibrary.jsp", model);
}
Also used : Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) SampleIdentity(uk.ac.bbsrc.tgac.miso.core.data.SampleIdentity) ModelAndView(org.springframework.web.servlet.ModelAndView) NotFoundException(org.springframework.security.acls.model.NotFoundException) Pool(uk.ac.bbsrc.tgac.miso.core.data.Pool) Library(uk.ac.bbsrc.tgac.miso.core.data.Library) DetailedLibrary(uk.ac.bbsrc.tgac.miso.core.data.DetailedLibrary) DetailedLibrary(uk.ac.bbsrc.tgac.miso.core.data.DetailedLibrary) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 24 with Dtos

use of uk.ac.bbsrc.tgac.miso.dto.Dtos in project miso-lims by miso-lims.

the class EditRunController method setupForm.

public ModelAndView setupForm(Run run, ModelMap model) throws IOException {
    if (run.getId() == Run.UNSAVED_ID) {
        model.put("title", "New Run");
        model.put("multiplexed", false);
        model.put("metrics", "[]");
        model.put("partitionNames", "[]");
    } else {
        model.put("title", "Run " + run.getId());
        model.put("metrics", getSources().filter(Objects::nonNull).map(source -> source.fetchMetrics(run)).filter(metrics -> !isStringBlankOrNull(metrics)).collect(new JsonArrayCollector()));
        if (run.getSequencerPartitionContainers().size() == 1) {
            ObjectMapper mapper = new ObjectMapper();
            model.put("partitionNames", mapper.writeValueAsString(run.getSequencerPartitionContainers().get(0).getPartitions().stream().sorted(Comparator.comparing(Partition::getPartitionNumber)).map(partition -> partition.getPool() == null ? "N/A" : partition.getPool().getAlias()).collect(Collectors.toList())));
        } else {
            model.put("partitionNames", "[]");
        }
        model.put("runReportLinks", externalUriBuilder.getUris(run));
    }
    model.put("runPositions", run.getRunPositions().stream().map(Dtos::asDto).collect(Collectors.toList()));
    model.put("runPartitions", run.getSequencerPartitionContainers().stream().flatMap(container -> container.getPartitions().stream()).map(WhineyFunction.rethrow(partition -> {
        PartitionDto dto = Dtos.asDto(partition, false, indexChecker);
        RunPartition runPartition = runPartitionService.get(run, partition);
        if (runPartition != null) {
            if (runPartition.getQcType() != null) {
                dto.setQcType(runPartition.getQcType().getId());
                dto.setQcNotes(runPartition.getNotes());
            }
            if (runPartition.getPurpose() != null) {
                dto.setRunPurposeId(runPartition.getPurpose().getId());
            }
        } else {
            dto.setQcNotes("");
        }
        return dto;
    })).collect(Collectors.toList()));
    model.put("runAliquots", getRunAliquots(run));
    MisoWebUtils.addIssues(issueTrackerManager, () -> issueTrackerManager.searchIssues(run.getAlias()), model);
    model.put("run", run);
    ObjectMapper mapper = new ObjectMapper();
    ObjectNode partitionConfig = mapper.createObjectNode();
    partitionConfig.put("platformType", run.getPlatformType().name());
    partitionConfig.put("instrumentModelId", run.getSequencer().getInstrumentModel().getId());
    partitionConfig.put("runId", run.getId());
    partitionConfig.put("isFull", run.isFull());
    partitionConfig.put("showContainer", true);
    partitionConfig.put("sequencingParametersId", run.getSequencingParameters() == null ? 0 : run.getSequencingParameters().getId());
    partitionConfig.put("showPool", true);
    model.put("partitionConfig", mapper.writeValueAsString(partitionConfig));
    model.put("experiments", experimentService.listAllByRunId(run.getId()).stream().map(expt -> Dtos.asDto(expt)).collect(Collectors.toList()));
    ObjectNode experimentConfig = mapper.createObjectNode();
    experimentConfig.put("runId", run.getId());
    model.put("experimentConfiguration", mapper.writeValueAsString(experimentConfig));
    model.put("runDto", mapper.writeValueAsString(Dtos.asDto(run)));
    ObjectNode formConfig = mapper.createObjectNode();
    User user = authorizationManager.getCurrentUser();
    formConfig.put("isAdmin", user.isAdmin());
    formConfig.put("isRunReviewer", user.isRunReviewer() || user.isAdmin());
    MisoWebUtils.addJsonArray(mapper, formConfig, "sops", sopService.listByCategory(SopCategory.RUN), Dtos::asDto);
    model.put("formConfig", mapper.writeValueAsString(formConfig));
    return new ModelAndView("/WEB-INF/pages/editRun.jsp", model);
}
Also used : PathVariable(org.springframework.web.bind.annotation.PathVariable) ClientErrorException(uk.ac.bbsrc.tgac.miso.webapp.controller.component.ClientErrorException) LoggerFactory(org.slf4j.LoggerFactory) Autowired(org.springframework.beans.factory.annotation.Autowired) RunPartition(uk.ac.bbsrc.tgac.miso.core.data.RunPartition) Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ModelMap(org.springframework.ui.ModelMap) IssueTrackerManager(uk.ac.bbsrc.tgac.miso.core.manager.IssueTrackerManager) InstrumentType(uk.ac.bbsrc.tgac.miso.core.data.type.InstrumentType) SequencerPartitionContainer(uk.ac.bbsrc.tgac.miso.core.data.SequencerPartitionContainer) RunPartitionAliquotService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionAliquotService) JsonArrayCollector(uk.ac.bbsrc.tgac.miso.webapp.util.JsonArrayCollector) SopCategory(uk.ac.bbsrc.tgac.miso.core.data.impl.Sop.SopCategory) ServiceLoader(java.util.ServiceLoader) Partition(uk.ac.bbsrc.tgac.miso.core.data.Partition) Collectors(java.util.stream.Collectors) IndexChecker(uk.ac.bbsrc.tgac.miso.core.util.IndexChecker) Objects(java.util.Objects) ModelAndView(org.springframework.web.servlet.ModelAndView) List(java.util.List) MisoWebUtils(uk.ac.bbsrc.tgac.miso.webapp.util.MisoWebUtils) Stream(java.util.stream.Stream) InstrumentService(uk.ac.bbsrc.tgac.miso.core.service.InstrumentService) RunService(uk.ac.bbsrc.tgac.miso.core.service.RunService) User(com.eaglegenomics.simlims.core.User) AuthorizationManager(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationManager) RunMetricsSource(uk.ac.bbsrc.tgac.miso.webapp.util.RunMetricsSource) NotFoundException(org.springframework.security.acls.model.NotFoundException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) Controller(org.springframework.stereotype.Controller) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayList(java.util.ArrayList) LimsUtils.isStringBlankOrNull(uk.ac.bbsrc.tgac.miso.core.util.LimsUtils.isStringBlankOrNull) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) RunPartitionAliquot(uk.ac.bbsrc.tgac.miso.core.data.RunPartitionAliquot) RunPartitionAliquotDto(uk.ac.bbsrc.tgac.miso.dto.RunPartitionAliquotDto) GetMapping(org.springframework.web.bind.annotation.GetMapping) StreamSupport(java.util.stream.StreamSupport) PoolElement(uk.ac.bbsrc.tgac.miso.core.data.impl.view.PoolElement) RunPartitionService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionService) ExternalUriBuilder(uk.ac.bbsrc.tgac.miso.webapp.context.ExternalUriBuilder) Logger(org.slf4j.Logger) WhineyFunction(uk.ac.bbsrc.tgac.miso.core.util.WhineyFunction) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) ExperimentService(uk.ac.bbsrc.tgac.miso.core.service.ExperimentService) Comparator(java.util.Comparator) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) PartitionDto(uk.ac.bbsrc.tgac.miso.dto.PartitionDto) SopService(uk.ac.bbsrc.tgac.miso.core.service.SopService) User(com.eaglegenomics.simlims.core.User) Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) JsonArrayCollector(uk.ac.bbsrc.tgac.miso.webapp.util.JsonArrayCollector) Objects(java.util.Objects) ModelAndView(org.springframework.web.servlet.ModelAndView) PartitionDto(uk.ac.bbsrc.tgac.miso.dto.PartitionDto) RunPartition(uk.ac.bbsrc.tgac.miso.core.data.RunPartition) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 25 with Dtos

use of uk.ac.bbsrc.tgac.miso.dto.Dtos in project miso-lims by miso-lims.

the class EditSequencerPartitionContainerController method setupForm.

private ModelAndView setupForm(SequencerPartitionContainer container, ModelMap model) throws IOException {
    model.put("container", container);
    model.put("containerPartitions", container.getPartitions().stream().map(partition -> Dtos.asDto(partition, false, indexChecker)).collect(Collectors.toList()));
    model.put("containerRuns", runService.listByContainerId(container.getId()).stream().map(Dtos::asDto).collect(Collectors.toList()));
    ObjectMapper mapper = new ObjectMapper();
    model.put("containerJSON", mapper.writer().writeValueAsString(Dtos.asDto(container, indexChecker)));
    model.put("poreVersions", containerService.listPoreVersions());
    return new ModelAndView("/WEB-INF/pages/editSequencerPartitionContainer.jsp", model);
}
Also used : Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ModelAndView(org.springframework.web.servlet.ModelAndView) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Aggregations

Dtos (uk.ac.bbsrc.tgac.miso.dto.Dtos)29 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)14 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)12 ModelAndView (org.springframework.web.servlet.ModelAndView)11 NotFoundException (org.springframework.security.acls.model.NotFoundException)10 GetMapping (org.springframework.web.bind.annotation.GetMapping)10 PostMapping (org.springframework.web.bind.annotation.PostMapping)8 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)8 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)7 PutMapping (org.springframework.web.bind.annotation.PutMapping)7 IOException (java.io.IOException)6 Collectors (java.util.stream.Collectors)6 Autowired (org.springframework.beans.factory.annotation.Autowired)6 Controller (org.springframework.stereotype.Controller)6 PathVariable (org.springframework.web.bind.annotation.PathVariable)6 User (com.eaglegenomics.simlims.core.User)5 List (java.util.List)5 ArrayList (java.util.ArrayList)4 Objects (java.util.Objects)4 Stream (java.util.stream.Stream)4