diff --git a/lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java b/lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java index 46533c9b..5a67a26d 100644 --- a/lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java +++ b/lincs/src/org/labkey/lincs/psp/LincsPspPipelineJob.java @@ -12,7 +12,6 @@ import org.labkey.api.util.FileUtil; import org.labkey.api.util.URLHelper; import org.labkey.api.view.ViewBackgroundInfo; -import org.labkey.lincs.LincsModule; public class LincsPspPipelineJob extends PipelineJob implements LincsPspJobSupport { @@ -43,7 +42,7 @@ public LincsPspPipelineJob(ViewBackgroundInfo info, PipeRoot root, ITargetedMSRu String baseLogFileName = FileUtil.makeFileNameWithTimestamp("LincsPSP_" + (_oldPspJob != null ? "rerun_" : "") + run.getBaseName().replace(" ", "_")); - LocalDirectory localDirectory = LocalDirectory.create(root, LincsModule.NAME, baseLogFileName, + LocalDirectory localDirectory = LocalDirectory.create(root, baseLogFileName, !root.isCloudRoot() ? root.getRootPath().getAbsolutePath() : FileUtil.getTempDirectory().getPath()); setLocalDirectory(localDirectory); setLogFile(localDirectory.determineLogFile()); diff --git a/nextflow/src/org/labkey/nextflow/NextFlowController.java b/nextflow/src/org/labkey/nextflow/NextFlowController.java index 784ffc59..f3adaef1 100644 --- a/nextflow/src/org/labkey/nextflow/NextFlowController.java +++ b/nextflow/src/org/labkey/nextflow/NextFlowController.java @@ -39,6 +39,7 @@ import org.labkey.api.view.ViewBackgroundInfo; import org.labkey.nextflow.pipeline.NextFlowPipelineJob; import org.labkey.nextflow.pipeline.NextFlowProtocol; +import org.labkey.vfs.FileLike; import org.springframework.validation.BindException; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; @@ -261,17 +262,17 @@ public void validateCommand(AnalyzeForm o, Errors errors) @Override public ModelAndView getView(AnalyzeForm o, boolean b, BindException errors) { - List selectedFiles = o.getValidatedFiles(getContainer(), false); + List selectedFiles = o.getValidatedFiles(getContainer(), false); if (selectedFiles.isEmpty()) { return new HtmlView(HtmlString.of("Couldn't find input file(s)")); } // NextFlow operates on the full directory so show the list to the user, regardless of what they selected // from the file listing - File inputDir = selectedFiles.get(0).getParentFile(); + FileLike inputDir = selectedFiles.get(0).getParent(); - File[] inputFiles = inputDir.listFiles(new PipelineProvider.FileTypesEntryFilter(NextFlowProtocol.INPUT_TYPES)); - if (inputFiles == null || inputFiles.length == 0) + List inputFiles = inputDir.getChildren().stream().filter(new PipelineProvider.FileTypesEntryFilter(NextFlowProtocol.INPUT_TYPES)).toList(); + if (inputFiles.isEmpty()) { return new HtmlView(HtmlString.of("Couldn't find input file(s)")); } @@ -290,7 +291,7 @@ public ModelAndView getView(AnalyzeForm o, boolean b, BindException errors) INPUT(at(hidden, true, name, "launch", value, true)), Arrays.stream(o.getFile()).map(f -> INPUT(at(hidden, true, name, "file", value, f))).toList(), "Files: ", - UL(Arrays.stream(inputFiles).map(File::getName).map(DOM::LI)), + UL(inputFiles.stream().map(FileLike::getName).map(DOM::LI)), "Config: ", new SelectBuilder().name("configFile").addOptions(Arrays.stream(configFiles).filter(f -> f.isFile() && f.getName().toLowerCase().endsWith(".config")).map(File::getName).sorted(String.CASE_INSENSITIVE_ORDER).toList()).build(), DOM.BR(), @@ -318,7 +319,7 @@ public boolean handlePost(AnalyzeForm form, BindException errors) throws Excepti } else { - List inputFiles = form.getValidatedFiles(getContainer()); + List inputFiles = form.getValidatedFiles(getContainer()); if (inputFiles.isEmpty()) { errors.reject(ERROR_MSG, "No input files"); @@ -327,7 +328,7 @@ public boolean handlePost(AnalyzeForm form, BindException errors) throws Excepti { ViewBackgroundInfo info = getViewBackgroundInfo(); PipeRoot root = PipelineService.get().findPipelineRoot(info.getContainer()); - NextFlowPipelineJob job = NextFlowPipelineJob.create(info, root, configFile.toPath(), inputFiles.stream().map(File::toPath).toList()); + NextFlowPipelineJob job = NextFlowPipelineJob.create(info, root, configFile.toPath(), inputFiles); PipelineService.get().queueJob(job); LOG.info("NextFlow job queued: {}", job.getJsonJobInfo(false)); } diff --git a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowPipelineJob.java b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowPipelineJob.java index 8d2f2291..9d074bca 100644 --- a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowPipelineJob.java +++ b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowPipelineJob.java @@ -20,7 +20,9 @@ import org.labkey.api.util.StringUtilsLabKey; import org.labkey.api.util.logging.LogHelper; import org.labkey.api.view.ViewBackgroundInfo; +import org.labkey.api.writer.PrintWriters; import org.labkey.nextflow.NextFlowManager; +import org.labkey.vfs.FileLike; import java.io.BufferedWriter; import java.io.File; @@ -35,29 +37,29 @@ public class NextFlowPipelineJob extends AbstractFileAnalysisJob { protected static final Logger LOG = LogHelper.getLogger(NextFlowPipelineJob.class, "NextFlow jobs"); - private Path config; + private FileLike config; @SuppressWarnings("unused") // For serialization protected NextFlowPipelineJob() {} - public static NextFlowPipelineJob create(ViewBackgroundInfo info, @NotNull PipeRoot root, Path templateConfig, List inputFiles) throws IOException + public static NextFlowPipelineJob create(ViewBackgroundInfo info, @NotNull PipeRoot root, Path templateConfig, List inputFiles) throws IOException { - Path parentDir = inputFiles.get(0).getParent(); + FileLike parentDir = inputFiles.get(0).getParent(); String jobName = FileUtil.makeFileNameWithTimestamp("NextFlow"); - Path jobDir = parentDir.resolve(jobName); - Path log = jobDir.resolve(jobName + ".log"); + FileLike jobDir = parentDir.resolveChild(jobName); + FileLike log = jobDir.resolveChild(jobName + ".log"); FileUtil.createDirectory(jobDir); - Path config = createConfig(templateConfig, parentDir, jobDir, info.getContainer()); + FileLike config = createConfig(templateConfig, parentDir, jobDir, info.getContainer()); return new NextFlowPipelineJob(info, root, config, inputFiles, log); } - public NextFlowPipelineJob(ViewBackgroundInfo info, @NotNull PipeRoot root, Path config, List inputFiles, Path log) throws IOException + public NextFlowPipelineJob(ViewBackgroundInfo info, @NotNull PipeRoot root, FileLike config, List inputFiles, FileLike log) throws IOException { - super(new NextFlowProtocol(), NextFlowPipelineProvider.NAME, info, root, config.getFileName().toString(), config, inputFiles, false, false); + super(new NextFlowProtocol(), NextFlowPipelineProvider.NAME, info, root, config.getName(), config, inputFiles, false); this.config = config; setLogFile(log); } @@ -69,7 +71,7 @@ public JSONObject getJsonJobInfo(boolean includeInvocationCount) result.put("container", getContainer().getPath()); result.put("filePath", getLogFilePath().getParent().toString()); result.put("runName", getNextFlowRunName(includeInvocationCount)); - result.put("configFile", getConfig().getFileName().toString()); + result.put("configFile", getConfig().getName()); return result; } @@ -88,7 +90,7 @@ public ParamParser getInputParameters() } /** Take the template config file and substitute in the values for this job */ - private static Path createConfig(Path configTemplate, Path parentDir, Path jobDir, Container container) throws IOException + private static FileLike createConfig(Path configTemplate, FileLike parentDir, FileLike jobDir, Container container) throws IOException { String template; try (InputStream in = Files.newInputStream(configTemplate)) @@ -104,8 +106,8 @@ private static Path createConfig(Path configTemplate, Path parentDir, Path jobDi uploadUrl = StringUtils.stripEnd(uploadUrl, "/"); substitutedContent = substitutedContent.replace("${panorama.upload_url}", "panorama.upload_url = '" + uploadUrl + "'"); - Path substitutedFile = jobDir.resolve(configTemplate.getFileName()); - try (BufferedWriter writer = Files.newBufferedWriter(substitutedFile)) + FileLike substitutedFile = jobDir.resolveChild(configTemplate.getFileName().toString()); + try (BufferedWriter writer = new BufferedWriter(PrintWriters.getPrintWriter(substitutedFile.openOutputStream()))) { writer.write(substitutedContent); } @@ -115,7 +117,7 @@ private static Path createConfig(Path configTemplate, Path parentDir, Path jobDi @Override public String getDescription() { - return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFilePaths().size(), "file") + " using config: " + config.getFileName(); + return "NextFlow analysis of " + StringUtilsLabKey.pluralize(getInputFilePaths().size(), "file") + " using config: " + config.getName(); } @Override @@ -131,7 +133,7 @@ public TaskId getTaskPipelineId() } @Override - public AbstractFileAnalysisJob createSingleFileJob(File file) + public AbstractFileAnalysisJob createSingleFileJob(FileLike file) { throw new UnsupportedOperationException(); } diff --git a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowProtocol.java b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowProtocol.java index 29544bed..e7387121 100644 --- a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowProtocol.java +++ b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowProtocol.java @@ -7,8 +7,8 @@ import org.labkey.api.pipeline.file.AbstractFileAnalysisProtocolFactory; import org.labkey.api.util.FileType; import org.labkey.api.view.ViewBackgroundInfo; +import org.labkey.vfs.FileLike; -import java.nio.file.Path; import java.util.List; import java.util.Map; @@ -47,7 +47,7 @@ public NextFlowProtocol createProtocolInstance(String name, String description, } @Override - public Path getDefaultParametersFile(PipeRoot root) + public FileLike getDefaultParametersFile(PipeRoot root) { return null; } @@ -61,7 +61,7 @@ public String getName() } @Override - public NextFlowPipelineJob createPipelineJob(ViewBackgroundInfo info, PipeRoot root, List filesInput, Path fileParameters, @Nullable Map variableMap) + public NextFlowPipelineJob createPipelineJob(ViewBackgroundInfo info, PipeRoot root, List filesInput, FileLike fileParameters, @Nullable Map variableMap) { throw new UnsupportedOperationException(); } diff --git a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowRunTask.java b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowRunTask.java index 1a64acc9..5d4357f7 100644 --- a/nextflow/src/org/labkey/nextflow/pipeline/NextFlowRunTask.java +++ b/nextflow/src/org/labkey/nextflow/pipeline/NextFlowRunTask.java @@ -16,6 +16,7 @@ import org.labkey.api.util.FileType; import org.labkey.nextflow.NextFlowConfiguration; import org.labkey.nextflow.NextFlowManager; +import org.labkey.vfs.FileLike; import java.io.BufferedReader; import java.io.File; @@ -143,9 +144,9 @@ else if (Files.isDirectory(path)) } } - private boolean hasAwsSection(Path configFile) throws PipelineJobException + private boolean hasAwsSection(FileLike configFile) throws PipelineJobException { - try (InputStream in = Files.newInputStream(configFile); + try (InputStream in = configFile.openInputStream(); InputStreamReader isReader = new InputStreamReader(in, StandardCharsets.UTF_8); BufferedReader reader = new BufferedReader(isReader)) { @@ -174,7 +175,7 @@ private boolean hasAwsSection(Path configFile) throws PipelineJobException private @NotNull List getArgs() throws PipelineJobException { NextFlowConfiguration config = NextFlowManager.get().getConfiguration(); - Path configFile = getJob().getConfig(); + FileLike configFile = getJob().getConfig(); boolean aws = hasAwsSection(configFile); @@ -194,7 +195,7 @@ private boolean hasAwsSection(Path configFile) throws PipelineJobException args.add(s3Path); } args.add("-c"); - args.add(configFile.toAbsolutePath().toString()); + args.add(configFile.toNioPathForRead().toAbsolutePath().toString()); args.add("-name"); args.add(getJob().getNextFlowRunName(true)); return args; diff --git a/panoramapublic/src/org/labkey/panoramapublic/PanoramaPublicController.java b/panoramapublic/src/org/labkey/panoramapublic/PanoramaPublicController.java index 514a42de..63b20c3d 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/PanoramaPublicController.java +++ b/panoramapublic/src/org/labkey/panoramapublic/PanoramaPublicController.java @@ -215,6 +215,8 @@ import org.labkey.panoramapublic.view.expannotations.TargetedMSExperimentWebPart; import org.labkey.panoramapublic.view.expannotations.TargetedMSExperimentsWebPart; import org.labkey.panoramapublic.view.publish.CatalogEntryWebPart; +import org.labkey.vfs.FileLike; +import org.labkey.vfs.FileSystemLike; import org.springframework.validation.BindException; import org.springframework.validation.Errors; import org.springframework.web.servlet.ModelAndView; @@ -1748,7 +1750,7 @@ private boolean validateAction(CopyExperimentForm form, BindException errors) return true; } - private Path getExportFilesDir(Container c) + private FileLike getExportFilesDir(Container c) { FileContentService fcs = FileContentService.get(); if(fcs != null) @@ -1756,7 +1758,7 @@ private Path getExportFilesDir(Container c) Path fileRoot = fcs.getFileRootPath(c, FileContentService.ContentType.files); if (fileRoot != null) { - return fileRoot.resolve(PipelineService.EXPORT_DIR); + return FileSystemLike.wrapFile(fileRoot.resolve(PipelineService.EXPORT_DIR)); } } return null; @@ -4710,7 +4712,7 @@ private static File getLocalFile(Container container, String fileName) throws Px PipeRoot root = PipelineService.get().getPipelineRootSetting(container); if (root != null) { - LocalDirectory localDirectory = LocalDirectory.create(root, PanoramaPublicModule.NAME); + LocalDirectory localDirectory = LocalDirectory.create(root); return new File(localDirectory.getLocalDirectoryFile(), fileName); } else diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentFinalTask.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentFinalTask.java index 362f450e..8a34dfea 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentFinalTask.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentFinalTask.java @@ -79,6 +79,7 @@ import org.labkey.panoramapublic.query.JournalManager; import org.labkey.panoramapublic.query.SubmissionManager; import org.labkey.panoramapublic.security.PanoramaPublicSubmitterRole; +import org.labkey.vfs.FileLike; import java.io.File; import java.io.IOException; @@ -254,9 +255,9 @@ private void verifySymlinks(Container source, Container target, boolean matching } } - private void cleanupExportDirectory(User user, File directory) + private void cleanupExportDirectory(User user, FileLike directory) { - List datas = ExperimentService.get().getExpDatasUnderPath(directory.toPath(), null, true); + List datas = ExperimentService.get().getExpDatasUnderPath(directory.toNioPathForRead(), null, true); for (ExpData data : datas) { data.delete(user); diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentJobSupport.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentJobSupport.java index 9ce69da1..4bd5522f 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentJobSupport.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentJobSupport.java @@ -17,9 +17,7 @@ import org.labkey.panoramapublic.model.ExperimentAnnotations; import org.labkey.panoramapublic.model.Journal; - -import java.io.File; -import java.nio.file.Path; +import org.labkey.vfs.FileLike; /** * User: vsharma @@ -32,7 +30,7 @@ public interface CopyExperimentJobSupport Journal getJournal(); - File getExportDir(); + FileLike getExportDir(); String getReviewerEmailPrefix(); @@ -48,5 +46,5 @@ public interface CopyExperimentJobSupport String getPreviousVersionName(); - void setExportTargetPath(Path exportTargetPath); + void setExportTargetPath(FileLike exportTargetPath); } diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentPipelineJob.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentPipelineJob.java index a6b3a594..69d20367 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentPipelineJob.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/CopyExperimentPipelineJob.java @@ -30,13 +30,12 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.view.NotFoundException; import org.labkey.api.view.ViewBackgroundInfo; -import org.labkey.panoramapublic.PanoramaPublicModule; import org.labkey.panoramapublic.model.ExperimentAnnotations; import org.labkey.panoramapublic.model.Journal; +import org.labkey.vfs.FileLike; import java.io.File; import java.io.IOException; -import java.nio.file.Path; /** * User: vsharma @@ -63,7 +62,7 @@ public class CopyExperimentPipelineJob extends PipelineJob implements CopyExperi private String _previousVersionName; - private Path _exportTargetPath; + private FileLike _exportTargetPath; private Container _exportSourceContainer; @@ -93,7 +92,7 @@ public CopyExperimentPipelineJob(ViewBackgroundInfo info, PipeRoot root, Experim // CONSIDER: Add a static factory method to LocalDirectory instead of using the constructor. // create(@NotNull PipeRoot root, @NotNull String moduleName, @NotNull String baseLogFileName, @NotNull String localDirPath, boolean temporary) - LocalDirectory localDirectory = new LocalDirectory(targetRoot.getContainer(), PanoramaPublicModule.NAME, root, baseLogFileName); + LocalDirectory localDirectory = new LocalDirectory(targetRoot.getContainer(), root, baseLogFileName); setLocalDirectory(localDirectory); setLogFile(localDirectory.determineLogFile()); @@ -160,9 +159,9 @@ public Journal getJournal() } @Override - public File getExportDir() + public FileLike getExportDir() { - return _exportTargetPath.toFile(); + return _exportTargetPath; } @Override @@ -254,7 +253,7 @@ public void setPreviousVersionName(String previousVersionName) } @Override - public void setExportTargetPath(Path exportTargetPath) + public void setExportTargetPath(FileLike exportTargetPath) { _exportTargetPath = exportTargetPath; } diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentExportTask.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentExportTask.java index 01a3c297..27b6d625 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentExportTask.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentExportTask.java @@ -16,7 +16,6 @@ package org.labkey.panoramapublic.pipeline; import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.labkey.api.admin.FolderArchiveDataTypes; import org.labkey.api.admin.FolderExportContext; @@ -36,8 +35,8 @@ import org.labkey.api.util.PageFlowUtil; import org.labkey.api.writer.FileSystemFile; import org.labkey.panoramapublic.model.ExperimentAnnotations; +import org.labkey.vfs.FileLike; -import java.io.File; import java.util.Collections; import java.util.List; import java.util.Set; @@ -49,8 +48,6 @@ */ public class ExperimentExportTask extends PipelineJob.Task { - private static final Logger _log = LogManager.getLogger(ExperimentExportTask.class); - private ExperimentExportTask(Factory factory, PipelineJob job) { super(factory, job); @@ -117,15 +114,15 @@ public void writeExperiment(CopyExperimentJobSupport support, ExperimentAnnotati false, false, new StaticLoggerGetter(LogManager.getLogger(FolderWriterImpl.class))); - File exportDir = support.getExportDir(); + FileLike exportDir = support.getExportDir(); FileUtil.deleteDir(exportDir); if(exportDir.exists()) { - throw new Exception("Could not delete already existing export directory " + exportDir.getAbsolutePath()); + throw new Exception("Could not delete already existing export directory " + exportDir); } - if(!exportDir.mkdir()) + if(!FileUtil.mkdir(exportDir)) { - throw new Exception("Could not create directory " + exportDir.getAbsolutePath()); + throw new Exception("Could not create directory " + exportDir); } FileSystemFile vf = new FileSystemFile(exportDir); @@ -143,7 +140,7 @@ public Factory() } @Override - public PipelineJob.Task createTask(PipelineJob job) + public ExperimentExportTask createTask(PipelineJob job) { return new ExperimentExportTask(this, job); } diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentImportTask.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentImportTask.java index 75411602..b3f8330a 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentImportTask.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/ExperimentImportTask.java @@ -29,6 +29,7 @@ import org.labkey.api.util.FileType; import org.labkey.api.writer.FileSystemFile; import org.labkey.api.writer.VirtualFile; +import org.labkey.vfs.FileLike; import java.io.File; import java.util.Collections; @@ -74,23 +75,23 @@ public RecordedActionSet run() throws PipelineJobException public static void doImport(PipelineJob job, CopyExperimentJobSupport jobSupport) throws Exception { - File importDir = jobSupport.getExportDir(); + FileLike importDir = jobSupport.getExportDir(); if (!importDir.exists()) { throw new Exception("TargetedMS experiment import failed: Could not find directory \"" + importDir.getName() + "\""); } - File folderXml = new File(importDir, "folder.xml"); + FileLike folderXml = importDir.resolveChild("folder.xml"); if(!folderXml.exists()) { - throw new Exception("This directory doesn't contain an appropriate xml: " + importDir.getAbsolutePath()); + throw new Exception("This directory doesn't contain an appropriate xml: " + importDir); } User user = job.getUser(); Container container = job.getContainer(); - VirtualFile importJobRoot = new FileSystemFile(folderXml.getParentFile()); - FolderImportContext importCtx = new FolderImportContext(user, container, folderXml.toPath(), + VirtualFile importJobRoot = new FileSystemFile(folderXml.getParent()); + FolderImportContext importCtx = new FolderImportContext(user, container, folderXml, null, new PipelineJobLoggerGetter(job), importJobRoot); importCtx.setSkipQueryValidation(true); @@ -110,7 +111,7 @@ public Factory() } @Override - public PipelineJob.Task createTask(PipelineJob job) + public ExperimentImportTask createTask(PipelineJob job) { return new ExperimentImportTask(this, job); } diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/PostPanoramaPublicMessageJob.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/PostPanoramaPublicMessageJob.java index 89eed4dd..39ce8c35 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/PostPanoramaPublicMessageJob.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/PostPanoramaPublicMessageJob.java @@ -41,7 +41,7 @@ public PostPanoramaPublicMessageJob(ViewBackgroundInfo info, @NotNull PipeRoot r String titlePrefix, boolean test) { super("Panorama Public", info, root); - setLogFile(root.getRootNioPath().resolve(FileUtil.makeFileNameWithTimestamp("PanoramaPublic-post-to-message-thread", "log"))); + setLogFile(root.resolvePathToFileLike(FileUtil.makeFileNameWithTimestamp("PanoramaPublic-post-to-message-thread", "log"))); _experimentAnnotationsIds = experimentAnnotationsIds; _message = message; _titlePrefix = titlePrefix; diff --git a/panoramapublic/src/org/labkey/panoramapublic/pipeline/PrivateDataReminderJob.java b/panoramapublic/src/org/labkey/panoramapublic/pipeline/PrivateDataReminderJob.java index 2b5bfe6b..9510d23e 100644 --- a/panoramapublic/src/org/labkey/panoramapublic/pipeline/PrivateDataReminderJob.java +++ b/panoramapublic/src/org/labkey/panoramapublic/pipeline/PrivateDataReminderJob.java @@ -58,7 +58,7 @@ public PrivateDataReminderJob(ViewBackgroundInfo info, @NotNull PipeRoot root, b public PrivateDataReminderJob(ViewBackgroundInfo info, @NotNull PipeRoot root, Journal panoramaPublic, List experimentAnnotationsIds, boolean test) { super("Panorama Public", info, root); - setLogFile(root.getRootFileLike().toNioPathForWrite().resolve(FileUtil.makeFileNameWithTimestamp("PanoramaPublic-private-data-reminder", "log"))); + setLogFile(root.getRootFileLike().resolveChild(FileUtil.makeFileNameWithTimestamp("PanoramaPublic-private-data-reminder", "log"))); _panoramaPublic = panoramaPublic; _experimentAnnotationsIds = experimentAnnotationsIds;