use of ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFile in project irida by phac-nml.
the class GzipFileProcessorTest method handleCompressedFileWithoutGzExtension.
@Test
public void handleCompressedFileWithoutGzExtension() throws IOException {
// the file processor should decompress the file, then update the
// sequence file in the database.
SequenceFile sf = constructSequenceFile();
SequenceFile sfUpdated = new SequenceFile();
sfUpdated.setFile(sf.getFile());
final Long id = 1L;
sf.setId(id);
// compress the file, update the sequence file reference
Path uncompressed = sf.getFile();
Path compressed = Files.createTempFile(null, null);
GZIPOutputStream out = new GZIPOutputStream(Files.newOutputStream(compressed));
Files.copy(uncompressed, out);
out.close();
sf.setFile(compressed);
SingleEndSequenceFile so = new SingleEndSequenceFile(sf);
fileProcessor.process(so);
ArgumentCaptor<SequenceFile> argument = ArgumentCaptor.forClass(SequenceFile.class);
verify(sequenceFileRepository).save(argument.capture());
SequenceFile modified = argument.getValue();
String uncompressedFileContents = new String(Files.readAllBytes(modified.getFile()));
assertEquals("uncompressed file and file in database should be the same.", FILE_CONTENTS, uncompressedFileContents);
Files.delete(uncompressed);
if (Files.exists(compressed)) {
Files.delete(compressed);
}
}
use of ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFile in project irida by phac-nml.
the class RESTSampleSequenceFilesController method getSampleSequenceFiles.
/**
* Get the {@link SequenceFile} entities associated with a specific
* {@link Sample}.
*
* @param sampleId
* the identifier for the {@link Sample}.
* @return the {@link SequenceFile} entities associated with the
* {@link Sample}.
*/
@RequestMapping(value = "/api/samples/{sampleId}/sequenceFiles", method = RequestMethod.GET)
public ModelMap getSampleSequenceFiles(@PathVariable Long sampleId) {
ModelMap modelMap = new ModelMap();
logger.debug("Reading seq files for sample " + sampleId);
Sample sample = sampleService.read(sampleId);
Collection<SampleSequencingObjectJoin> sequencingObjectsForSample = sequencingObjectService.getSequencingObjectsForSample(sample);
ResourceCollection<SequenceFile> resources = new ResourceCollection<>();
/*
* Note: This is a kind of antiquated seeing we should be referencing
* sequencing objects instead. At the very least the link we're pointing
* to here should be going through the sequencing object
*/
for (SampleSequencingObjectJoin r : sequencingObjectsForSample) {
for (SequenceFile sf : r.getObject().getFiles()) {
String fileLabel = objectLabels.get(r.getObject().getClass());
sf.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).readSequenceFileForSequencingObject(sampleId, fileLabel, r.getObject().getId(), sf.getId())).withSelfRel());
resources.add(sf);
}
}
// add a link to this collection
resources.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).getSampleSequenceFiles(sampleId)).withSelfRel());
// add a link back to the sample
resources.add(linkTo(methodOn(RESTProjectSamplesController.class).getSample(sampleId)).withRel(RESTSampleSequenceFilesController.REL_SAMPLE));
resources.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).listSequencingObjectsOfTypeForSample(sample.getId(), RESTSampleSequenceFilesController.objectLabels.get(SequenceFilePair.class))).withRel(RESTSampleSequenceFilesController.REL_SAMPLE_SEQUENCE_FILE_PAIRS));
resources.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).listSequencingObjectsOfTypeForSample(sample.getId(), RESTSampleSequenceFilesController.objectLabels.get(SingleEndSequenceFile.class))).withRel(RESTSampleSequenceFilesController.REL_SAMPLE_SEQUENCE_FILE_UNPAIRED));
modelMap.addAttribute(RESTGenericController.RESOURCE_NAME, resources);
return modelMap;
}
use of ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFile in project irida by phac-nml.
the class RESTSampleSequenceFilesController method readSequenceFileForSequencingObject.
/**
* Read a single {@link SequenceFile} for a given {@link Sample} and
* {@link SequencingObject}
*
* @param sampleId
* ID of the {@link Sample}
* @param objectType
* type of {@link SequencingObject}
* @param objectId
* id of the {@link SequencingObject}
* @param fileId
* ID of the {@link SequenceFile} to read
* @return a {@link SequenceFile}
*/
@RequestMapping(value = "/api/samples/{sampleId}/{objectType}/{objectId}/files/{fileId}", method = RequestMethod.GET)
public ModelMap readSequenceFileForSequencingObject(@PathVariable Long sampleId, @PathVariable String objectType, @PathVariable Long objectId, @PathVariable Long fileId) {
ModelMap modelMap = new ModelMap();
Sample sample = sampleService.read(sampleId);
SequencingObject readSequenceFilePairForSample = sequencingObjectService.readSequencingObjectForSample(sample, objectId);
Optional<SequenceFile> findFirst = readSequenceFilePairForSample.getFiles().stream().filter(f -> f.getId().equals(fileId)).findFirst();
if (!findFirst.isPresent()) {
throw new EntityNotFoundException("File with id " + fileId + " is not associated with this sequencing object");
}
SequenceFile file = findFirst.get();
file.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).getSampleSequenceFiles(sampleId)).withRel(REL_SAMPLE_SEQUENCE_FILES));
file.add(linkTo(methodOn(RESTProjectSamplesController.class).getSample(sampleId)).withRel(REL_SAMPLE));
file.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).readSequencingObject(sampleId, objectType, objectId)).withRel(REL_SEQ_OBJECT));
file.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).readQCForSequenceFile(sampleId, objectType, objectId, fileId)).withRel(REL_SEQ_QC));
file.add(linkTo(methodOn(RESTSampleSequenceFilesController.class).readSequenceFileForSequencingObject(sampleId, objectType, objectId, fileId)).withSelfRel());
modelMap.addAttribute(RESTGenericController.RESOURCE_NAME, file);
return modelMap;
}
use of ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFile in project irida by phac-nml.
the class FastaView method renderMergedOutputModel.
/**
* {@inheritDoc}
*/
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
SequenceFile sfr = (SequenceFile) model.get(RESTGenericController.RESOURCE_NAME);
Path fileContent = sfr.getFile();
String filename = fileContent.getFileName().toString();
logger.trace("Sending file to client [" + filename + "]");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"");
response.setHeader(HttpHeaders.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(Files.size(fileContent)));
OutputStream os = response.getOutputStream();
Files.copy(fileContent, os);
os.flush();
os.close();
}
use of ca.corefacility.bioinformatics.irida.model.sequenceFile.SequenceFile in project irida by phac-nml.
the class GenbankView method renderMergedOutputModel.
/**
* {@inheritDoc}
*/
@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
SequenceFile sfr = (SequenceFile) model.get(RESTGenericController.RESOURCE_NAME);
Path fileContent = sfr.getFile();
String filename = fileContent.getFileName().toString();
logger.trace("Sending file to client [" + filename + "]");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"");
response.setHeader(HttpHeaders.CONTENT_TYPE, DEFAULT_CONTENT_TYPE);
response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(Files.size(fileContent)));
OutputStream os = response.getOutputStream();
Files.copy(fileContent, os);
os.flush();
os.close();
}
Aggregations