diff --git a/api/src/org/labkey/api/reports/report/r/view/DownloadParamReplacement.java b/api/src/org/labkey/api/reports/report/r/view/DownloadParamReplacement.java index 10bff2618d2..c86fb853632 100644 --- a/api/src/org/labkey/api/reports/report/r/view/DownloadParamReplacement.java +++ b/api/src/org/labkey/api/reports/report/r/view/DownloadParamReplacement.java @@ -19,6 +19,7 @@ import org.labkey.api.reports.report.ScriptOutput; import org.labkey.api.reports.report.r.AbstractParamReplacement; import org.labkey.api.util.FileUtil; +import org.labkey.api.util.Path; import java.io.File; @@ -49,7 +50,7 @@ protected final File getSubstitution(File directory, String extension) fileName = getName().concat(extension); if (directory != null) - file = FileUtil.appendName(directory, fileName); + file = FileUtil.appendPath(directory, Path.parse(fileName)); } if (file != null) addFile(file); diff --git a/assay/src/org/labkey/assay/AssayIntegrationTestCase.jsp b/assay/src/org/labkey/assay/AssayIntegrationTestCase.jsp index 674ad8d39fd..d66cbfd7755 100644 --- a/assay/src/org/labkey/assay/AssayIntegrationTestCase.jsp +++ b/assay/src/org/labkey/assay/AssayIntegrationTestCase.jsp @@ -96,6 +96,8 @@ <%@ page import="java.io.IOException" %> <%@ page import="org.apache.commons.collections.MapUtils" %> <%@ page import="org.labkey.vfs.FileSystemLike" %> +<%@ page import="static org.junit.Assert.assertEquals" %> +<%@ page import="static org.junit.Assert.assertNotEquals" %> <%@ page extends="org.labkey.api.jsp.JspTest.BVT" %> <%! @@ -559,18 +561,18 @@ runsQUS.updateRows(user, c, Collections.singletonList(updated), null, errors, null, null); // verify runs modified is changed, but created is not Map modifiedRunResults = new TableSelector(runsTable, selectColumns, new SimpleFilter("rowId", runRowId), null).getMap(); - assertTrue(modifiedRunResults.get("Created").equals(runOriginalCreated)); - assertFalse(modifiedRunResults.get("Modified").equals(runOriginalModified)); + assertEquals("modifiedRunResults should have the same Created", modifiedRunResults.get("Created"), runOriginalCreated); + assertNotEquals("modifiedRunResults should have a different Modified", modifiedRunResults.get("Modified"), runOriginalModified); // verify results created/modified matches run's created in query table Map queryResultAfterRunModify = new TableSelector(resultsTable, selectColumns, new SimpleFilter(runFieldKey, runRowId), null).getMap(); - assertTrue(queryResultAfterRunModify.get("Created").equals(runOriginalCreated)); - assertTrue(queryResultAfterRunModify.get("Modified").equals(runOriginalCreated)); - assertFalse(queryResultAfterRunModify.get("Modified").equals(modifiedRunResults.get("Modified"))); + assertEquals("queryResultAfterRunModify should have the same Created", queryResultAfterRunModify.get("Created"), runOriginalCreated); + assertEquals("queryResultAfterRunModify should have the same Modified", queryResultAfterRunModify.get("Modified"), runOriginalCreated); + assertNotEquals("queryResultAfterRunModify should have a different Modified", queryResultAfterRunModify.get("Modified"), modifiedRunResults.get("Modified")); // verify created/modified in provisioned result table is still not populated after run edit dbResult = getRealResult(resultsTable.getSchema(), realResultsTable.getName(), resultRowId); - assertTrue(dbResult.get("Created") == null && dbResult.get("Modified") == null); + assertTrue("Created and Modified in the provisioned result table weren't as expected", dbResult.get("Created") == null && dbResult.get("Modified") == null); // now edit the result QueryUpdateService resultsQUS = resultsTable.getUpdateService(); @@ -582,18 +584,18 @@ // verify result created matches run's created in query table, but result modified now differs from run's created Map modifiedResults = new TableSelector(resultsTable, selectColumns, new SimpleFilter(runFieldKey, runRowId), null).getMap(); - assertTrue(modifiedResults.get("Created").equals(runOriginalCreated)); - assertFalse(modifiedResults.get("Created").equals(modifiedResults.get("Modified"))); - assertFalse(modifiedResults.get("Modified").equals(runOriginalCreated)); - assertFalse(modifiedResults.get("Modified").equals(runOriginalModified)); - assertFalse(modifiedResults.get("Modified").equals(modifiedRunResults.get("Modified"))); + assertEquals("modifiedResults Created didn't match runOriginalCreated", modifiedResults.get("Created"), runOriginalCreated); + assertNotEquals("modifiedResults Created shouldn't match modifiedResult Modified", modifiedResults.get("Created"), modifiedResults.get("Modified")); + assertNotEquals("modifiedResults Modified shouldn't match runOriginalCreated", modifiedResults.get("Modified"), runOriginalCreated); + assertNotEquals("modifiedResults Modified shouldn't match runOriginalModified", modifiedResults.get("Modified"), runOriginalModified); + assertNotEquals("modifiedResults Modified shouldn't match modifiedRunResults Modified", modifiedResults.get("Modified"), modifiedRunResults.get("Modified")); // verify modified in provisioned result table no longer null after result edit dbResult = getRealResult(resultsTable.getSchema(), realResultsTable.getName(), resultRowId); - assertTrue(dbResult.get("Created") == null && dbResult.get("CreatedBy") == null); - assertFalse(dbResult.get("Modified") == null || dbResult.get("ModifiedBy") == null); - assertTrue(dbResult.get("Modified").equals(modifiedResults.get("Modified"))); - assertTrue(dbResult.get("ModifiedBy").equals(modifiedResults.get("ModifiedBy"))); + assertTrue("dbResult shouldn't have Created or CreatedBy", dbResult.get("Created") == null && dbResult.get("CreatedBy") == null); + assertFalse("dbResult didn't have a Modified or ModifiedBy", dbResult.get("Modified") == null || dbResult.get("ModifiedBy") == null); + assertEquals("dbResults Modified didn't match", dbResult.get("Modified"), modifiedResults.get("Modified")); + assertEquals("dbResults ModifiedBy didn't match", dbResult.get("ModifiedBy"), modifiedResults.get("ModifiedBy")); } @Test diff --git a/experiment/src/org/labkey/experiment/api/BaseFieldsTable.java b/experiment/src/org/labkey/experiment/api/BaseFieldsTable.java index d603739eb50..4bf53d7b80c 100644 --- a/experiment/src/org/labkey/experiment/api/BaseFieldsTable.java +++ b/experiment/src/org/labkey/experiment/api/BaseFieldsTable.java @@ -3,6 +3,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.labkey.api.data.BaseColumnInfo; +import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.JdbcType; import org.labkey.api.data.MutableColumnInfo; @@ -13,6 +14,7 @@ import org.labkey.api.query.FieldKey; import org.labkey.api.query.FilteredTable; import org.labkey.api.security.permissions.AdminPermission; +import org.labkey.api.security.permissions.Permission; public abstract class BaseFieldsTable extends FilteredTable { @@ -32,6 +34,18 @@ public BaseFieldsTable(String tableName, @NotNull ExpSchema userSchema, @Nullabl addWrapColumn(_rootTable.getColumn("Description")); addWrapColumn(_rootTable.getColumn("RangeURI")); addWrapColumn(_rootTable.getColumn("StorageColumnName")); + addWrapColumn(_rootTable.getColumn("ConceptURI")); + + // Add the other columns in case they're useful for future troubleshooting, but keep them out + // of the way by default + for (ColumnInfo column : _rootTable.getColumns()) + { + if (getColumn(column.getName()) == null) + { + addWrapColumn(column).setHidden(true); + } + } + } protected MutableColumnInfo addColumn(String name, JdbcType type) diff --git a/experiment/src/org/labkey/experiment/api/PhiFieldsTable.java b/experiment/src/org/labkey/experiment/api/PhiFieldsTable.java index 5f0bc9ce4b9..7f394aa1f1d 100644 --- a/experiment/src/org/labkey/experiment/api/PhiFieldsTable.java +++ b/experiment/src/org/labkey/experiment/api/PhiFieldsTable.java @@ -18,8 +18,9 @@ public PhiFieldsTable(@NotNull ExpSchema userSchema, @Nullable ContainerFilter c setDescription("Shows one row for each PHI-annotated field in the selected folder(s). Rows are shown in " + "a folder or project only if the user has administrator permissions in that folder."); - MutableColumnInfo phi = addColumn("PHI", JdbcType.VARCHAR); + MutableColumnInfo phi = getMutableColumnOrThrow("PHI"); phi.setDescription("PHI Annotation"); + phi.setHidden(false); addCondition(new SimpleFilter(phi.getFieldKey(), "NotPHI", CompareType.NEQ)); }