Search in sources :

Example 1 with RunPosition

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

the class DefaultQcStatusService method findPartitionInRun.

private Partition findPartitionInRun(Run run, long partitionId) {
    Partition partition = run.getRunPositions().stream().map(RunPosition::getContainer).flatMap(x -> x.getPartitions().stream()).filter(x -> x.getId() == partitionId).findFirst().orElse(null);
    throwIfNull("Partition", partition);
    return partition;
}
Also used : AuthorizationManager(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationManager) Date(java.util.Date) DetailedQcStatus(uk.ac.bbsrc.tgac.miso.core.data.DetailedQcStatus) Autowired(org.springframework.beans.factory.annotation.Autowired) DetailedQcItem(uk.ac.bbsrc.tgac.miso.core.data.qc.DetailedQcItem) RunLibraryQcStatusService(uk.ac.bbsrc.tgac.miso.core.service.RunLibraryQcStatusService) RunPartition(uk.ac.bbsrc.tgac.miso.core.data.RunPartition) LibraryAliquotService(uk.ac.bbsrc.tgac.miso.core.service.LibraryAliquotService) LibraryAliquot(uk.ac.bbsrc.tgac.miso.core.data.impl.LibraryAliquot) DetailedQcStatusService(uk.ac.bbsrc.tgac.miso.core.service.DetailedQcStatusService) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) RunPartitionAliquot(uk.ac.bbsrc.tgac.miso.core.data.RunPartitionAliquot) Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) Service(org.springframework.stereotype.Service) Library(uk.ac.bbsrc.tgac.miso.core.data.Library) PartitionQCType(uk.ac.bbsrc.tgac.miso.core.data.PartitionQCType) PoolElement(uk.ac.bbsrc.tgac.miso.core.data.impl.view.PoolElement) RunPartitionService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionService) QcStatusService(uk.ac.bbsrc.tgac.miso.core.service.QcStatusService) RunPartitionAliquotService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionAliquotService) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) SampleService(uk.ac.bbsrc.tgac.miso.core.service.SampleService) QcStatusUpdate(uk.ac.bbsrc.tgac.miso.core.data.impl.view.qc.QcStatusUpdate) LibraryService(uk.ac.bbsrc.tgac.miso.core.service.LibraryService) ListLibraryAliquotView(uk.ac.bbsrc.tgac.miso.core.data.impl.view.ListLibraryAliquotView) Collection(java.util.Collection) IOException(java.io.IOException) Partition(uk.ac.bbsrc.tgac.miso.core.data.Partition) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition) PartitionQcTypeService(uk.ac.bbsrc.tgac.miso.core.service.PartitionQcTypeService) RunLibraryQcStatus(uk.ac.bbsrc.tgac.miso.core.data.RunLibraryQcStatus) PoolService(uk.ac.bbsrc.tgac.miso.core.service.PoolService) RunService(uk.ac.bbsrc.tgac.miso.core.service.RunService) Transactional(org.springframework.transaction.annotation.Transactional) EntityType(uk.ac.bbsrc.tgac.miso.core.data.Boxable.EntityType) Pool(uk.ac.bbsrc.tgac.miso.core.data.Pool) RunPartition(uk.ac.bbsrc.tgac.miso.core.data.RunPartition) Partition(uk.ac.bbsrc.tgac.miso.core.data.Partition) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition)

Example 2 with RunPosition

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

the class DefaultRunService method validateChanges.

