Search in sources :

Example 1 with IlluminaChemistry

use of uk.ac.bbsrc.tgac.miso.core.data.IlluminaChemistry in project miso-lims by miso-lims.

the class ConstantsController method rebuildConstants.

private void rebuildConstants() {
    try {
        ObjectMapper mapper = new ObjectMapper();
        ObjectNode node = mapper.createObjectNode();
        node.put("docsVersion", getDocsVersion());
        node.put("isDetailedSample", detailedSample);
        node.put("automaticBarcodes", autoGenerateIdBarcodes);
        node.put("boxScannerEnabled", boxScannerEnabled);
        node.put("newOptionSopUrl", newOptionSopUrl);
        final Collection<SampleValidRelationship> relationships = sampleValidRelationshipService.getAll();
        addJsonArray(mapper, node, "libraryDesigns", libraryDesignService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "libraryTypes", libraryTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "librarySelections", librarySelectionService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "libraryStrategies", libraryStrategyService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "libraryDesignCodes", libraryDesignCodeService.list(), Dtos::asDto);
        Set<Long> activePlatforms = sequencerService.list().stream().filter(Instrument::isActive).map(sequencer -> sequencer.getInstrumentModel().getId()).collect(Collectors.toSet());
        addJsonArray(mapper, node, "instrumentModels", instrumentModelService.list(), platform -> {
            InstrumentModelDto dto = Dtos.asDto(platform);
            dto.setActive(activePlatforms.contains(platform.getId()));
            return dto;
        });
        addJsonArray(mapper, node, "kitDescriptors", kitService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "sampleClasses", sampleClassService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "sampleValidRelationships", relationships, Dtos::asDto);
        addJsonArray(mapper, node, "detailedQcStatuses", detailedQcStatusService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "subprojects", subprojectService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "labs", labService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "tissueOrigins", tissueOriginService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "tissueTypes", tissueTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "tissueMaterials", tissueMaterialService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "tissuePieceTypes", tissuePieceTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "stains", stainService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "targetedSequencings", targetedSequencingService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "samplePurposes", samplePurposeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "sequencingParameters", sequencingParametersService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "printerBackends", Arrays.asList(Backend.values()), Dtos::asDto);
        addJsonArray(mapper, node, "printerDrivers", Arrays.asList(Driver.values()), Dtos::asDto);
        addJsonArray(mapper, node, "boxSizes", boxSizeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "boxUses", boxUseService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "studyTypes", studyTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "sampleCategories", SampleClass.CATEGORIES, Function.identity());
        createMap(mapper, node, "sampleSubcategories", SampleClass.SUBCATEGORIES);
        addJsonArray(mapper, node, "submissionAction", Arrays.asList(SubmissionActionType.values()), SubmissionActionType::name);
        addJsonArray(mapper, node, "containerModels", containerModelService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "poreVersions", containerService.listPoreVersions(), Dtos::asDto);
        addJsonArray(mapper, node, "spikeIns", librarySpikeInService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "attachmentCategories", attachmentCategoryService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "runPurposes", runPurposeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "sequencingControlTypes", sequencingControlTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "scientificNames", scientificNameService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "pipelines", pipelineService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "runLibraryQcStatuses", runLibraryQcStatusService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "worksetCategories", worksetCategoryService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "worksetStages", worksetStageService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "metrics", metricService.list(), MetricDto::from);
        addJsonArray(mapper, node, "metricSubcategories", metricSubcategoryService.list(), MetricSubcategoryDto::from);
        addJsonArray(mapper, node, "assays", assayService.list(), AssayDto::from);
        addJsonArray(mapper, node, "assayTests", assayTestService.list(), AssayTestDto::from);
        addJsonArray(mapper, node, "sampleSheetFormats", Arrays.asList(SampleSheet.values()), SampleSheet::name);
        Collection<IndexFamily> indexFamilies = indexFamilyService.list();
        addJsonArray(mapper, node, "indexFamilies", indexFamilies, Dtos::asDto);
        addJsonArray(mapper, node, "qcTypes", qcService.listQcTypes(), Dtos::asDto);
        addJsonArray(mapper, node, "qcTargets", Arrays.asList(QcTarget.values()), Dtos::asDto);
        addJsonArray(mapper, node, "concentrationUnits", Arrays.asList(ConcentrationUnit.values()), Dtos::asDto);
        addJsonArray(mapper, node, "volumeUnits", Arrays.asList(VolumeUnit.values()), Dtos::asDto);
        addJsonArray(mapper, node, "partitionQcTypes", partitionQcTypeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "referenceGenomes", referenceGenomeService.list(), Dtos::asDto);
        addJsonArray(mapper, node, "spreadsheetFormats", Arrays.asList(SpreadSheetFormat.values()), Dtos::asDto);
        addJsonArray(mapper, node, "sampleSpreadsheets", Arrays.asList(SampleSpreadSheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "librarySpreadsheets", Arrays.asList(LibrarySpreadSheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "libraryAliquotSpreadsheets", Arrays.asList(LibraryAliquotSpreadSheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "poolSpreadsheets", Arrays.asList(PoolSpreadSheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "partitionSpreadsheets", Arrays.asList(PartitionSpreadsheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "runLibrarySpreadsheets", Arrays.asList(RunLibrarySpreadsheets.values()), Dtos::asDto);
        addJsonArray(mapper, node, "workflows", Arrays.asList(WorkflowName.values()), Dtos::asDto);
        addJsonArray(mapper, node, "printableFields", Arrays.asList(PrintableField.values()), PrintableField::name);
        ArrayNode platformTypes = node.putArray("platformTypes");
        Collection<PlatformType> activePlatformTypes = instrumentModelService.listActivePlatformTypes();
        for (PlatformType platformType : PlatformType.values()) {
            ObjectNode dto = platformTypes.addObject();
            dto.put("name", platformType.name());
            dto.put("key", platformType.getKey());
            dto.put("containerName", platformType.getContainerName());
            dto.put("active", activePlatformTypes.contains(platformType));
            dto.put("partitionName", platformType.getPartitionName());
            dto.put("pluralPartitionName", platformType.getPluralPartitionName());
        }
        ArrayNode sampleTypes = node.putArray("sampleTypes");
        for (SampleType sampleType : sampleTypeService.list()) {
            if (!sampleType.isArchived()) {
                sampleTypes.add(sampleType.getName());
            }
        }
        ArrayNode donorSexes = node.putArray("donorSexes");
        for (String label : DonorSex.getLabels()) {
            donorSexes.add(label);
        }
        ArrayNode consentLevels = node.putArray("consentLevels");
        for (ConsentLevel level : ConsentLevel.values()) {
            consentLevels.add(level.getLabel());
        }
        ArrayNode strStatuses = node.putArray("strStatuses");
        for (String label : StrStatus.getLabels()) {
            strStatuses.add(label);
        }
        ArrayNode dilutionFactors = node.putArray("dilutionFactors");
        for (String label : DilutionFactor.getLabels()) {
            dilutionFactors.add(label);
        }
        ArrayNode illuminaChemistry = node.putArray("illuminaChemistry");
        for (IlluminaChemistry chemistry : IlluminaChemistry.values()) {
            illuminaChemistry.add(chemistry.name());
        }
        addIlluminaExperimentTypes(node);
        addHealthTypes(node);
        addIlluminaWorkflowTypes(node);
        addInstrumentTypes(node);
        addDataManglingPolicies(node);
        addMetricCategories(node);
        addThresholdTypes(node);
        ObjectNode warningsNode = mapper.createObjectNode();
        warningsNode.put("consentRevoked", "CONSENT REVOKED");
        warningsNode.put("duplicateIndices", indexChecker.getErrorMismatchesMessage());
        warningsNode.put("nearDuplicateIndices", indexChecker.getWarningMismatchesMessage());
        warningsNode.put("lowQualityLibraries", "Low Quality Libraries");
        warningsNode.put("missingIndex", "MISSING INDEX");
        warningsNode.put("negativeVolume", "Negative Volume");
        node.set("warningMessages", warningsNode);
        node.put("errorEditDistance", indexChecker.getErrorMismatches());
        node.put("warningEditDistance", indexChecker.getWarningMismatches());
        node.put("genomeFolder", genomeFolder);
        // Save the regenerated file in cache.
        constantsJs = "Constants = " + mapper.writeValueAsString(node) + ";";
        constantsTimestamp.set(System.currentTimeMillis() / 1000.0);
    } catch (IOException e) {
        throw new RestException(e);
    }
}
Also used : UriComponentsBuilder(org.springframework.web.util.UriComponentsBuilder) Arrays(java.util.Arrays) LibraryAliquotSpreadSheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.LibraryAliquotSpreadSheets) ScheduledFuture(java.util.concurrent.ScheduledFuture) PoolSpreadSheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.PoolSpreadSheets) SampleSpreadSheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.SampleSpreadSheets) IlluminaWorkflowType(uk.ac.bbsrc.tgac.miso.core.data.type.IlluminaWorkflowType) Autowired(org.springframework.beans.factory.annotation.Autowired) SampleSheet(uk.ac.bbsrc.tgac.miso.core.util.SampleSheet) CacheControl(org.springframework.http.CacheControl) InstrumentType(uk.ac.bbsrc.tgac.miso.core.data.type.InstrumentType) Backend(uk.ac.bbsrc.tgac.miso.core.service.printing.Backend) MisoWebUtils.addJsonArray(uk.ac.bbsrc.tgac.miso.webapp.util.MisoWebUtils.addJsonArray) ThresholdType(uk.ac.bbsrc.tgac.miso.core.data.type.ThresholdType) Gauge(io.prometheus.client.Gauge) Map(java.util.Map) RestException(uk.ac.bbsrc.tgac.miso.webapp.controller.rest.RestException) uk.ac.bbsrc.tgac.miso.dto(uk.ac.bbsrc.tgac.miso.dto) SubmissionActionType(uk.ac.bbsrc.tgac.miso.core.data.type.SubmissionActionType) Collection(java.util.Collection) Resource(javax.annotation.Resource) Set(java.util.Set) Collectors(java.util.stream.Collectors) IndexChecker(uk.ac.bbsrc.tgac.miso.core.util.IndexChecker) Executors(java.util.concurrent.Executors) RunLibrarySpreadsheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.RunLibrarySpreadsheets) ConsentLevel(uk.ac.bbsrc.tgac.miso.core.data.type.ConsentLevel) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) List(java.util.List) StrStatus(uk.ac.bbsrc.tgac.miso.core.data.type.StrStatus) DilutionFactor(uk.ac.bbsrc.tgac.miso.core.data.type.DilutionFactor) LibrarySpreadSheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.LibrarySpreadSheets) Driver(uk.ac.bbsrc.tgac.miso.core.service.printing.Driver) IlluminaChemistry(uk.ac.bbsrc.tgac.miso.core.data.IlluminaChemistry) SampleClass(uk.ac.bbsrc.tgac.miso.core.data.SampleClass) PartitionSpreadsheets(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.PartitionSpreadsheets) MetricCategory(uk.ac.bbsrc.tgac.miso.core.data.type.MetricCategory) SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) DonorSex(uk.ac.bbsrc.tgac.miso.core.data.SampleIdentity.DonorSex) HealthType(uk.ac.bbsrc.tgac.miso.core.data.type.HealthType) Scheduled(org.springframework.scheduling.annotation.Scheduled) Controller(org.springframework.stereotype.Controller) InstrumentDataManglingPolicy(uk.ac.bbsrc.tgac.miso.core.data.InstrumentDataManglingPolicy) Function(java.util.function.Function) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Value(org.springframework.beans.factory.annotation.Value) Version(uk.ac.bbsrc.tgac.miso.Version) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) GetMapping(org.springframework.web.bind.annotation.GetMapping) VolumeUnit(uk.ac.bbsrc.tgac.miso.core.data.VolumeUnit) IndexFamily(uk.ac.bbsrc.tgac.miso.core.data.IndexFamily) ConcentrationUnit(uk.ac.bbsrc.tgac.miso.core.data.ConcentrationUnit) HttpServletResponse(javax.servlet.http.HttpServletResponse) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) ResponseBody(org.springframework.web.bind.annotation.ResponseBody) uk.ac.bbsrc.tgac.miso.core.service(uk.ac.bbsrc.tgac.miso.core.service) TimeUnit(java.util.concurrent.TimeUnit) SampleType(uk.ac.bbsrc.tgac.miso.core.data.SampleType) WorkflowName(uk.ac.bbsrc.tgac.miso.core.data.workflow.Workflow.WorkflowName) SpreadSheetFormat(uk.ac.bbsrc.tgac.miso.core.data.spreadsheet.SpreadSheetFormat) PrintableField(uk.ac.bbsrc.tgac.miso.core.service.printing.PrintableField) QcTarget(uk.ac.bbsrc.tgac.miso.core.data.qc.QcTarget) PlatformType(uk.ac.bbsrc.tgac.miso.core.data.type.PlatformType) ServletContext(javax.servlet.ServletContext) ResponseEntity(org.springframework.http.ResponseEntity) IlluminaExperiment(uk.ac.bbsrc.tgac.miso.core.util.IlluminaExperiment) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) IlluminaChemistry(uk.ac.bbsrc.tgac.miso.core.data.IlluminaChemistry) SubmissionActionType(uk.ac.bbsrc.tgac.miso.core.data.type.SubmissionActionType) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ConsentLevel(uk.ac.bbsrc.tgac.miso.core.data.type.ConsentLevel) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) SampleSheet(uk.ac.bbsrc.tgac.miso.core.util.SampleSheet) RestException(uk.ac.bbsrc.tgac.miso.webapp.controller.rest.RestException) PrintableField(uk.ac.bbsrc.tgac.miso.core.service.printing.PrintableField) IOException(java.io.IOException) SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) IndexFamily(uk.ac.bbsrc.tgac.miso.core.data.IndexFamily) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) PlatformType(uk.ac.bbsrc.tgac.miso.core.data.type.PlatformType) SampleType(uk.ac.bbsrc.tgac.miso.core.data.SampleType)

Aggregations

ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 Gauge (io.prometheus.client.Gauge)1 IOException (java.io.IOException)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 Executors (java.util.concurrent.Executors)1 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)1 ScheduledFuture (java.util.concurrent.ScheduledFuture)1 TimeUnit (java.util.concurrent.TimeUnit)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 Resource (javax.annotation.Resource)1 ServletContext (javax.servlet.ServletContext)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1