Skip to content

Commit 20a9f93

Browse files
Merge pull request #318 from LabKey/fb_filesystemlike
FileSystemLike
2 parents 89c1616 + 9c9106f commit 20a9f93

File tree

6 files changed

+75
-60
lines changed

6 files changed

+75
-60
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisController.java

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
import org.labkey.sequenceanalysis.util.ChainFileValidator;
171171
import org.labkey.sequenceanalysis.util.FastqUtils;
172172
import org.labkey.sequenceanalysis.util.SequenceUtil;
173+
import org.labkey.vfs.FileLike;
173174
import org.springframework.beans.PropertyValues;
174175
import org.springframework.validation.BindException;
175176
import org.springframework.validation.Errors;
@@ -2016,30 +2017,30 @@ else if (!d.getFile().exists())
20162017
}
20172018
else if (o.has("relPath") || o.has("fileName"))
20182019
{
2019-
File f;
2020+
FileLike f;
20202021
if (o.opt("relPath") == null)
20212022
{
20222023
if (path != null)
20232024
{
2024-
f = pr.resolvePath(path);
2025-
f = new File(f, o.getString("fileName"));
2025+
f = pr.resolvePathToFileLike(path);
2026+
f = f.resolveFile(Path.parse(o.getString("fileName")));
20262027
}
20272028
else
20282029
{
2029-
f = pr.resolvePath(o.getString("fileName"));
2030+
f = pr.resolvePathToFileLike(o.getString("fileName"));
20302031
}
20312032
}
20322033
else
20332034
{
2034-
f = pr.resolvePath(o.getString("relPath"));
2035+
f = pr.resolvePathToFileLike(o.getString("relPath"));
20352036
}
20362037

20372038
if (f == null || !f.exists())
20382039
{
20392040
throw new PipelineValidationException("Unknown file: " + o.getString("relPath") + " / " + o.getString("fileName"));
20402041
}
20412042

2042-
ret.add(f);
2043+
ret.add(f.toNioPathForRead().toFile());
20432044
}
20442045
else if (o.opt("filePath") != null)
20452046
{
@@ -2555,8 +2556,8 @@ protected File getTargetFile(String filename) throws IOException
25552556

25562557
try
25572558
{
2558-
File targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer(), "sequenceOutputs");
2559-
return AssayFileWriter.findUniqueFileName(filename, targetDirectory);
2559+
FileLike targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer(), "sequenceOutputs");
2560+
return AssayFileWriter.findUniqueFileName(filename, targetDirectory).toNioPathForWrite().toFile();
25602561
}
25612562
catch (ExperimentException e)
25622563
{
@@ -2688,8 +2689,8 @@ protected File getTargetFile(String filename) throws IOException
26882689

26892690
try
26902691
{
2691-
File targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer());
2692-
return AssayFileWriter.findUniqueFileName(filename, targetDirectory);
2692+
FileLike targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer());
2693+
return AssayFileWriter.findUniqueFileName(filename, targetDirectory).toNioPathForWrite().toFile();
26932694
}
26942695
catch (ExperimentException e)
26952696
{
@@ -2853,8 +2854,8 @@ protected File getTargetFile(String filename) throws IOException
28532854

28542855
try
28552856
{
2856-
File targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer());
2857-
return AssayFileWriter.findUniqueFileName(filename, targetDirectory);
2857+
FileLike targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer());
2858+
return AssayFileWriter.findUniqueFileName(filename, targetDirectory).toNioPathForWrite().toFile();
28582859
}
28592860
catch (ExperimentException e)
28602861
{
@@ -3643,7 +3644,7 @@ else if (fastaFileType.isType(data.getFile()))
36433644
}
36443645
}
36453646

3646-
File dict = new File(data.getFile().getParentFile(), FileUtil.getBaseName(data.getFile()) + ".dict");
3647+
File dict = FileUtil.appendName(data.getFile().getParentFile(), FileUtil.getBaseName(data.getFile()) + ".dict");
36473648
if (dict.exists())
36483649
{
36493650
files.add(dict);
@@ -4142,10 +4143,10 @@ public ApiResponse execute(ImportOutputFilesForm form, BindException errors) thr
41424143
return null;
41434144
}
41444145

4145-
File targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer(), "sequenceOutputs");
4146+
FileLike targetDirectory = AssayFileWriter.ensureUploadDirectory(getContainer(), "sequenceOutputs");
41464147
if (!targetDirectory.exists())
41474148
{
4148-
targetDirectory.mkdirs();
4149+
targetDirectory.mkdir();
41494150
}
41504151