private void validateChanges(Run before, Run changed) throws IOException {
    ValidationUtils.updateQcDetails(changed, before, Run::getQcPassed, Run::getQcUser, Run::setQcUser, authorizationManager, Run::getQcDate, Run::setQcDate);
    if (isChanged(Run::getQcPassed, changed, before)) {
        changed.setDataReview(null);
    }
    ValidationUtils.updateQcDetails(changed, before, Run::getDataReview, Run::getDataReviewer, Run::setDataReviewer, authorizationManager, Run::getDataReviewDate, Run::setDataReviewDate);
    List<ValidationError> errors = new ArrayList<>();
    if (!changed.getHealth().isDone()) {
        changed.setCompletionDate(null);
    } else if (changed.getCompletionDate() == null) {
        errors.add(new ValidationError("completionDate", "Completion date must be provided for finished run"));
    }
    if (before != null) {
        if (before.getCompletionDate() != null && changed.getCompletionDate() != null && !changed.getCompletionDate().equals(before.getCompletionDate()) && !authorizationManager.isAdminUser()) {
            errors.add(new ValidationError("completionDate", "Only admin may change completion date"));
        }
        if (before.getStartDate() != null && changed.getStartDate() != null && !changed.getStartDate().equals(before.getStartDate()) && !authorizationManager.isAdminUser()) {
            errors.add(new ValidationError("completionDate", "Only admin may change start date"));
        }
    }
    if (isSetAndChanged(Run::getAlias, changed, before) && getRunByAlias(changed.getAlias()) != null) {
        errors.add(new ValidationError("alias", "A different run with this alias already exists. Run alias must be unique."));
    }
    InstrumentModel platform = changed.getSequencer().getInstrumentModel();
    for (RunPosition position : changed.getRunPositions()) {
        if (position.getPosition() != null && !platform.getPositions().contains(position.getPosition())) {
            errors.add(new ValidationError(String.format("Platform %s does not have a position %s", platform.getAlias(), position.getPosition())));
        }
    }
    if (changed.getSequencingKit() != null && changed.getSequencingKit().getKitType() != KitType.SEQUENCING) {
        errors.add(new ValidationError("sequencingKitId", "Must be a sequencing kit"));
    }
    if (changed.getSequencingKitLot() != null && changed.getSequencingKit() == null) {
        errors.add(new ValidationError("sequencingKitLot", "Sequencing kit not specified"));
    }
    if (isSetAndChanged(Run::getDataReview, changed, before) && changed.getQcPassed() == null) {
        errors.add(new ValidationError("dataReview", "Cannot set data review before QC status"));
    }
    ValidationUtils.validateQcUser(changed.getQcPassed(), changed.getQcUser(), errors);
    ValidationUtils.validateQcUser(changed.getDataReview(), changed.getDataReviewer(), errors, "data review", "Data reviewer");
    User user = authorizationManager.getCurrentUser();
    if (((before == null && changed.getDataReview() != null) || (before != null && isChanged(Run::getDataReview, changed, before))) && !user.isRunReviewer() && !user.isAdmin()) {
        errors.add(new ValidationError("dataReview", "You are not authorized to make this change"));
    }
    if (changed.getSequencerPartitionContainers() != null) {
        if (changed.getSequencerPartitionContainers().size() > changed.getSequencer().getInstrumentModel().getNumContainers()) {
            errors.add(new ValidationError(String.format("Cannot have more than %d containers", changed.getSequencer().getInstrumentModel().getNumContainers())));
        }
        for (SequencerPartitionContainer container : changed.getSequencerPartitionContainers()) {
            if (changed.getSequencer().getInstrumentModel().getContainerModels().stream().noneMatch(model -> model.getId() == container.getModel().getId())) {
                errors.add(new ValidationError(String.format("Container '%s' is not valid for instrument '%s'", container.getIdentificationBarcode(), changed.getSequencer().getInstrumentModel().getAlias())));
            }
        }
    }
    if (!errors.isEmpty()) {
        throw new ValidationException(errors);
    }
}
Also used : SequencerPartitionContainer(uk.ac.bbsrc.tgac.miso.core.data.SequencerPartitionContainer) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition) User(com.eaglegenomics.simlims.core.User) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) InstrumentModel(uk.ac.bbsrc.tgac.miso.core.data.InstrumentModel) OxfordNanoporeRun(uk.ac.bbsrc.tgac.miso.core.data.OxfordNanoporeRun) IlluminaRun(uk.ac.bbsrc.tgac.miso.core.data.IlluminaRun) SolidRun(uk.ac.bbsrc.tgac.miso.core.data.SolidRun) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) LS454Run(uk.ac.bbsrc.tgac.miso.core.data.LS454Run) ValidationError(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationError)

