Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1180,7 +1180,7 @@ public ModelAndView getView(DownloadFileForm form, BindException errors) throws
}
else
{
PageFlowUtil.streamFile(getViewContext().getResponse(), downloadFile, true);
PageFlowUtil.streamFile(getViewContext().getResponse(), downloadFile.toPath(), true);
return null;
}
}
Expand Down
24 changes: 11 additions & 13 deletions lincs/src/org/labkey/lincs/LincsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
import org.labkey.lincs.psp.LincsPspUtil;
import org.labkey.lincs.psp.PspEndpoint;
import org.labkey.lincs.view.GctUtils;
import org.labkey.vfs.FileLike;
import org.springframework.beans.MutablePropertyValues;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
Expand Down Expand Up @@ -144,35 +145,32 @@ public void addNavTrail(NavTree root)
}
}

private void copyFiles(Path gctDir, String outputFileBaseName, Path gct, File reportDir) throws IOException
private void copyFiles(Path gctDir, String outputFileBaseName, Path gct, FileLike reportDir) throws IOException
{
// reportDir is a local directory under tomcat's temp directory
File[] reportDirFiles = reportDir.listFiles(new FilenameFilter()
List<FileLike> reportDirFiles = reportDir.getChildren((f) ->
{
@Override
public boolean accept(File dir, String name)
{
return name.toLowerCase().endsWith(".txt")
String name = f.getName();
return name.toLowerCase().endsWith(".txt")
|| name.toLowerCase().endsWith(".gct")
|| name.equals("script.Rout");
}
});

// The report should create two files: lincs.gct and lincs.processed.gct
// Copy both to the GCT folder
for(File file: reportDirFiles)
for(FileLike file: reportDirFiles)
{
if(file.getName().equalsIgnoreCase("lincs.gct"))
{
Files.copy(file.toPath(), gct, StandardCopyOption.REPLACE_EXISTING);
Files.copy(file.toNioPathForRead(), gct, StandardCopyOption.REPLACE_EXISTING);
}
else if(file.getName().equalsIgnoreCase("console.txt"))
{
Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING);
Files.copy(file.toNioPathForRead(), gctDir.resolve(outputFileBaseName + ".console.txt" ), StandardCopyOption.REPLACE_EXISTING);
}
else if(file.getName().equals("script.Rout"))
{
Files.copy(file.toPath(), gctDir.resolve(outputFileBaseName + ".script.Rout" ), StandardCopyOption.REPLACE_EXISTING);
Files.copy(file.toNioPathForRead(), gctDir.resolve(outputFileBaseName + ".script.Rout" ), StandardCopyOption.REPLACE_EXISTING);
}
}
}
Expand Down Expand Up @@ -306,11 +304,11 @@ public ApiResponse execute(GCTReportForm form, BindException errors) throws Exce
}
catch(Exception e)
{
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDir(getContainer().getId()));
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDirFileLike(getContainer().getId()));
throw new ApiUsageException("There was an error running the GCT R script.", e);
}

copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDir(getContainer().getId()));
copyFiles(gctDir, outputFileBaseName, downloadFile, rreport.getReportDirFileLike(getContainer().getId()));

if(!Files.exists(downloadFile))
{
Expand Down
2 changes: 1 addition & 1 deletion lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public LincsPspPipelineJob(ViewBackgroundInfo info, PipeRoot root, ITargetedMSRu
String baseLogFileName = FileUtil.makeFileNameWithTimestamp("LincsPSP_" + (_oldPspJob != null ? "rerun_" : "") + run.getBaseName().replace(" ", "_"));

LocalDirectory localDirectory = LocalDirectory.create(root, baseLogFileName,
!root.isCloudRoot() ? root.getRootPath().getAbsolutePath() : FileUtil.getTempDirectory().getPath());
!root.isCloudRoot() ? root.getRootFileLike() : FileUtil.getTempDirectoryFileLike());
setLocalDirectory(localDirectory);
setLogFile(localDirectory.determineLogFile());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.labkey.vfs.FileLike;

import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
Expand Down Expand Up @@ -117,7 +116,7 @@ private static FileLike createConfig(Path configTemplate, FileLike parentDir, Fi
@Override
public String getDescription()
{
return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFilePaths().size(), "file") + " using config: " + config.getName();
return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFiles().size(), "file") + " using config: " + config.getName();
}

