Skip to content

Commit 60efaa5

Browse files
Continue adopting FileLike instead of File or Path (#584)
1 parent 63a78ba commit 60efaa5

File tree

9 files changed

+39
-57
lines changed

9 files changed

+39
-57
lines changed

SkylineToolsStore/src/org/labkey/skylinetoolsstore/SkylineToolsStoreController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1180,7 +1180,7 @@ public ModelAndView getView(DownloadFileForm form, BindException errors) throws
11801180
}
11811181
else
11821182
{
1183-
PageFlowUtil.streamFile(getViewContext().getResponse(), downloadFile, true);
1183+
PageFlowUtil.streamFile(getViewContext().getResponse(), downloadFile.toPath(), true);
11841184
return null;
11851185
}
11861186
}

lincs/src/org/labkey/lincs/LincsController.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
import org.labkey.lincs.psp.LincsPspUtil;
8888
import org.labkey.lincs.psp.PspEndpoint;
8989
import org.labkey.lincs.view.GctUtils;
90+
import org.labkey.vfs.FileLike;
9091
import org.springframework.beans.MutablePropertyValues;
9192
import org.springframework.validation.BindException;
9293
import org.springframework.validation.Errors;
@@ -144,35 +145,32 @@ public void addNavTrail(NavTree root)
144145
}
145146
}
146147

147-
private void copyFiles(Path gctDir, String outputFileBaseName, Path gct, File reportDir) throws IOException
148+
private void copyFiles(Path gctDir, String outputFileBaseName, Path gct, FileLike reportDir) throws IOException
148149
{
149150
// reportDir is a local directory under tomcat's temp directory
150-
File[] reportDirFiles = reportDir.listFiles(new FilenameFilter()
151+
List<FileLike> reportDirFiles = reportDir.getChildren((f) ->
151152
{
152-
@Override
153-
public boolean accept(File dir, String name)
154-
{
155-
return name.toLowerCase().endsWith(".txt")
153+
String name = f.getName();
154+
return name.toLowerCase().endsWith(".txt")
156155
|| name.toLowerCase().endsWith(".gct")
157156
|| name.equals("script.Rout");
158-
}
159157
});
160158

161159
// The report should create two files: lincs.gct and lincs.processed.gct
162160
// Copy both to the GCT folder
163-
for(File file: reportDirFiles)
161+
for(FileLike file: reportDirFiles)
164162
{
165163
if(file.getName().equalsIgnoreCase("lincs.gct"))
166164
{
167-
Files.copy(file.toPath(), gct, StandardCopyOption.REPLACE_EXISTING);
165+
Files.copy(file.toNioPathForRead(), gct, StandardCopyOption.REPLACE_EXISTING);
168166
}
169167
else if(file.getName().equalsIgnoreCase("console.txt"))
170168
{
171-
Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING);
169+
Files.copy(file.toNioPathForRead(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING);
172170
}
173171
else if(file.getName().equals("script.Rout"))
174172
{
175-
Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".script.Rout" ), StandardCopyOption.REPLACE_EXISTING);
173+
Files.copy(file.toNioPathForRead(), gctDir.resolve(outputFileBaseName + ".script.Rout" ), StandardCopyOption.REPLACE_EXISTING);
176174
}
177175
}
178176
}
@@ -306,11 +304,11 @@ public ApiResponse execute(GCTReportForm form, BindException errors) throws Exce
306304
}
307305
catch(Exception e)
308306
{
309-
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDir(getContainer().getId()));
307+
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDirFileLike(getContainer().getId()));
310308
throw new ApiUsageException("There was an error running the GCT R script.", e);
311309
}
312310

313-
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDir(getContainer().getId()));
311+
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDirFileLike(getContainer().getId()));
314312