Example 3 with RunPosition

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

the class DefaultRunService method updateContainerFromNotification.

private boolean updateContainerFromNotification(final Run target, User user, SequencingContainerModel containerModel, String containerSerialNumber, final GetLaneContents getLaneContents, String positionName) throws IOException {
    if (LimsUtils.isStringBlankOrNull(containerSerialNumber)) {
        return false;
    }
    final Collection<SequencerPartitionContainer> containers = containerService.listByBarcode(containerSerialNumber);
    int laneCount = containerModel.getPartitionCount();
    InstrumentPosition position = null;
    if (!isStringEmptyOrNull(positionName)) {
        position = target.getSequencer().getInstrumentModel().getPositions().stream().filter(pos -> positionName.equals(pos.getAlias())).findFirst().orElseThrow(() -> new IllegalArgumentException(String.format("Unknown position '%s' for platform '%s'", positionName, target.getSequencer().getInstrumentModel().getAlias())));
    }
    switch(containers.size()) {
        case 0:
            SequencerPartitionContainer newContainer = containerModel.getPlatformType().createContainer();
            newContainer.setModel(containerModel);
            newContainer.setCreator(user);
            newContainer.setIdentificationBarcode(containerSerialNumber);
            newContainer.setPartitionLimit(laneCount);
            newContainer.setPartitions(IntStream.range(0, laneCount).mapToObj(i -> new PartitionImpl(newContainer, i + 1)).collect(Collectors.toList()));
            updatePartitionContents(getLaneContents, newContainer);
            RunPosition newRunPos = new RunPosition();
            newRunPos.setRun(target);
            newRunPos.setContainer(newContainer);
            newRunPos.setPosition(position);
            target.getRunPositions().clear();
            target.getRunPositions().add(newRunPos);
            return true;
        case 1:
            SequencerPartitionContainer container = containers.iterator().next();
            boolean isMutated = false;
            if (container.getPartitions().size() != laneCount) {
                throw new IllegalArgumentException(String.format("The container %s has %d partitions, but %d were detected by the scanner.", containerSerialNumber, container.getPartitions().size(), laneCount));
            }
            // only update container model from fallback to non-fallback
            if (container.getModel().isFallback() && !containerModel.isFallback() && container.getModel().getId() != containerModel.getId()) {
                container.setModel(containerModel);
                isMutated = true;
            }
            if (target.getSequencerPartitionContainers().stream().noneMatch(c -> c.getId() == container.getId())) {
                target.addSequencerPartitionContainer(container, position);
                updatePartitionContents(getLaneContents, container);
                isMutated = true;
            }
            return isMutated;
        default:
            throw new IllegalArgumentException("Multiple containers with same identifier: " + containerSerialNumber);
    }
}
Also used : SequencingContainerModel(uk.ac.bbsrc.tgac.miso.core.data.impl.SequencingContainerModel) PaginationFilter(uk.ac.bbsrc.tgac.miso.core.util.PaginationFilter) LoggerFactory(org.slf4j.LoggerFactory) KitDescriptorService(uk.ac.bbsrc.tgac.miso.core.service.KitDescriptorService) Autowired(org.springframework.beans.factory.annotation.Autowired) MisoNamingException(uk.ac.bbsrc.tgac.miso.core.exception.MisoNamingException) RunPartition(uk.ac.bbsrc.tgac.miso.core.data.RunPartition) KitType(uk.ac.bbsrc.tgac.miso.core.data.type.KitType) NotImplementedException(org.apache.commons.lang.NotImplementedException) SequencerPartitionContainer(uk.ac.bbsrc.tgac.miso.core.data.SequencerPartitionContainer) NamingScheme(uk.ac.bbsrc.tgac.miso.core.service.naming.NamingScheme) Note(com.eaglegenomics.simlims.core.Note) JsonNode(com.fasterxml.jackson.databind.JsonNode) RunPartitionAliquotService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionAliquotService) KitDescriptor(uk.ac.bbsrc.tgac.miso.core.data.impl.kit.KitDescriptor) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) ConstraintViolationException(org.hibernate.exception.ConstraintViolationException) Predicate(java.util.function.Predicate) DeletionStore(uk.ac.bbsrc.tgac.miso.core.store.DeletionStore) Partition(uk.ac.bbsrc.tgac.miso.core.data.Partition) Collectors(java.util.stream.Collectors) PartitionImpl(uk.ac.bbsrc.tgac.miso.core.data.impl.PartitionImpl) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) SequencingParametersService(uk.ac.bbsrc.tgac.miso.core.service.SequencingParametersService) InstrumentService(uk.ac.bbsrc.tgac.miso.core.service.InstrumentService) PoolService(uk.ac.bbsrc.tgac.miso.core.service.PoolService) ChangeLogService(uk.ac.bbsrc.tgac.miso.core.service.ChangeLogService) RunService(uk.ac.bbsrc.tgac.miso.core.service.RunService) OxfordNanoporeRun(uk.ac.bbsrc.tgac.miso.core.data.OxfordNanoporeRun) InstrumentModel(uk.ac.bbsrc.tgac.miso.core.data.InstrumentModel) Barcodable(uk.ac.bbsrc.tgac.miso.core.data.Barcodable) IntStream(java.util.stream.IntStream) User(com.eaglegenomics.simlims.core.User) java.util(java.util) AuthorizationManager(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationManager) RunStore(uk.ac.bbsrc.tgac.miso.persistence.RunStore) SequencerPartitionContainerChangeLog(uk.ac.bbsrc.tgac.miso.core.data.impl.changelog.SequencerPartitionContainerChangeLog) HealthType(uk.ac.bbsrc.tgac.miso.core.data.type.HealthType) InstrumentDataManglingPolicy(uk.ac.bbsrc.tgac.miso.core.data.InstrumentDataManglingPolicy) SequencingContainerModelService(uk.ac.bbsrc.tgac.miso.core.service.SequencingContainerModelService) IlluminaRun(uk.ac.bbsrc.tgac.miso.core.data.IlluminaRun) UserService(uk.ac.bbsrc.tgac.miso.core.service.UserService) SolidRun(uk.ac.bbsrc.tgac.miso.core.data.SolidRun) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) Service(org.springframework.stereotype.Service) GetLaneContents(uk.ac.bbsrc.tgac.miso.core.data.GetLaneContents) LimsUtils(uk.ac.bbsrc.tgac.miso.core.util.LimsUtils) RunChangeLog(uk.ac.bbsrc.tgac.miso.core.data.impl.changelog.RunChangeLog) ContainerService(uk.ac.bbsrc.tgac.miso.core.service.ContainerService) NamingSchemeHolder(uk.ac.bbsrc.tgac.miso.core.service.naming.NamingSchemeHolder) RunPartitionService(uk.ac.bbsrc.tgac.miso.core.service.RunPartitionService) ValidationError(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationError) Logger(org.slf4j.Logger) InstrumentPosition(uk.ac.bbsrc.tgac.miso.core.data.InstrumentPosition) LS454Run(uk.ac.bbsrc.tgac.miso.core.data.LS454Run) WhineyFunction(uk.ac.bbsrc.tgac.miso.core.util.WhineyFunction) ExceptionUtils(org.apache.commons.lang.exception.ExceptionUtils) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) SequencingParameters(uk.ac.bbsrc.tgac.miso.core.data.SequencingParameters) AuthorizationException(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationException) Consumer(java.util.function.Consumer) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition) FileAttachmentService(uk.ac.bbsrc.tgac.miso.core.service.FileAttachmentService) ValidationUtils(uk.ac.bbsrc.tgac.miso.service.impl.ValidationUtils) PaginatedDataSource(uk.ac.bbsrc.tgac.miso.core.util.PaginatedDataSource) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) Transactional(org.springframework.transaction.annotation.Transactional) SopService(uk.ac.bbsrc.tgac.miso.core.service.SopService) SequencerPartitionContainer(uk.ac.bbsrc.tgac.miso.core.data.SequencerPartitionContainer) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition) PartitionImpl(uk.ac.bbsrc.tgac.miso.core.data.impl.PartitionImpl) InstrumentPosition(uk.ac.bbsrc.tgac.miso.core.data.InstrumentPosition)