@Override
Expand All @@ -139,13 +138,13 @@ public AbstractFileAnalysisJob createSingleFileJob(FileLike file)
}

@Override
public File findInputFile(String name)
public FileLike findInputFile(String name)
{
throw new UnsupportedOperationException();
}

@Override
public File findOutputFile(String name)
public FileLike findOutputFile(String name)
{
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import org.labkey.vfs.FileLike;

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

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

RecordedAction action = new RecordedAction(ACTION_NAME);
for (Path inputFile : getJob().getInputFilePaths())
for (FileLike inputFile : getJob().getInputFiles())
{
action.addInput(inputFile.toFile(), SPECTRA_INPUT_ROLE);
action.addInput(inputFile, SPECTRA_INPUT_ROLE);
}
addOutputs(action, getJob().getLogFilePath().getParent().resolve("reports"), log);
addOutputs(action, getJob().getLogFilePath().getParent().resolve("results"), log);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
import org.labkey.api.view.template.ClientDependency;
import org.labkey.api.wiki.WikiRendererType;
import org.labkey.api.wiki.WikiRenderingService;
import org.labkey.api.writer.PrintWriters;
import org.labkey.panoramapublic.bluesky.BlueskyApiClient;
import org.labkey.panoramapublic.bluesky.BlueskyException;
import org.labkey.panoramapublic.bluesky.BlueskySettingsManager;
Expand Down Expand Up @@ -4617,11 +4618,11 @@ private PxXml createPxXml(ExperimentAnnotations expAnnot, JournalExperiment je,
}
}