41514152
if (form.getRecords() != null)
@@ -4155,7 +4156,7 @@ public ApiResponse execute(ImportOutputFilesForm form, BindException errors) thr
41554156
Map<File, Map<String, Object>> toCreate = new HashMap<>();
41564157
for (JSONObject o : JsonUtil.toJSONObjectList(arr))
41574158
{
4158-
File file = new File(dirData, o.getString("fileName"));
4159+
File file = FileUtil.appendName(dirData, o.getString("fileName"));
41594160
if (!file.exists())
41604161
{
41614162
errors.reject(ERROR_MSG, "Unknown file: " + file.getPath());
@@ -4196,8 +4197,8 @@ public ApiResponse execute(ImportOutputFilesForm form, BindException errors) thr
41964197

41974198
for (File file : toCreate.keySet())
41984199
{
4199-
File target = AssayFileWriter.findUniqueFileName(file.getName(), targetDirectory);
4200-
FileUtils.moveFile(file, target);
4200+
FileLike target = AssayFileWriter.findUniqueFileName(file.getName(), targetDirectory);
4201+
FileUtils.moveFile(file, target.toNioPathForWrite().toFile());
42014202

42024203
ExpData data = ExperimentService.get().createData(getContainer(), new DataType("Sequence Output"));
42034204
data.setName(file.getName());
@@ -4236,14 +4237,14 @@ public ApiResponse execute(ImportOutputFilesForm form, BindException errors) thr
42364237
}
42374238

42384239
_log.info("moving associated file: " + idx.getPath() + ", to: " + idxTargetName);
4239-
File idxTarget = new File(targetDirectory, idxTargetName);
4240+
FileLike idxTarget = targetDirectory.resolveChild(idxTargetName);
42404241
if (idxTarget.exists())
42414242
{
42424243
_log.error("target already exists, skipping: " + idxTargetName);
42434244
}
42444245
else
42454246
{
4246-
FileUtils.moveFile(idx, idxTarget);
4247+
FileUtils.moveFile(idx, idxTarget.toNioPathForWrite().toFile());
42474248

42484249
ExpData idxData = ExperimentService.get().createData(getContainer(), new DataType("Sequence Output"));
42494250
idxData.setName(idxTarget.getName());

SequenceAnalysis/src/org/labkey/sequenceanalysis/analysis/PicardAlignmentMetricsHandler.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public void complete(JobContext ctx, List<SequenceOutputFile> inputs, List<Seque
171171
File outputDir = ((SequenceOutputHandlerJob)ctx.getJob()).getWebserverDir(false);
172172
List<File> metricsFiles = new ArrayList<>();
173173

174-
File mf = new File(outputDir, FileUtil.getBaseName(o.getFile()) + ".summary.metrics");
174+
File mf = FileUtil.appendName(outputDir, FileUtil.getBaseName(o.getFile()) + ".summary.metrics");
175175
if (mf.exists())
176176
{
177177
metricsFiles.add(mf);
@@ -181,7 +181,7 @@ else if (collectSummary)
181181
throw new PipelineJobException("Missing file: " + mf.getPath());
182182
}
183183

184-
File mf2 = new File(outputDir, FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics");
184+
File mf2 = FileUtil.appendName(outputDir, FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics");
185185
if (mf2.exists())
186186
{
187187
metricsFiles.add(mf2);
@@ -199,7 +199,7 @@ else if (collectInsertSize)
199199
}
200200
}
201201

202-
File mf3 = new File(outputDir, FileUtil.getBaseName(o.getFile()) + ".wgs.metrics");
202+
File mf3 = FileUtil.appendName(outputDir, FileUtil.getBaseName(o.getFile()) + ".wgs.metrics");
203203
if (mf3.exists())
204204
{
205205
metricsFiles.add(mf3);
@@ -209,7 +209,7 @@ else if (collectWgs)
209209
throw new PipelineJobException("Missing file: " + mf3.getPath());
210210
}
211211

212-
File mf4 = new File(outputDir, FileUtil.getBaseName(o.getFile()) + ".wgsNonZero.metrics");
212+
File mf4 = FileUtil.appendName(outputDir, FileUtil.getBaseName(o.getFile()) + ".wgsNonZero.metrics");
213213
if (mf4.exists())
214214
{
215215
metricsFiles.add(mf4);
@@ -284,7 +284,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
284284
{
285285
job.getLogger().info("calculating summary metrics");
286286
job.setStatus(PipelineJob.TaskStatus.running, "CALCULATING SUMMARY METRICS");
287-
File metricsFile = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".summary.metrics");
287+
File metricsFile = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".summary.metrics");
288288
AlignmentSummaryMetricsWrapper wrapper = new AlignmentSummaryMetricsWrapper(job.getLogger());
289289
wrapper.executeCommand(o.getFile(), ctx.getSequenceSupport().getCachedGenome(o.getLibrary_id()).getWorkingFastaFile(), metricsFile);
290290
}
@@ -293,7 +293,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
293293
{
294294
job.getLogger().info("calculating wgs metrics");
295295
job.setStatus(PipelineJob.TaskStatus.running, "CALCULATING WGS METRICS");
296-
File wgsMetricsFile = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".wgs.metrics");
296+
File wgsMetricsFile = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".wgs.metrics");
297297
CollectWgsMetricsWrapper wgsWrapper = new CollectWgsMetricsWrapper(job.getLogger());
298298
wgsWrapper.executeCommand(o.getFile(), wgsMetricsFile, ctx.getSequenceSupport().getCachedGenome(o.getLibrary_id()).getWorkingFastaFile());
299299
}
@@ -302,7 +302,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
302302
{
303303
job.getLogger().info("calculating wgs metrics over non zero positions");
304304
job.setStatus(PipelineJob.TaskStatus.running, "CALCULATING WGS METRICS");
305-
File wgsMetricsFile = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".wgsNonZero.metrics");
305+
File wgsMetricsFile = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".wgsNonZero.metrics");
306306
CollectWgsMetricsWithNonZeroCoverageWrapper wgsWrapper = new CollectWgsMetricsWithNonZeroCoverageWrapper(job.getLogger());
307307
wgsWrapper.executeCommand(o.getFile(), wgsMetricsFile, ctx.getSequenceSupport().getCachedGenome(o.getLibrary_id()).getWorkingFastaFile());
308308
}
@@ -311,8 +311,8 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
311311
{
312312
job.getLogger().info("calculating insert size metrics");
313313
job.setStatus(PipelineJob.TaskStatus.running, "CALCULATING INSERT SIZE METRICS");
314-
File metricsFile = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics");
315-
File metricsHistogram = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics.pdf");
314+
File metricsFile = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics");
315+
File metricsHistogram = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".insertsize.metrics.pdf");
316316
CollectInsertSizeMetricsWrapper wrapper = new CollectInsertSizeMetricsWrapper(job.getLogger());
317317
wrapper.executeCommand(o.getFile(), metricsFile, metricsHistogram, ctx.getSequenceSupport().getCachedGenome(o.getLibrary_id()).getWorkingFastaFile());
318318
}
@@ -323,7 +323,7 @@ public void processFilesRemote(List<SequenceOutputFile> inputFiles, JobContext c
323323
job.setStatus(PipelineJob.TaskStatus.running, "RUNNING MARKDUPLICATES");
324324
MarkDuplicatesWrapper wrapper = new MarkDuplicatesWrapper(job.getLogger());
325325
File metricsFile = wrapper.getMetricsFile(o.getFile());
326-
File tempBam = new File(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".markDuplicates.bam");
326+
File tempBam = FileUtil.appendName(ctx.getOutputDir(), FileUtil.getBaseName(o.getFile()) + ".markDuplicates.bam");
327327
ctx.getFileManager().addIntermediateFile(tempBam);
328328
ctx.getFileManager().addIntermediateFile(SequenceUtil.getExpectedIndex(tempBam));
329329

SequenceAnalysis/src/org/labkey/sequenceanalysis/pipeline/ReferenceLibraryPipelineJob.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.labkey.sequenceanalysis.SequenceAnalysisManager;
2323
import org.labkey.sequenceanalysis.SequenceAnalysisSchema;
2424
import org.labkey.sequenceanalysis.model.ReferenceLibraryMember;
25+
import org.labkey.vfs.FileLike;
26+
import org.labkey.vfs.FileSystemLike;
2527

2628
import java.io.File;
2729
import java.io.IOException;
@@ -107,7 +109,7 @@ protected void writeParameters(JSONObject params) throws IOException
107109

108110
public File getSerializedLibraryMembersFile()
109111
{
110-
return new File(getDataDirectory(), FileUtil.getBaseName(getLogFile()) + ".json");
112+
return FileUtil.appendName(getDataDirectory(), FileUtil.getBaseName(getLogFile()) + ".json");
111113
}
112114

113115
//for recreating an existing library
@@ -193,7 +195,7 @@ public boolean isCreateNew()
193195
}
194196

195197
@Override
196-
protected File createLocalDirectory(PipeRoot pipeRoot)
198+
protected FileLike createLocalDirectory(PipeRoot pipeRoot)
197199
{
198200
if (PipelineJobService.get().getLocationType() != PipelineJobService.LocationType.WebServer)
199201
{
@@ -211,7 +213,7 @@ protected File createLocalDirectory(PipeRoot pipeRoot)
211213
outputDir.mkdirs();
212214
}
213215

214-
return outputDir;
216+
return new FileSystemLike.Builder(outputDir).tempDir().root();
215217
}
216218

217219
@Override

0 commit comments

Comments
 (0)