Example 4 with RunPosition

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

the class Run method addSequencerPartitionContainer.

public void addSequencerPartitionContainer(SequencerPartitionContainer f, InstrumentPosition position) {
    RunPosition rp = new RunPosition();
    rp.setRun(this);
    rp.setContainer(f);
    rp.setPosition(position);
    getRunPositions().add(rp);
}
Also used : RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition)

Example 5 with RunPosition

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

the class DefaultContainerService method validateChange.

private void validateChange(SequencerPartitionContainer container, SequencerPartitionContainer beforeChange) throws IOException {
    if (container.getModel().getPartitionCount() != container.getPartitions().size()) {
        // this is not user-correctable, so should not be reported as a validation error
        throw new IllegalArgumentException("Number of partitions does not match container model specifications");
    }
    List<ValidationError> errors = new ArrayList<>();
    if (LimsUtils.isStringBlankOrNull(container.getIdentificationBarcode())) {
        errors.add(new ValidationError("identificationBarcode", "Required"));
    }
    ValidationUtils.validateBarcodeUniqueness(container, beforeChange, barcodableReferenceService, errors);
    if (container.getClusteringKit() != null && container.getClusteringKit().getKitType() != KitType.CLUSTERING) {
        errors.add(new ValidationError("clusteringKitId", "Must be a clustering kit"));
    }
    if (container.getClusteringKitLot() != null && container.getClusteringKit() == null) {
        errors.add(new ValidationError("clusteringKitLot", "Clustering kit not specified"));
    }
    if (container.getMultiplexingKit() != null && container.getMultiplexingKit().getKitType() != KitType.MULTIPLEXING) {
        errors.add(new ValidationError("MultiplexingKitId", "Must be a multiplexing kit"));
    }
    if (container.getMultiplexingKitLot() != null && container.getMultiplexingKit() == null) {
        errors.add(new ValidationError("MultiplexingKitLot", "Multiplexing kit not specified"));
    }
    if (beforeChange != null && ValidationUtils.isSetAndChanged(SequencerPartitionContainer::getModel, container, beforeChange)) {
        SequencingContainerModel before = beforeChange.getModel();
        SequencingContainerModel after = container.getModel();
        if (after.getPlatformType() != before.getPlatformType()) {
            errors.add(new ValidationError("model.id", String.format("Can only be changed to a model of the same platform (%s)", before.getPlatformType().getKey())));
        } else if (after.getPartitionCount() != before.getPartitionCount()) {
            errors.add(new ValidationError("model.id", String.format("Can only be changed to a model with the same number of partitions (%d)", before.getPartitionCount())));
        }
        if (beforeChange.getRunPositions() != null) {
            Set<InstrumentModel> requiredInstrumentModels = beforeChange.getRunPositions().stream().map(RunPosition::getRun).map(Run::getSequencer).map(Instrument::getInstrumentModel).collect(Collectors.toSet());
            if (requiredInstrumentModels.stream().anyMatch(required -> after.getInstrumentModels().stream().map(InstrumentModel::getId).noneMatch(id -> id == required.getId()))) {
                errors.add(new ValidationError("model.id", String.format("Can only change to a model compatible with the linked runs' instrument models (%s)", LimsUtils.joinWithConjunction(requiredInstrumentModels.stream().map(InstrumentModel::getAlias).collect(Collectors.toSet()), "and"))));
            }
        }
    }
    if (!errors.isEmpty()) {
        throw new ValidationException(errors);
    }
}
Also used : SequencingContainerModel(uk.ac.bbsrc.tgac.miso.core.data.impl.SequencingContainerModel) AuthorizationManager(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationManager) PoreVersion(uk.ac.bbsrc.tgac.miso.core.data.impl.PoreVersion) KitDescriptorService(uk.ac.bbsrc.tgac.miso.core.service.KitDescriptorService) Autowired(org.springframework.beans.factory.annotation.Autowired) SequencingContainerModelService(uk.ac.bbsrc.tgac.miso.core.service.SequencingContainerModelService) ArrayList(java.util.ArrayList) SequencerPartitionContainerStore(uk.ac.bbsrc.tgac.miso.persistence.SequencerPartitionContainerStore) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) KitType(uk.ac.bbsrc.tgac.miso.core.data.type.KitType) Service(org.springframework.stereotype.Service) SequencerPartitionContainer(uk.ac.bbsrc.tgac.miso.core.data.SequencerPartitionContainer) LimsUtils(uk.ac.bbsrc.tgac.miso.core.util.LimsUtils) SequencerPartitionContainerImpl(uk.ac.bbsrc.tgac.miso.core.data.impl.SequencerPartitionContainerImpl) ContainerService(uk.ac.bbsrc.tgac.miso.core.service.ContainerService) ValidationError(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationError) KitDescriptor(uk.ac.bbsrc.tgac.miso.core.data.impl.kit.KitDescriptor) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) ValidationResult(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationResult) OxfordNanoporeContainer(uk.ac.bbsrc.tgac.miso.core.data.impl.OxfordNanoporeContainer) Collection(java.util.Collection) Set(java.util.Set) DeletionStore(uk.ac.bbsrc.tgac.miso.core.store.DeletionStore) IOException(java.io.IOException) Partition(uk.ac.bbsrc.tgac.miso.core.data.Partition) AuthorizationException(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationException) Collectors(java.util.stream.Collectors) RunPosition(uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition) List(java.util.List) PoolService(uk.ac.bbsrc.tgac.miso.core.service.PoolService) Instrument(uk.ac.bbsrc.tgac.miso.core.data.Instrument) InstrumentModel(uk.ac.bbsrc.tgac.miso.core.data.InstrumentModel) Transactional(org.springframework.transaction.annotation.Transactional) Pool(uk.ac.bbsrc.tgac.miso.core.data.Pool) BarcodableReferenceService(uk.ac.bbsrc.tgac.miso.core.service.BarcodableReferenceService) SequencingContainerModel(uk.ac.bbsrc.tgac.miso.core.data.impl.SequencingContainerModel) ValidationException(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException) ArrayList(java.util.ArrayList) InstrumentModel(uk.ac.bbsrc.tgac.miso.core.data.InstrumentModel) Run(uk.ac.bbsrc.tgac.miso.core.data.Run) ValidationError(uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationError)