315313
if(!Files.exists(downloadFile))
316314
{

lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public LincsPspPipelineJob(ViewBackgroundInfo info, PipeRoot root, ITargetedMSRu
4343
String baseLogFileName = FileUtil.makeFileNameWithTimestamp("LincsPSP_" + (_oldPspJob != null ? "rerun_" : "") + run.getBaseName().replace(" ", "_"));
4444

4545
LocalDirectory localDirectory = LocalDirectory.create(root, baseLogFileName,
46-
!root.isCloudRoot() ? root.getRootPath().getAbsolutePath() : FileUtil.getTempDirectory().getPath());
46+
!root.isCloudRoot() ? root.getRootFileLike() : FileUtil.getTempDirectoryFileLike());
4747
setLocalDirectory(localDirectory);
4848
setLogFile(localDirectory.determineLogFile());
4949

nextflow/src/org/labkey/nextflow/pipeline/NextFlowPipelineJob.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.labkey.vfs.FileLike;
2626

2727
import java.io.BufferedWriter;
28-
import java.io.File;
2928
import java.io.IOException;
3029
import java.io.InputStream;
3130
import java.nio.file.Files;
@@ -117,7 +116,7 @@ private static FileLike createConfig(Path configTemplate, FileLike parentDir, Fi
117116
@Override
118117
public String getDescription()
119118
{
120-
return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFilePaths().size(), "file") + " using config: " + config.getName();
119+
return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFiles().size(), "file") + " using config: " + config.getName();
121120
}
122121

123122
@Override
@@ -139,13 +138,13 @@ public AbstractFileAnalysisJob createSingleFileJob(FileLike file)
139138
}
140139

141140
@Override
142-
public File findInputFile(String name)
141+
public FileLike findInputFile(String name)
143142
{
144143
throw new UnsupportedOperationException();
145144
}
146145

147146
@Override
148-
public File findOutputFile(String name)
147+
public FileLike findOutputFile(String name)
149148
{
150149
return null;
151150
}

nextflow/src/org/labkey/nextflow/pipeline/NextFlowRunTask.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.labkey.vfs.FileLike;
2020

2121
import java.io.BufferedReader;
22-
import java.io.File;
2322
import java.io.IOException;
2423
import java.io.InputStream;
2524
import java.io.InputStreamReader;
@@ -76,7 +75,7 @@ public NextFlowRunTask(Factory factory, PipelineJob job)
7675
// Need to pass to the main process directly in the future to allow concurrent execution for different users
7776
ProcessBuilder secretsPB = new ProcessBuilder("nextflow", "secrets", "set", "PANORAMA_API_KEY", apiKey);
7877
log.info("Setting secrets");
79-
File dir = getJob().getLogFile().getParentFile();
78+
FileLike dir = getJob().getLogFileLike().getParent();
8079
getJob().runSubProcess(secretsPB, dir);
8180

8281
ProcessBuilder executionPB = new ProcessBuilder(getArgs());
@@ -85,9 +84,9 @@ public NextFlowRunTask(Factory factory, PipelineJob job)
8584
NextFlowPipelineJob.LOG.info("Finished executing NextFlow: {}", getJob().getJsonJobInfo(true));
8685

8786
RecordedAction action = new RecordedAction(ACTION_NAME);
88-
for (Path inputFile : getJob().getInputFilePaths())
87+
for (FileLike inputFile : getJob().getInputFiles())
8988
{
90-
action.addInput(inputFile.toFile(), SPECTRA_INPUT_ROLE);
89+
action.addInput(inputFile, SPECTRA_INPUT_ROLE);
9190
}
9291
addOutputs(action, getJob().getLogFilePath().getParent().resolve("reports"), log);
9392
addOutputs(action, getJob().getLogFilePath().getParent().resolve("results"), log);

panoramapublic/src/org/labkey/panoramapublic/PanoramaPublicController.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
import org.labkey.api.view.template.ClientDependency;
140140
import org.labkey.api.wiki.WikiRendererType;
141141
import org.labkey.api.wiki.WikiRenderingService;
142+
import org.labkey.api.writer.PrintWriters;
142143
import org.labkey.panoramapublic.bluesky.BlueskyApiClient;
143144
import org.labkey.panoramapublic.bluesky.BlueskyException;
144145
import org.labkey.panoramapublic.bluesky.BlueskySettingsManager;
@@ -4617,11 +4618,11 @@ private PxXml createPxXml(ExperimentAnnotations expAnnot, JournalExperiment je,
46174618
}
46184619
}
46194620

