Search in sources :

Example 26 with Sample

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

the class RequisitionRestController method moveSamples.

@PostMapping("/{requisitionId}/samples/move")
@ResponseBody
public RequisitionDto moveSamples(@PathVariable long requisitionId, @RequestBody MoveSamplesRequest request) throws IOException {
    List<Sample> samples = new ArrayList<>();
    for (Long id : request.sampleIds) {
        Sample sample = RestUtils.retrieve("Sample", id, sampleService, Status.BAD_REQUEST);
        samples.add(sample);
    }
    Requisition requisition = null;
    if (request.requisitionId != null) {
        requisition = RestUtils.retrieve("Requisition", request.requisitionId, requisitionService, Status.BAD_REQUEST);
    } else {
        requisition = new Requisition();
        requisition.setAlias(request.requisitionAlias);
        Assay assay = new Assay();
        assay.setId(request.assayId);
        requisition.setAssay(assay);
        requisition.setStopped(request.stopped);
    }
    Requisition saved = requisitionService.moveToRequisition(requisition, samples);
    return RequisitionDto.from(saved);
}
Also used : Assay(uk.ac.bbsrc.tgac.miso.core.data.impl.Assay) Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) ArrayList(java.util.ArrayList) Requisition(uk.ac.bbsrc.tgac.miso.core.data.impl.Requisition) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 27 with Sample

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

the class RequisitionRestController method addSamples.

private ObjectNode addSamples(Requisition requisition, List<Long> ids) throws IOException {
    List<Sample> samples = new ArrayList<>();
    for (Long id : ids) {
        Sample sample = RestUtils.retrieve("Sample", id, sampleService, Status.BAD_REQUEST);
        sample.setRequisition(requisition);
        samples.add(sample);
    }
    return asyncOperationManager.startAsyncBulkUpdate("Sample", samples, sampleService);
}
Also used : Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) ArrayList(java.util.ArrayList)

Example 28 with Sample

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

the class SampleRestController method bulkDelete.

@PostMapping(value = "/bulk-delete")
@ResponseBody
@ResponseStatus(HttpStatus.NO_CONTENT)
public void bulkDelete(@RequestBody(required = true) List<Long> ids) throws IOException {
    List<Sample> samples = new ArrayList<>();
    for (Long id : ids) {
        if (id == null) {
            throw new RestException("Cannot delete null sample", Status.BAD_REQUEST);
        }
        Sample sample = sampleService.get(id);
        if (sample == null) {
            throw new RestException("Sample " + id + " not found", Status.BAD_REQUEST);
        }
        samples.add(sample);
    }
    sampleService.bulkDelete(samples);
}
Also used : Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) ArrayList(java.util.ArrayList) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 29 with Sample