Aggregations

RunPosition (uk.ac.bbsrc.tgac.miso.core.data.impl.RunPosition)11 Run (uk.ac.bbsrc.tgac.miso.core.data.Run)8 IOException (java.io.IOException)5 Autowired (org.springframework.beans.factory.annotation.Autowired)5 Partition (uk.ac.bbsrc.tgac.miso.core.data.Partition)5 User (com.eaglegenomics.simlims.core.User)4 ArrayList (java.util.ArrayList)4 Collection (java.util.Collection)4 Collectors (java.util.stream.Collectors)4 InstrumentModel (uk.ac.bbsrc.tgac.miso.core.data.InstrumentModel)4 Pool (uk.ac.bbsrc.tgac.miso.core.data.Pool)4 PoolService (uk.ac.bbsrc.tgac.miso.core.service.PoolService)4 ValidationException (uk.ac.bbsrc.tgac.miso.core.service.exception.ValidationException)4 List (java.util.List)3 Consumer (java.util.function.Consumer)3 Service (org.springframework.stereotype.Service)3 Transactional (org.springframework.transaction.annotation.Transactional)3 PostMapping (org.springframework.web.bind.annotation.PostMapping)3 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)3 IlluminaRun (uk.ac.bbsrc.tgac.miso.core.data.IlluminaRun)3