4620-
private File writePxXmlFile(String xmlString) throws PxException
4621+
private FileLike writePxXmlFile(String xmlString) throws PxException
46214622
{
4622-
File xml = getLocalFile(getContainer(), "px.xml"); // TODO: Add date time stamp
4623+
FileLike xml = getLocalFile(getContainer(), "px.xml"); // TODO: Add date time stamp
46234624

4624-
try (PrintWriter out = new PrintWriter(new FileWriter(xml, StandardCharsets.UTF_8)))
4625+
try (PrintWriter out = PrintWriters.getPrintWriter(xml.openOutputStream()))
46254626
{
46264627
out.write(xmlString);
46274628
}
@@ -4656,7 +4657,7 @@ public void assignPxId(boolean useTestDb, boolean testMode, String pxUser, Strin
46564657

46574658
private void validatePxXml(boolean useTestDb, String pxChangeLog, String pxUser, String pxPassword, BindException errors) throws PxException, ProteomeXchangeServiceException
46584659
{
4659-
File xmlFile = writePxXmlFile(createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true).getXml());
4660+
FileLike xmlFile = writePxXmlFile(createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true).getXml());
46604661
_pxResponse = ProteomeXchangeService.validatePxXml(xmlFile, useTestDb, pxUser, pxPassword);
46614662
if(ProteomeXchangeService.responseHasErrors(_pxResponse))
46624663
{
@@ -4677,7 +4678,7 @@ private void submitPxXml(boolean useTestDb, boolean testMode, String pxChangeLog
46774678
return;
46784679
}
46794680
PxXml pxXml = createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true);
4680-
File xmlFile = writePxXmlFile(pxXml.getXml());
4681+
FileLike xmlFile = writePxXmlFile(pxXml.getXml());
46814682
_pxResponse = ProteomeXchangeService.submitPxXml(xmlFile, useTestDb, pxUser, pxPassword);
46824683
if(ProteomeXchangeService.responseHasErrors(_pxResponse))
46834684
{
@@ -4699,7 +4700,7 @@ private void updatePxXml(boolean useTestDb, boolean testMode, String pxChangeLog
46994700
submitPxXml(useTestDb, testMode, pxChangeLog, pxUser, pxPassword, errors);
47004701
}
47014702

4702-
private static File getLocalFile(Container container, String fileName) throws PxException
4703+
private static FileLike getLocalFile(Container container, String fileName) throws PxException
47034704
{
47044705
// File.createTempFile()
47054706
java.nio.file.Path fileRoot = FileContentService.get().getFileRootPath(container, FileContentService.ContentType.files);
@@ -4713,7 +4714,7 @@ private static File getLocalFile(Container container, String fileName) throws Px
47134714
if (root != null)
47144715
{
47154716
LocalDirectory localDirectory = LocalDirectory.create(root);
4716-
return new File(localDirectory.getLocalDirectoryFile(), fileName);
4717+
return localDirectory.getLocalDirectoryFile().resolveChild(fileName);
47174718
}
47184719
else
47194720
{
@@ -4722,7 +4723,7 @@ private static File getLocalFile(Container container, String fileName) throws Px
47224723
}
47234724
else
47244725
{
4725-
return fileRoot.resolve(fileName).toFile();
4726+
return FileSystemLike.wrapFile(fileRoot).resolveChild(fileName);
47264727
}
47274728
}
47284729
}

panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentPipelineJob.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@
3434
import org.labkey.panoramapublic.model.Journal;
3535
import org.labkey.vfs.FileLike;
3636

37-
import java.io.File;
38-
import java.io.IOException;
39-
4037
/**
4138
* User: vsharma
4239
* Date: 8/21/2014
@@ -118,7 +115,7 @@ public String getDescription()
118115
}
119116

120117
@Override
121-
public TaskPipeline getTaskPipeline()
118+
public TaskPipeline<?> getTaskPipeline()
122119
{
123120
return PipelineJobService.get().getTaskPipeline(new TaskId(CopyExperimentPipelineJob.class));
124121
}
@@ -133,19 +130,6 @@ protected void finallyCleanUpLocalDirectory()
133130
}
134131
}
135132

136-
public static File getLogFileFor(PipeRoot root, ExperimentAnnotations experimentAnnotations) throws IOException
137-
{
138-
File rootDir = root.getLogDirectory();
139-
if (!rootDir.exists())
140-
{
141-
throw new IOException("Pipeline root directory " + rootDir.getAbsolutePath() + " does not exist.");
142-
}
143-
144-
String logFileName = "Experiment_" + experimentAnnotations.getExperimentId() + ".log";
145-
146-
return new File(rootDir, logFileName);
147-
}
148-
149133
@Override
150134
public ExperimentAnnotations getExpAnnotations()
151135
{

panoramapublic/src/org/labkey/panoramapublic/pipeline/PxDataValidationPipelineJob.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
import org.labkey.api.view.ViewBackgroundInfo;
1515
import org.labkey.panoramapublic.model.ExperimentAnnotations;
1616

17-
import java.io.File;
18-
1917
public class PxDataValidationPipelineJob extends PipelineJob implements PxDataValidationJobSupport
2018
{
2119
private final ExperimentAnnotations _experimentAnnotations;
@@ -41,7 +39,7 @@ public PxDataValidationPipelineJob(ViewBackgroundInfo info, PipeRoot root, Exper
4139
_description = String.format("Validating data for experiment Id: %d, validation Id: %d", experiment.getId(), validationId);
4240

4341
String baseLogFileName = FileUtil.makeFileNameWithTimestamp("Experiment_Validation_" + experiment.getExperimentId(), "log");
44-
setLogFile(new File(root.getLogDirectory(), baseLogFileName));
42+
setLogFile(root.getLogDirectory(true).resolveChild(baseLogFileName));
4543

4644
header("Validating data for a ProteomeXchange submission.");
4745
}

panoramapublic/src/org/labkey/panoramapublic/proteomexchange/ProteomeXchangeService.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,20 @@
1717

1818
import org.apache.hc.client5.http.classic.methods.HttpPost;
1919
import org.apache.hc.client5.http.entity.mime.FileBody;
20+
import org.apache.hc.client5.http.entity.mime.InputStreamBody;
2021
import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder;
2122
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
2223
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
2324
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
25+
import org.apache.hc.core5.http.ContentType;
2426
import org.apache.hc.core5.http.HttpEntity;
2527
import org.apache.hc.core5.http.ParseException;
2628
import org.apache.hc.core5.http.io.entity.EntityUtils;
2729
import org.apache.logging.log4j.Logger;
2830
import org.jetbrains.annotations.NotNull;
2931
import org.labkey.api.util.PageFlowUtil;
3032
import org.labkey.api.util.logging.LogHelper;
33+
import org.labkey.vfs.FileLike;
3134

3235
import java.io.File;
3336
import java.io.IOException;
@@ -49,17 +52,17 @@ private enum METHOD {submitDataset, validateXML, requestID}
4952

5053
private static final Logger LOG = LogHelper.getLogger(ProteomeXchangeService.class, "Handles requests to the ProteomeXchange server");
5154

52-
public static String validatePxXml(File pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
55+
public static String validatePxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
5356
{
5457
return postPxXml(pxxmlFile, testDatabase, user, pass, METHOD.validateXML);
5558
}
5659

57-
public static String submitPxXml(File pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
60+
public static String submitPxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
5861
{
5962
return postPxXml(pxxmlFile, testDatabase, user, pass, METHOD.submitDataset);
6063
}
6164

62-
private static String postPxXml(File pxxmlFile, boolean testDatabase, String user, String pass, METHOD method) throws ProteomeXchangeServiceException
65+
private static String postPxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass, METHOD method) throws ProteomeXchangeServiceException
6366
{
6467
String responseMessage;
6568
try {
@@ -118,12 +121,12 @@ public static String getPxId(boolean testDatabase, String user, String pass) thr
118121
}
119122

120123
@NotNull
121-
private static MultipartEntityBuilder getMultipartEntityBuilder(File pxxmlFile, boolean testDatabase, METHOD method, String user, String pass)
124+
private static MultipartEntityBuilder getMultipartEntityBuilder(FileLike pxxmlFile, boolean testDatabase, METHOD method, String user, String pass) throws IOException
122125
{
123126
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
124127
if(pxxmlFile != null)
125128
{
126-
builder.addPart("ProteomeXchangeXML", new FileBody(pxxmlFile));
129+
builder.addPart("ProteomeXchangeXML", new InputStreamBody(pxxmlFile.openInputStream(), ContentType.TEXT_XML, pxxmlFile.getName()));
127130
}
128131
builder.addTextBody("PXPartner", user);
129132
builder.addTextBody("authentication", pass);
@@ -140,7 +143,7 @@ private static MultipartEntityBuilder getMultipartEntityBuilder(File pxxmlFile,
140143
return builder;
141144
}
142145

143-
private static MultipartEntityBuilder getMultipartEntityBuilder(boolean testDatabase, METHOD method, String user, String pass)
146+
private static MultipartEntityBuilder getMultipartEntityBuilder(boolean testDatabase, METHOD method, String user, String pass) throws IOException
144147
{
145148
return getMultipartEntityBuilder(null, testDatabase, method, user, pass);
146149
}

0 commit comments

Comments
 (0)