use of uk.ac.bbsrc.tgac.miso.core.data.Sample 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);
}
Also used : PathVariable(org.springframework.web.bind.annotation.PathVariable) RequestParam(org.springframework.web.bind.annotation.RequestParam) SampleTissueProcessing(uk.ac.bbsrc.tgac.miso.core.data.SampleTissueProcessing) BulkCreateTableBackend(uk.ac.bbsrc.tgac.miso.webapp.util.BulkCreateTableBackend) Autowired(org.springframework.beans.factory.annotation.Autowired) Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) ModelMap(org.springframework.ui.ModelMap) DetailedSample(uk.ac.bbsrc.tgac.miso.core.data.DetailedSample) BoxUtils(uk.ac.bbsrc.tgac.miso.core.util.BoxUtils) Project(uk.ac.bbsrc.tgac.miso.core.data.Project) Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) Map(java.util.Map) AliasComparator(uk.ac.bbsrc.tgac.miso.core.util.AliasComparator) DetailedSampleDto(uk.ac.bbsrc.tgac.miso.dto.DetailedSampleDto) RestException(uk.ac.bbsrc.tgac.miso.webapp.controller.rest.RestException) PostMapping(org.springframework.web.bind.annotation.PostMapping) SampleService(uk.ac.bbsrc.tgac.miso.core.service.SampleService) SopCategory(uk.ac.bbsrc.tgac.miso.core.data.impl.Sop.SopCategory) SampleIdentityDto(uk.ac.bbsrc.tgac.miso.dto.SampleIdentityDto) SampleStockDto(uk.ac.bbsrc.tgac.miso.dto.SampleStockDto) Collection(java.util.Collection) Set(java.util.Set) QcNodeService(uk.ac.bbsrc.tgac.miso.core.service.QcNodeService) SampleAliquotDto(uk.ac.bbsrc.tgac.miso.dto.SampleAliquotDto) Collectors(java.util.stream.Collectors) IndexChecker(uk.ac.bbsrc.tgac.miso.core.util.IndexChecker) ModelAndView(org.springframework.web.servlet.ModelAndView) LibraryDto(uk.ac.bbsrc.tgac.miso.dto.LibraryDto) MisoWebUtils(uk.ac.bbsrc.tgac.miso.webapp.util.MisoWebUtils) List(java.util.List) Stream(java.util.stream.Stream) SampleStock(uk.ac.bbsrc.tgac.miso.core.data.SampleStock) PoolService(uk.ac.bbsrc.tgac.miso.core.service.PoolService) RunService(uk.ac.bbsrc.tgac.miso.core.service.RunService) BulkEditTableBackend(uk.ac.bbsrc.tgac.miso.webapp.util.BulkEditTableBackend) SampleClass(uk.ac.bbsrc.tgac.miso.core.data.SampleClass) SampleIdentity(uk.ac.bbsrc.tgac.miso.core.data.SampleIdentity) AuthorizationManager(uk.ac.bbsrc.tgac.miso.core.security.AuthorizationManager) SampleTissueDto(uk.ac.bbsrc.tgac.miso.dto.SampleTissueDto) SampleTissueProcessingDto(uk.ac.bbsrc.tgac.miso.dto.SampleTissueProcessingDto) SampleClassService(uk.ac.bbsrc.tgac.miso.core.service.SampleClassService) 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) RunDto(uk.ac.bbsrc.tgac.miso.dto.run.RunDto) Value(org.springframework.beans.factory.annotation.Value) SampleDto(uk.ac.bbsrc.tgac.miso.dto.SampleDto) BulkPropagateTableBackend(uk.ac.bbsrc.tgac.miso.webapp.util.BulkPropagateTableBackend) Group(com.eaglegenomics.simlims.core.Group) LimsUtils(uk.ac.bbsrc.tgac.miso.core.util.LimsUtils) GetMapping(org.springframework.web.bind.annotation.GetMapping) Status(javax.ws.rs.core.Response.Status) SampleAliquot(uk.ac.bbsrc.tgac.miso.core.data.SampleAliquot) SampleTissue(uk.ac.bbsrc.tgac.miso.core.data.SampleTissue) LibraryService(uk.ac.bbsrc.tgac.miso.core.service.LibraryService) WhineyFunction(uk.ac.bbsrc.tgac.miso.core.util.WhineyFunction) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) IOException(java.io.IOException) ArrayRunService(uk.ac.bbsrc.tgac.miso.core.service.ArrayRunService) BoxService(uk.ac.bbsrc.tgac.miso.core.service.BoxService) BoxDto(uk.ac.bbsrc.tgac.miso.dto.BoxDto) ProjectService(uk.ac.bbsrc.tgac.miso.core.service.ProjectService) Collections(java.util.Collections) ArrayService(uk.ac.bbsrc.tgac.miso.core.service.ArrayService) Pool(uk.ac.bbsrc.tgac.miso.core.data.Pool) SopService(uk.ac.bbsrc.tgac.miso.core.service.SopService) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) RunDto(uk.ac.bbsrc.tgac.miso.dto.run.RunDto) DetailedSample(uk.ac.bbsrc.tgac.miso.core.data.DetailedSample) Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) ModelAndView(org.springframework.web.servlet.ModelAndView) NotFoundException(org.springframework.security.acls.model.NotFoundException) Dtos(uk.ac.bbsrc.tgac.miso.dto.Dtos) LibraryDto(uk.ac.bbsrc.tgac.miso.dto.LibraryDto) Pool(uk.ac.bbsrc.tgac.miso.core.data.Pool) DetailedSampleDto(uk.ac.bbsrc.tgac.miso.dto.DetailedSampleDto) SampleDto(uk.ac.bbsrc.tgac.miso.dto.SampleDto) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 30 with Sample

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

the class WorksetRestController method removeSamples.

@DeleteMapping("/{worksetId}/samples")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void removeSamples(@PathVariable(value = "worksetId", required = true) long worksetId, @RequestBody List<Long> sampleIds) throws IOException {
    Workset workset = getWorkset(worksetId);
    List<Sample> items = loadItems("Sample", sampleIds, sampleService);
    worksetService.removeSamples(workset, items);
}
Also used : Workset(uk.ac.bbsrc.tgac.miso.core.data.impl.workset.Workset) Sample(uk.ac.bbsrc.tgac.miso.core.data.Sample) WorksetSample(uk.ac.bbsrc.tgac.miso.core.data.impl.workset.WorksetSample) DeleteMapping(org.springframework.web.bind.annotation.DeleteMapping) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus)

Aggregations

Sample (uk.ac.bbsrc.tgac.miso.core.data.Sample)97 DetailedSample (uk.ac.bbsrc.tgac.miso.core.data.DetailedSample)60 Test (org.junit.Test)55 SampleImpl (uk.ac.bbsrc.tgac.miso.core.data.impl.SampleImpl)37 AbstractDAOTest (uk.ac.bbsrc.tgac.miso.AbstractDAOTest)24 TransferSample (uk.ac.bbsrc.tgac.miso.core.data.impl.transfer.TransferSample)19 SampleIdentity (uk.ac.bbsrc.tgac.miso.core.data.SampleIdentity)11 User (com.eaglegenomics.simlims.core.User)9 ArrayList (java.util.ArrayList)9 Project (uk.ac.bbsrc.tgac.miso.core.data.Project)9 SampleTissue (uk.ac.bbsrc.tgac.miso.core.data.SampleTissue)8 IOException (java.io.IOException)7 PostMapping (org.springframework.web.bind.annotation.PostMapping)7 Library (uk.ac.bbsrc.tgac.miso.core.data.Library)7 SampleStock (uk.ac.bbsrc.tgac.miso.core.data.SampleStock)7 Requisition (uk.ac.bbsrc.tgac.miso.core.data.impl.Requisition)7 WorksetSample (uk.ac.bbsrc.tgac.miso.core.data.impl.workset.WorksetSample)7 Date (java.util.Date)6 Criteria (org.hibernate.Criteria)6 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)6