diff --git a/ehr/api-src/org/labkey/api/ehr/EHRService.java b/ehr/api-src/org/labkey/api/ehr/EHRService.java
index 03bf17929..9dae8fbe8 100644
--- a/ehr/api-src/org/labkey/api/ehr/EHRService.java
+++ b/ehr/api-src/org/labkey/api/ehr/EHRService.java
@@ -44,8 +44,8 @@
import org.labkey.api.util.URLHelper;
import org.labkey.api.view.ActionURL;
import org.labkey.api.view.template.ClientDependency;
+import org.labkey.vfs.FileLike;
-import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Date;
@@ -339,7 +339,7 @@ public EHRQCState getQCState(@NotNull Container c)
* A use case is a separate pipeline server that performs the R computation on a cluster, and then triggers the main webserver to import
* those results.
*/
- abstract public void standaloneProcessKinshipAndInbreeding(Container c, User u, File pipelineDir, Logger log) throws PipelineJobException;
+ abstract public void standaloneProcessKinshipAndInbreeding(Container c, User u, FileLike pipelineDir, Logger log) throws PipelineJobException;
/** Applicable for centers who use the model that projects have a reference to a protocol. Caches a protocol for a given project. **/
abstract public void updateCachedProtocol(Container c, Integer project, String protocol);
diff --git a/ehr/resources/web/ehr/panel/ManageTreatmentsPanel.js b/ehr/resources/web/ehr/panel/ManageTreatmentsPanel.js
index 8e9e147c0..15670d9a2 100644
--- a/ehr/resources/web/ehr/panel/ManageTreatmentsPanel.js
+++ b/ehr/resources/web/ehr/panel/ManageTreatmentsPanel.js
@@ -276,7 +276,7 @@ Ext4.define('EHR.panel.ManageTreatmentsPanel', {
dataIndex: 'amountAndVolume',
renderer: function(value, cellMetaData, record){
if (value){
- return value.replace(/\n/, '
');
+ return value.replace(/\n/g, '
');
}
return value;
diff --git a/ehr/src/org/labkey/ehr/EHRServiceImpl.java b/ehr/src/org/labkey/ehr/EHRServiceImpl.java
index 04eec8eef..6f5e1708f 100644
--- a/ehr/src/org/labkey/ehr/EHRServiceImpl.java
+++ b/ehr/src/org/labkey/ehr/EHRServiceImpl.java
@@ -83,8 +83,8 @@
import org.labkey.ehr.security.EHRSecurityManager;
import org.labkey.ehr.table.DefaultEHRCustomizer;
import org.labkey.ehr.table.SNOMEDCodesDisplayColumn;
+import org.labkey.vfs.FileLike;
-import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
@@ -923,28 +923,28 @@ public void importFolderDefinition(Container container, User user, Module m, Pat
{
Resource root = m.getModuleResource(sourceFolderDirPath);
PipeRoot pipeRoot = PipelineService.get().findPipelineRoot(container);
- java.nio.file.Path pipeRootPath = pipeRoot.getRootNioPath();
+ FileLike pipeRootPath = pipeRoot.getRootFileLike();
- java.nio.file.Path folderXmlPath;
+ FileLike folderXmlPath;
- if (root instanceof DirectoryResource && ((DirectoryResource)root).getDir().equals(pipeRootPath.toFile()))
+ if (root instanceof DirectoryResource dir && dir.getDir().equals(pipeRootPath.toNioPathForRead().toFile()))
{
// The pipeline root is already pointed at the folder definition, like it might be on a dev machine.
// No need to copy, especially since copying can cause infinite recursion when the paths are nested
- folderXmlPath = pipeRootPath.resolve("folder.xml");
+ folderXmlPath = pipeRootPath.resolveChild("folder.xml");
}
else
{
- java.nio.file.Path folderPath = pipeRootPath.resolve("moduleFolderImport");
- folderXmlPath = folderPath.resolve("folder.xml");
- if (Files.exists(folderPath))
+ FileLike folderPath = pipeRootPath.resolveChild("moduleFolderImport");
+ folderXmlPath = folderPath.resolveChild("folder.xml");
+ if (folderPath.exists())
{
FileUtil.deleteDir(folderPath);
}
copyResourceToPath(root, folderPath);
}
- if (!Files.exists(folderXmlPath))
+ if (!folderXmlPath.exists())
{
throw new FileNotFoundException("Couldn't find an extracted " + folderXmlPath);
}
@@ -954,21 +954,21 @@ public void importFolderDefinition(Container container, User user, Module m, Pat
PipelineService.get().runFolderImportJob(container, user, null, folderXmlPath, "folder.xml", pipeRoot, options);
}
- private void copyResourceToPath(Resource resource, java.nio.file.Path target) throws IOException
+ private void copyResourceToPath(Resource resource, FileLike target) throws IOException
{
if (resource.isCollection())
{
- Files.createDirectory(target);
+ FileUtil.createDirectory(target);
for (Resource child : resource.list())
{
- java.nio.file.Path childTarget = target.resolve(child.getName());
+ FileLike childTarget = target.resolveChild(child.getName());
copyResourceToPath(child, childTarget);
}
}
else
{
try (InputStream in = resource.getInputStream();
- OutputStream out = Files.newOutputStream(target))
+ OutputStream out = target.openOutputStream())
{
FileUtil.copyData(in, out);
}
@@ -1069,7 +1069,7 @@ public void appendSNOMEDCols(AbstractTableInfo ti, String displayColumnName, Str
}
@Override
- public void standaloneProcessKinshipAndInbreeding(Container c, User u, File pipelineDir, Logger log) throws PipelineJobException
+ public void standaloneProcessKinshipAndInbreeding(Container c, User u, FileLike pipelineDir, Logger log) throws PipelineJobException
{
GeneticCalculationsImportTask.standaloneProcessKinshipAndInbreeding(c, u, pipelineDir, log);
}
diff --git a/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsImportTask.java b/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsImportTask.java
index a78887fb2..77cfe9977 100644
--- a/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsImportTask.java
+++ b/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsImportTask.java
@@ -57,6 +57,7 @@
import org.labkey.api.util.FileType;
import org.labkey.api.util.PageFlowUtil;
import org.labkey.ehr.EHRSchema;
+import org.labkey.vfs.FileLike;
import java.io.BufferedReader;
import java.io.File;
@@ -151,8 +152,8 @@ public RecordedActionSet run() throws PipelineJobException
PipelineJob job = getJob();
FileAnalysisJobSupport support = (FileAnalysisJobSupport) job;
- processInbreeding(job.getContainer(), job.getUser(), support.getAnalysisDirectoryPath().toFile(), job.getLogger());
- processKinship(job.getContainer(), job.getUser(), support.getAnalysisDirectoryPath().toFile(), job.getLogger(), job);
+ processInbreeding(job.getContainer(), job.getUser(), support.getAnalysisDirectoryFileLike(), job.getLogger());
+ processKinship(job.getContainer(), job.getUser(), support.getAnalysisDirectoryFileLike(), job.getLogger(), job);
if (GeneticCalculationsJob.isKinshipValidation())
{
@@ -170,15 +171,15 @@ public RecordedActionSet run() throws PipelineJobException
return new RecordedActionSet(actions);
}
- public static void standaloneProcessKinshipAndInbreeding(Container c, User u, File pipelineDir, Logger log) throws PipelineJobException
+ public static void standaloneProcessKinshipAndInbreeding(Container c, User u, FileLike pipelineDir, Logger log) throws PipelineJobException
{
processInbreeding(c, u, pipelineDir, log);
processKinship(c, u, pipelineDir, log, null);
}
- private static void processKinship(Container c, User u, File pipelineDir, Logger log, @Nullable PipelineJob job) throws PipelineJobException
+ private static void processKinship(Container c, User u, FileLike pipelineDir, Logger log, @Nullable PipelineJob job) throws PipelineJobException
{
- File output = new File(pipelineDir, KINSHIP_FILE);
+ FileLike output = pipelineDir.resolveChild(KINSHIP_FILE);
if (!output.exists())
throw new PipelineJobException("Unable to find file: " + output.getPath());
@@ -190,7 +191,7 @@ private static void processKinship(Container c, User u, File pipelineDir, Logger
try
{
try (DbScope.Transaction transaction = ExperimentService.get().ensureTransaction();
- LineNumberReader lnr = new LineNumberReader(Readers.getReader(output)))
+ LineNumberReader lnr = new LineNumberReader(Readers.getReader(output.openInputStream())))
{
while (lnr.readLine() != null)
{
@@ -248,7 +249,7 @@ else if (kinshipTable.getSqlDialect().isPostgreSQL())
}
try (DbScope.Transaction transaction = ExperimentService.get().ensureTransaction();
- BufferedReader reader = Readers.getReader(output);
+ BufferedReader reader = Readers.getReader(output.openInputStream());
PreparedStatement stmt = transaction.getConnection().prepareStatement(
"INSERT INTO " + EHRSchema.EHR_SCHEMANAME + ".kinship\n" +
"\t(Id, Id2, coefficient, container, created, createdby, modified, modifiedby)\n" +
@@ -619,9 +620,9 @@ private static TableInfo getRealTable(TableInfo ti)
return null;
}
- private static void processInbreeding(Container c, User u, File pipelineDir, Logger log) throws PipelineJobException
+ private static void processInbreeding(Container c, User u, FileLike pipelineDir, Logger log) throws PipelineJobException
{
- File output = new File(pipelineDir, INBREEDING_FILE);
+ FileLike output = pipelineDir.resolveChild(INBREEDING_FILE);
if (!output.exists())
throw new PipelineJobException("Unable to find file: " + output.getPath());
@@ -636,12 +637,12 @@ private static void processInbreeding(Container c, User u, File pipelineDir, Log
QueryUpdateService qus = ti.getUpdateService();
qus.setBulkLoad(true);
- try (BufferedReader reader = Readers.getReader(output))
+ try (BufferedReader reader = Readers.getReader(output.openInputStream()))
{
try (DbScope.Transaction transaction = ExperimentService.get().ensureTransaction())
{
log.info("Inspecting file length: " + output.getPath());
- try (LineNumberReader lnr = new LineNumberReader(Readers.getReader(output)))
+ try (LineNumberReader lnr = new LineNumberReader(Readers.getReader(output.openInputStream())))
{
while (lnr.readLine() != null)
{
diff --git a/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsRunnable.java b/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsRunnable.java
index c803e43cb..ced4e36ad 100644
--- a/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsRunnable.java
+++ b/ehr/src/org/labkey/ehr/pipeline/GeneticCalculationsRunnable.java
@@ -31,11 +31,13 @@
import org.labkey.api.pipeline.file.FileAnalysisTaskPipeline;
import org.labkey.api.security.User;
import org.labkey.api.util.ConfigurationException;
+import org.labkey.api.util.FileUtil;
import org.labkey.api.util.StringUtilsLabKey;
import org.labkey.api.util.logging.LogHelper;
import org.labkey.api.view.ActionURL;
import org.labkey.api.view.ViewBackgroundInfo;
import org.labkey.ehr.EHRManager;
+import org.labkey.vfs.FileLike;
import java.io.File;
import java.io.FileWriter;
@@ -97,11 +99,11 @@ private void startCalculation(User u, Container c, boolean allowRunningDuringDay
protocol.setTimestampLog(true);
- File fileParameters = protocol.getParametersFile(root.getRootPath(), root);
+ FileLike fileParameters = protocol.getParametersFile(root.getRootFileLike(), root);
if (!fileParameters.exists())
{
- fileParameters.getParentFile().mkdirs();
- fileParameters.createNewFile();
+ fileParameters.getParent().mkdirs();
+ FileUtil.createNewFile(fileParameters, true);
}
protocol.saveInstance(fileParameters, c);
@@ -118,11 +120,11 @@ private void startCalculation(User u, Container c, boolean allowRunningDuringDay
w.write(xml);
}
- File inputFile = new File(root.getRootPath(), "kinship.txt");
+ FileLike inputFile = root.resolvePathToFileLike("kinship.txt");
if (!inputFile.exists())
- inputFile.createNewFile();
+ FileUtil.createNewFile(inputFile, true);
- AbstractFileAnalysisJob job = protocol.createPipelineJob(bg, root, Collections.singletonList(inputFile.toPath()), fileParameters.toPath(), null);
+ AbstractFileAnalysisJob job = protocol.createPipelineJob(bg, root, Collections.singletonList(inputFile), fileParameters, null);
PipelineService.get().queueJob(job);
String dateFormat = "yyyy_MM_dd_hh_mm_ss";
@@ -131,7 +133,7 @@ private void startCalculation(User u, Container c, boolean allowRunningDuringDay
Date now = cal.getTime();
String timestamp = formatter.format(now);
- job.setLogFile(new File(job.getLogFile().getParent() + "/kinship_" + timestamp + ".txt.log"));
+ job.setLogFile(job.getLogFileLike().getParent().resolveChild("kinship_" + timestamp + ".txt.log"));
}
catch (ClassNotFoundException e)
{
diff --git a/ehr/test/src/org/labkey/test/tests/ehr/AbstractEHRTest.java b/ehr/test/src/org/labkey/test/tests/ehr/AbstractEHRTest.java
index 18548b819..53c98276e 100644
--- a/ehr/test/src/org/labkey/test/tests/ehr/AbstractEHRTest.java
+++ b/ehr/test/src/org/labkey/test/tests/ehr/AbstractEHRTest.java
@@ -18,6 +18,8 @@
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.junit.Assert;
+import org.labkey.api.util.FileUtil;
+import org.labkey.api.util.Path;
import org.labkey.remoteapi.CommandException;
import org.labkey.remoteapi.Connection;
import org.labkey.remoteapi.SimplePostCommand;
@@ -59,7 +61,6 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
-import java.util.regex.Pattern;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
@@ -144,7 +145,7 @@ abstract public class AbstractEHRTest extends BaseWebDriverTest implements Advan
protected List _saveRowsTimes;
protected abstract String getModuleDirectory();
- protected EHRBillingHelper _billingHelper = new EHRBillingHelper(this, getProjectName(), FOLDER_NAME, getModulePath(), getContainerPath(),BILLING_FOLDER);
+ protected EHRBillingHelper _billingHelper = new EHRBillingHelper(this, getProjectName(), BILLING_FOLDER);
//xpath fragment
public static final String VISIBLE = "not(ancestor-or-self::*[contains(@style,'visibility: hidden') or contains(@class, 'x-hide-display')])";
@@ -203,14 +204,6 @@ public void validateQueries(boolean validateSubfolders)
}
}
- protected Pattern[] getIgnoredElements()
- {
- return new Pattern[] {
- Pattern.compile("qcstate", Pattern.CASE_INSENSITIVE),//qcstate IDs aren't predictable
- Pattern.compile("stacktrace", Pattern.CASE_INSENSITIVE)
- };
- }
-
protected String getMale() {
return "m";
}
@@ -365,8 +358,8 @@ public void doCleanup(boolean afterTest) throws TestTimeoutException
protected void importFolderFromPath(int jobCount)
{
- File path = new File(TestFileUtils.getLabKeyRoot(), getModulePath() + "/resources/referenceStudy");
- setPipelineRoot(path.getPath());
+ File path = FileUtil.appendPath(TestFileUtils.getLabKeyRoot(), Path.parse(getModulePath() + "/resources/referenceStudy"));
+ setPipelineRoot(path.getPath(), false);
beginAt(WebTestHelper.getBaseURL() + "/" + getContainerPath() + "/pipeline-status-begin.view");
clickButton("Process and Import Data", defaultWaitForPage);
diff --git a/ehr/test/src/org/labkey/test/tests/ehr/ComplianceTrainingTest.java b/ehr/test/src/org/labkey/test/tests/ehr/ComplianceTrainingTest.java
index d071b9376..af7f0abad 100644
--- a/ehr/test/src/org/labkey/test/tests/ehr/ComplianceTrainingTest.java
+++ b/ehr/test/src/org/labkey/test/tests/ehr/ComplianceTrainingTest.java
@@ -50,7 +50,7 @@
@BaseWebDriverTest.ClassTimeout(minutes = 5)
public abstract class ComplianceTrainingTest extends BaseWebDriverTest implements AdvancedSqlTest
{
- private final String listZIP = TestFileUtils.getLabKeyRoot() + "/server/modules/ehrModules/EHR_ComplianceDB/tools/SOP_Lists.zip";
+ private final String listZIP = new File(TestFileUtils.getLabKeyRoot(), "server/modules/ehrModules/EHR_ComplianceDB/tools/SOP_Lists.zip").getPath();
@Override
protected String getProjectName()
diff --git a/ehr/test/src/org/labkey/test/tests/ehr/EHRBillingHelper.java b/ehr/test/src/org/labkey/test/tests/ehr/EHRBillingHelper.java
index b646ac472..822d0c3d4 100644
--- a/ehr/test/src/org/labkey/test/tests/ehr/EHRBillingHelper.java
+++ b/ehr/test/src/org/labkey/test/tests/ehr/EHRBillingHelper.java
@@ -45,9 +45,6 @@ public class EHRBillingHelper
{
private final BaseWebDriverTest _test;
private final String _projectName;
- private String _folderName;
- private String _modulePath;
- private String _containerPath;
private String _billingFolder;
public Ext4Helper _ext4Helper;
@@ -58,12 +55,9 @@ public EHRBillingHelper(BaseWebDriverTest test, String projectName)
_ext4Helper = new Ext4Helper(_test);
}
- public EHRBillingHelper(BaseWebDriverTest test, String projectName, String folderName, String modulePath, String containerPath, String billingFolder)
+ public EHRBillingHelper(BaseWebDriverTest test, String projectName, String billingFolder)
{
this(test, projectName);
- _folderName = folderName;
- _modulePath = modulePath;
- _containerPath = containerPath;
_billingFolder = billingFolder;
}
@@ -88,7 +82,7 @@ public void performBillingRun(String startDate, String endDate, String comment,
public void checkMessageWindow(String title, @Nullable String bodyText, String buttonText)
{
- Window msgWindow = new Window.WindowFinder(_test.getDriver()).withTitle(title).waitFor();
+ Window> msgWindow = new Window.WindowFinder(_test.getDriver()).withTitle(title).waitFor();
assertEquals("Message window Title mismatch", title, msgWindow.getTitle());
if (null != bodyText)
@@ -149,7 +143,7 @@ public void verifyBillingInvoicedItemsUsingAPI(String InvoicedId, List row : resp.getRows())
if (row.get("quantity") != null)
- sumQuantity += (double) row.get("quantity");
+ sumQuantity += ((Number) row.get("quantity")).intValue();
assertEquals("Total quantity is not as expected", String.valueOf(sumQuantity), item.getTotalQuantity());
}
diff --git a/ehr_billing/src/org/labkey/ehr_billing/pipeline/BillingTask.java b/ehr_billing/src/org/labkey/ehr_billing/pipeline/BillingTask.java
index c7ef4b20d..908b09837 100644
--- a/ehr_billing/src/org/labkey/ehr_billing/pipeline/BillingTask.java
+++ b/ehr_billing/src/org/labkey/ehr_billing/pipeline/BillingTask.java
@@ -111,9 +111,8 @@ public List getProtocolActionNames()
}
@Override
- public PipelineJob.Task createTask(PipelineJob job)
+ public BillingTask createTask(PipelineJob job)
{
-
return new BillingTask(this, job);
}