Search in sources :

Example 1 with SampleValidRelationship

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

the class DefaultSampleClassService method getRequiredTissueProcessingClass.

@Override
public SampleClass getRequiredTissueProcessingClass(Long childClassId) throws IOException {
    SampleClass stockClass = getNotNullClass(childClassId);
    Set<SampleValidRelationship> relationships = sampleValidRelationshipService.getAll();
    if (relationships.stream().anyMatch(relationship -> !relationship.isArchived() && relationship.getChild().getId() == childClassId && relationship.getParent().getSampleCategory().equals(SampleTissue.CATEGORY_NAME))) {
        return null;
    }
    List<SampleClass> parentClasses = relationships.stream().filter(relationship -> !relationship.isArchived() && relationship.getChild().getId() == childClassId && relationship.getParent().getSampleCategory().equals(SampleTissueProcessing.CATEGORY_NAME)).map(SampleValidRelationship::getParent).collect(Collectors.toList());
    return singleResult(parentClasses, stockClass, SampleTissueProcessing.CATEGORY_NAME);
}
Also used : SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) SampleClass(uk.ac.bbsrc.tgac.miso.core.data.SampleClass)

Example 2 with SampleValidRelationship

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

the class DefaultSampleClassService method loadChildEntities.

@Override
protected void loadChildEntities(SampleClass object) throws IOException {
    Set<SampleValidRelationship> parents = new HashSet<>();
    for (SampleValidRelationship svr : object.getParentRelationships()) {
        SampleValidRelationship loaded = null;
        if (svr.isSaved()) {
            loaded = sampleValidRelationshipService.get(svr.getId());
            if (loaded == null) {
                throw new ValidationException(new ValidationError("No parent relationship found with ID: " + svr.getId()));
            }
            loaded.setArchived(svr.isArchived());
        } else {
            loaded = svr;
            loaded.setChild(object);
            SampleClass parent = loaded.getParent() == null ? null : get(loaded.getParent().getId());
            if (parent == null) {
                throw new ValidationException(String.format("Parent sample class not found%s%s", loaded.getParent() == null ? "" : " with ID: ", loaded.getParent() == null ? "" : loaded.getParent().getId()));
            }
            loaded.setParent(parent);
        }
        parents.add(loaded);
    }
    object.getParentRelationships().clear();
    object.getParentRelationships().addAll(parents);
    if (object.getDefaultSampleType() != null) {
        object.setDefaultSampleType(sampleTypeService.getByName(object.getDefaultSampleType().getName()));
    }
}
Also used : SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) SampleClass(uk.ac.bbsrc.tgac.miso.core.data.SampleClass) ValidationError(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationError) HashSet(java.util.HashSet)

Example 3 with SampleValidRelationship

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

the class HibernateSampleValidRelationshipDaoIT method testGetByClasses.

@Test
public void testGetByClasses() throws Exception {
    SampleClass parent = (SampleClass) currentSession().get(SampleClassImpl.class, 1L);
    SampleClass child = (SampleClass) currentSession().get(SampleClassImpl.class, 2L);
    SampleValidRelationship relationship = sut.getByClasses(parent, child);
    assertNotNull(relationship);
    assertEquals(parent.getId(), relationship.getParent().getId());
    assertEquals(child.getId(), relationship.getChild().getId());
}
Also used : SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) SampleClass(uk.ac.bbsrc.tgac.miso.core.data.SampleClass) SampleClassImpl(uk.ac.bbsrc.tgac.miso.core.data.impl.SampleClassImpl) AbstractDAOTest(uk.ac.bbsrc.tgac.miso.AbstractDAOTest) Test(org.junit.Test)

Example 4 with SampleValidRelationship

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

the class HibernateSampleValidRelationshipDaoIT method testGet.

@Test
public void testGet() throws Exception {
    long id = 2L;
    SampleValidRelationship relationship = sut.get(id);
    assertNotNull(relationship);
    assertEquals(id, relationship.getId());
}
Also used : SampleValidRelationship(uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship) AbstractDAOTest(uk.ac.bbsrc.tgac.miso.AbstractDAOTest) Test(org.junit.Test)

Example 5 with SampleValidRelationship

use of uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship 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

SampleValidRelationship (uk.ac.bbsrc.tgac.miso.core.data.SampleValidRelationship)10 SampleClass (uk.ac.bbsrc.tgac.miso.core.data.SampleClass)5 Test (org.junit.Test)3 SampleValidRelationshipImpl (uk.ac.bbsrc.tgac.miso.core.data.impl.SampleValidRelationshipImpl)3 User (com.eaglegenomics.simlims.core.User)2 IOException (java.io.IOException)2 Collection (java.util.Collection)2 HashSet (java.util.HashSet)2 List (java.util.List)2 Set (java.util.Set)2 Collectors (java.util.stream.Collectors)2 Autowired (org.springframework.beans.factory.annotation.Autowired)2 AbstractDAOTest (uk.ac.bbsrc.tgac.miso.AbstractDAOTest)2 IlluminaNotificationDto (ca.on.oicr.gsi.runscanner.dto.IlluminaNotificationDto)1 NotificationDto (ca.on.oicr.gsi.runscanner.dto.NotificationDto)1 OxfordNanoporeNotificationDto (ca.on.oicr.gsi.runscanner.dto.OxfordNanoporeNotificationDto)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 Sets (com.google.common.collect.Sets)1