11package org .labkey .sequenceanalysis .pipeline ;
22
33import org .json .JSONObject ;
4+ import org .labkey .api .collections .CaseInsensitiveHashMap ;
5+ import org .labkey .api .data .Container ;
46import org .labkey .api .exp .api .ExpData ;
57import org .labkey .api .module .ModuleLoader ;
68import org .labkey .api .pipeline .PipelineJob ;
79import org .labkey .api .pipeline .PipelineJobException ;
810import org .labkey .api .pipeline .RecordedAction ;
11+ import org .labkey .api .query .BatchValidationException ;
12+ import org .labkey .api .query .InvalidKeyException ;
13+ import org .labkey .api .query .QueryService ;
14+ import org .labkey .api .query .QueryUpdateServiceException ;
915import org .labkey .api .sequenceanalysis .SequenceOutputFile ;
1016import org .labkey .api .sequenceanalysis .pipeline .AbstractParameterizedOutputHandler ;
1117import org .labkey .api .sequenceanalysis .pipeline .ReferenceGenome ;
1622import org .labkey .api .sequenceanalysis .pipeline .ToolParameterDescriptor ;
1723import org .labkey .api .util .FileUtil ;
1824import org .labkey .sequenceanalysis .SequenceAnalysisModule ;
25+ import org .labkey .sequenceanalysis .SequenceAnalysisSchema ;
1926import org .labkey .sequenceanalysis .util .SequenceUtil ;
2027
2128import java .io .File ;
29+ import java .sql .SQLException ;
30+ import java .util .ArrayList ;
2231import java .util .Arrays ;
2332import java .util .List ;
33+ import java .util .Map ;
34+ import java .util .stream .Collectors ;
2435
2536public class ConvertToCramHandler extends AbstractParameterizedOutputHandler <SequenceOutputHandler .SequenceOutputProcessor >
2637{
@@ -128,6 +139,12 @@ private void checkCramAndIndex(SequenceOutputFile so) throws PipelineJobExceptio
128139 @ Override
129140 public void complete (PipelineJob job , List <SequenceOutputFile > inputs , List <SequenceOutputFile > outputsCreated , SequenceAnalysisJobSupport support ) throws PipelineJobException
130141 {
142+ List <Map <String , Object >> toUpdate = new ArrayList <>();
143+ List <Map <String , Object >> oldKeys = inputs .stream ().map (x -> {
144+ Map <String , Object > row = new CaseInsensitiveHashMap <>();
145+ row .put ("rowid" , x .getRowid ());
146+ return (row );
147+ }).collect (Collectors .toList ());
131148
132149 for (SequenceOutputFile so : inputs )
133150 {
@@ -137,7 +154,29 @@ public void complete(PipelineJob job, List<SequenceOutputFile> inputs, List<Sequ
137154 job .getLogger ().info ("Updating ExpData record with new filepath: " + cram .getPath ());
138155 ExpData d = so .getExpData ();
139156 d .setDataFileURI (cram .toURI ());
157+ d .setName (cram .getName ());
140158 d .save (job .getUser ());
159+
160+ if (so .getName ().contains (".bam" ))
161+ {
162+ Map <String , Object > row = new CaseInsensitiveHashMap <>();
163+ row .put ("rowid" , so .getRowid ());
164+ row .put ("container" , so .getContainer ());
165+ row .put ("name" , so .getName ().replaceAll ("\\ .bam" , "\\ .cram" ));
166+ row .put ("description" , (so .getDescription () == null ? "" : so .getDescription () + "\n " ) + "Converted from BAM to CRAM" );
167+ toUpdate .add (row );
168+ }
169+ }
170+
171+ try
172+ {
173+ Container target = job .getContainer ().isWorkbook () ? job .getContainer ().getParent () : job .getContainer ();
174+ QueryService .get ().getUserSchema (job .getUser (), target , SequenceAnalysisSchema .SCHEMA_NAME ).getTable (SequenceAnalysisSchema .TABLE_OUTPUTFILES ).getUpdateService ().updateRows (job .getUser (), target , toUpdate , oldKeys , null , null );
175+ }
176+ catch (QueryUpdateServiceException | InvalidKeyException | BatchValidationException | SQLException e )
177+ {
178+ throw new PipelineJobException (e );
179+
141180 }
142181 }
143182 }
0 commit comments