private File writePxXmlFile(String xmlString) throws PxException
private FileLike writePxXmlFile(String xmlString) throws PxException
{
File xml = getLocalFile(getContainer(), "px.xml"); // TODO: Add date time stamp
FileLike xml = getLocalFile(getContainer(), "px.xml"); // TODO: Add date time stamp

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

private void validatePxXml(boolean useTestDb, String pxChangeLog, String pxUser, String pxPassword, BindException errors) throws PxException, ProteomeXchangeServiceException
{
File xmlFile = writePxXmlFile(createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true).getXml());
FileLike xmlFile = writePxXmlFile(createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true).getXml());
_pxResponse = ProteomeXchangeService.validatePxXml(xmlFile, useTestDb, pxUser, pxPassword);
if(ProteomeXchangeService.responseHasErrors(_pxResponse))
{
Expand All @@ -4677,7 +4678,7 @@ private void submitPxXml(boolean useTestDb, boolean testMode, String pxChangeLog
return;
}
PxXml pxXml = createPxXml(_expAnnot, _journalExperiment, _submission, _validationStatus, pxChangeLog, true);
File xmlFile = writePxXmlFile(pxXml.getXml());
FileLike xmlFile = writePxXmlFile(pxXml.getXml());
_pxResponse = ProteomeXchangeService.submitPxXml(xmlFile, useTestDb, pxUser, pxPassword);
if(ProteomeXchangeService.responseHasErrors(_pxResponse))
{
Expand All @@ -4699,7 +4700,7 @@ private void updatePxXml(boolean useTestDb, boolean testMode, String pxChangeLog
submitPxXml(useTestDb, testMode, pxChangeLog, pxUser, pxPassword, errors);
}

private static File getLocalFile(Container container, String fileName) throws PxException
private static FileLike getLocalFile(Container container, String fileName) throws PxException
{
// File.createTempFile()
java.nio.file.Path fileRoot = FileContentService.get().getFileRootPath(container, FileContentService.ContentType.files);
Expand All @@ -4713,7 +4714,7 @@ private static File getLocalFile(Container container, String fileName) throws Px
if (root != null)
{
LocalDirectory localDirectory = LocalDirectory.create(root);
return new File(localDirectory.getLocalDirectoryFile(), fileName);
return localDirectory.getLocalDirectoryFile().resolveChild(fileName);
}
else
{
Expand All @@ -4722,7 +4723,7 @@ private static File getLocalFile(Container container, String fileName) throws Px
}
else
{
return fileRoot.resolve(fileName).toFile();
return FileSystemLike.wrapFile(fileRoot).resolveChild(fileName);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@
import org.labkey.panoramapublic.model.Journal;
import org.labkey.vfs.FileLike;

import java.io.File;
import java.io.IOException;

/**
* User: vsharma
* Date: 8/21/2014
Expand Down Expand Up @@ -118,7 +115,7 @@ public String getDescription()
}

@Override
public TaskPipeline getTaskPipeline()
public TaskPipeline<?> getTaskPipeline()
{
return PipelineJobService.get().getTaskPipeline(new TaskId(CopyExperimentPipelineJob.class));
}
Expand All @@ -133,19 +130,6 @@ protected void finallyCleanUpLocalDirectory()
}
}

public static File getLogFileFor(PipeRoot root, ExperimentAnnotations experimentAnnotations) throws IOException
{
File rootDir = root.getLogDirectory();
if (!rootDir.exists())
{
throw new IOException("Pipeline root directory " + rootDir.getAbsolutePath() + " does not exist.");
}

String logFileName = "Experiment_" + experimentAnnotations.getExperimentId() + ".log";

return new File(rootDir, logFileName);
}

@Override
public ExperimentAnnotations getExpAnnotations()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import org.labkey.api.view.ViewBackgroundInfo;
import org.labkey.panoramapublic.model.ExperimentAnnotations;

import java.io.File;

public class PxDataValidationPipelineJob extends PipelineJob implements PxDataValidationJobSupport
{
private final ExperimentAnnotations _experimentAnnotations;
Expand All @@ -41,7 +39,7 @@ public PxDataValidationPipelineJob(ViewBackgroundInfo info, PipeRoot root, Exper
_description = String.format("Validating data for experiment Id: %d, validation Id: %d", experiment.getId(), validationId);

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

header("Validating data for a ProteomeXchange submission.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,20 @@

import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.client5.http.entity.mime.FileBody;
import org.apache.hc.client5.http.entity.mime.InputStreamBody;
import org.apache.hc.client5.http.entity.mime.MultipartEntityBuilder;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.HttpEntity;
import org.apache.hc.core5.http.ParseException;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.api.util.logging.LogHelper;
import org.labkey.vfs.FileLike;

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

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

public static String validatePxXml(File pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
public static String validatePxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
{
return postPxXml(pxxmlFile, testDatabase, user, pass, METHOD.validateXML);
}

public static String submitPxXml(File pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
public static String submitPxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass) throws ProteomeXchangeServiceException
{
return postPxXml(pxxmlFile, testDatabase, user, pass, METHOD.submitDataset);
}

private static String postPxXml(File pxxmlFile, boolean testDatabase, String user, String pass, METHOD method) throws ProteomeXchangeServiceException
private static String postPxXml(FileLike pxxmlFile, boolean testDatabase, String user, String pass, METHOD method) throws ProteomeXchangeServiceException
{
String responseMessage;
try {
Expand Down Expand Up @@ -118,12 +121,12 @@ public static String getPxId(boolean testDatabase, String user, String pass) thr
}

@NotNull
private static MultipartEntityBuilder getMultipartEntityBuilder(File pxxmlFile, boolean testDatabase, METHOD method, String user, String pass)
private static MultipartEntityBuilder getMultipartEntityBuilder(FileLike pxxmlFile, boolean testDatabase, METHOD method, String user, String pass) throws IOException
{
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
if(pxxmlFile != null)
{
builder.addPart("ProteomeXchangeXML", new FileBody(pxxmlFile));
builder.addPart("ProteomeXchangeXML", new InputStreamBody(pxxmlFile.openInputStream(), ContentType.TEXT_XML, pxxmlFile.getName()));
}
builder.addTextBody("PXPartner", user);
builder.addTextBody("authentication", pass);
Expand All @@ -140,7 +143,7 @@ private static MultipartEntityBuilder getMultipartEntityBuilder(File pxxmlFile,
return builder;
}

private static MultipartEntityBuilder getMultipartEntityBuilder(boolean testDatabase, METHOD method, String user, String pass)
private static MultipartEntityBuilder getMultipartEntityBuilder(boolean testDatabase, METHOD method, String user, String pass) throws IOException
{
return getMultipartEntityBuilder(null, testDatabase, method, user, pass);
}
Expand Down