diff --git a/api/src/org/labkey/api/audit/query/AbstractAuditDomainKind.java b/api/src/org/labkey/api/audit/query/AbstractAuditDomainKind.java index c3dfbbb0b11..4c7635376cf 100644 --- a/api/src/org/labkey/api/audit/query/AbstractAuditDomainKind.java +++ b/api/src/org/labkey/api/audit/query/AbstractAuditDomainKind.java @@ -302,7 +302,7 @@ public boolean hasNullValues(Domain domain, DomainProperty prop) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { Set names = new HashSet<>(); diff --git a/api/src/org/labkey/api/exp/api/SampleTypeDomainKind.java b/api/src/org/labkey/api/exp/api/SampleTypeDomainKind.java index fba5debed21..12c86515f64 100644 --- a/api/src/org/labkey/api/exp/api/SampleTypeDomainKind.java +++ b/api/src/org/labkey/api/exp/api/SampleTypeDomainKind.java @@ -18,13 +18,11 @@ import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.compliance.ComplianceService; -import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.ContainerManager; @@ -47,6 +45,7 @@ import org.labkey.api.exp.property.AbstractDomainKind; import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainProperty; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.query.ExpMaterialTable; import org.labkey.api.exp.query.ExpSampleTypeTable; import org.labkey.api.exp.query.SamplesSchema; @@ -110,38 +109,30 @@ public class SampleTypeDomainKind extends AbstractDomainKind ColumnInfo.labelFromName(col.name())).toList()); - RESERVED_NAMES.addAll(Arrays.stream(ExpMaterialTable.Column.values()).map(ExpMaterialTable.Column::name).toList()); - RESERVED_NAMES.addAll(Arrays.stream(ExpMaterialTable.Column.values()).map(col -> ColumnInfo.labelFromName(col.name())).toList()); - RESERVED_NAMES.add("Sample Type"); // Issue 52716 - RESERVED_NAMES.add("SampleType"); // Issue 52716 - RESERVED_NAMES.add("Protocol"); // alias for "SourceProtocolApplication" - RESERVED_NAMES.add("SampleTypeUnits"); // alias for MetricUnit - RESERVED_NAMES.add("Sample Type Units"); - RESERVED_NAMES.add("CpasType"); - RESERVED_NAMES.add("Cpas Type"); - RESERVED_NAMES.add(ExpMaterial.ALIQUOTED_FROM_INPUT); - RESERVED_NAMES.add("Aliquoted From"); - RESERVED_NAMES.addAll(ALIQUOT_ROLLUP_FIELD_LABELS); - RESERVED_NAMES.add("AliquotTotalVolume"); // Issue 52158: Sample Manager: data type reserved field name and label inconsistencies - RESERVED_NAMES.add("Aliquot Total Volume"); // Issue 52158: Sample Manager: data type reserved field name and label inconsistencies - RESERVED_NAMES.add("Aliquoted From Parent"); - RESERVED_NAMES.add("Root Material"); - RESERVED_NAMES.add("RecomputeRollup"); - RESERVED_NAMES.add("Recompute Rollup"); - RESERVED_NAMES.add("Aliquot Unit"); - RESERVED_NAMES.add("ExpirationDate"); // alias for MaterialExpDate - RESERVED_NAMES.add("Expiration Date"); - RESERVED_NAMES.add("Ancestors"); - RESERVED_NAMES.add("Container"); - RESERVED_NAMES.add("SampleID"); // alias for Name - RESERVED_NAMES.add("Sample ID"); - RESERVED_NAMES.add("Status"); - RESERVED_NAMES.add("Amount"); // alias for storedAmount - RESERVED_NAMES.add("RunId"); // Issue 50461 - RESERVED_NAMES.add("Run Id"); + Set names = BASE_PROPERTIES.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet()); + names.addAll(Arrays.stream(ExpSampleTypeTable.Column.values()).map(Enum::name).toList()); + names.addAll(Arrays.stream(ExpMaterialTable.Column.values()).map(Enum::name).toList()); + names.addAll(List.of( + "SampleType", // Issue 52716 + "Protocol", // alias for "SourceProtocolApplication" + "SampleTypeUnits", // alias for MetricUnit + "CpasType", + ExpMaterial.ALIQUOTED_FROM_INPUT, + "AliquotTotalVolume", // Issue 52158 + "AliquotedFromParent", + "RootMaterial", + "RecomputeRollup", + "AliquotUnit", + "ExpirationDate", // alias for MaterialExpDate + "Ancestors", + "Container", + "SampleID", // alias for Name + "Status", + "Amount", // alias for storedAmount + "RunId" + )); + names.addAll(ALIQUOT_ROLLUP_FIELD_LABELS); + RESERVED_NAMES = DomainUtil.getNamesAndLabels(names); RESERVED_NAMES.addAll(InventoryService.InventoryStatusColumn.namesAndLabels()); FOREIGN_KEYS = Collections.unmodifiableSet(Sets.newLinkedHashSet(Arrays.asList( @@ -270,13 +261,13 @@ public Set getBaseProperties(Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return getReservedPropertyNames(domain, user, false); } @Override - public Set getReservedPropertyNames(Domain domain, User user, boolean forCreate) + public @NotNull Set getReservedPropertyNames(Domain domain, User user, boolean forCreate) { Set reserved = new CaseInsensitiveHashSet(RESERVED_NAMES); diff --git a/api/src/org/labkey/api/exp/property/DomainUtil.java b/api/src/org/labkey/api/exp/property/DomainUtil.java index cd6650edca8..be53dec1a47 100644 --- a/api/src/org/labkey/api/exp/property/DomainUtil.java +++ b/api/src/org/labkey/api/exp/property/DomainUtil.java @@ -1535,4 +1535,27 @@ private static Map getOriginalFieldPropertyIdNameMap(@Nullable } return null; } + + public static Set getNameAndLabels(String name) + { + Set values = new CaseInsensitiveHashSet(); + values.add(name); + String label = ColumnInfo.labelFromName(name); + values.add(label); + values.add(label.replaceAll("\\s", "")); + return values; + } + + public static Set getNamesAndLabels(Collection names) + { + Set values = new CaseInsensitiveHashSet(); + for (String name : names) + { + values.add(name); + String label = ColumnInfo.labelFromName(name); + values.add(label); + values.add(label.replaceAll("\\s", "")); + } + return values; + } } diff --git a/api/src/org/labkey/api/exp/property/TestDomainKind.java b/api/src/org/labkey/api/exp/property/TestDomainKind.java index 363125723f5..99aabb991f7 100644 --- a/api/src/org/labkey/api/exp/property/TestDomainKind.java +++ b/api/src/org/labkey/api/exp/property/TestDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.api.exp.property; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; import org.labkey.api.data.Container; @@ -147,7 +148,7 @@ public void deletePropertyDescriptor(Domain domain, User user, PropertyDescripto } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { throw new UnsupportedOperationException(); } diff --git a/api/src/org/labkey/api/query/SimpleTableDomainKind.java b/api/src/org/labkey/api/query/SimpleTableDomainKind.java index a5b5ac8581a..6ddb80b2af8 100644 --- a/api/src/org/labkey/api/query/SimpleTableDomainKind.java +++ b/api/src/org/labkey/api/query/SimpleTableDomainKind.java @@ -15,12 +15,11 @@ */ package org.labkey.api.query; -import com.google.common.base.Function; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerType; @@ -34,6 +33,7 @@ import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.BaseAbstractDomainKind; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.property.PropertyService; import org.labkey.api.exp.xar.LsidUtils; import org.labkey.api.gwt.client.model.GWTDomain; @@ -242,21 +242,16 @@ public boolean canEditDefinition(User user, Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { SimpleUserSchema.SimpleTable table = domain != null ? getTable(domain, user) : null; if (table != null) { - // return the set of built-in column names. - return Sets.newHashSet(Iterables.transform(table.getBuiltInColumns(), - new Function() { - @Override - public String apply(ColumnInfo col) - { - return col.getName(); - } - } - )); + Set set = new CaseInsensitiveHashSet(); + ((Iterable) table.getBuiltInColumns()).forEach(col -> { + set.addAll(DomainUtil.getNameAndLabels(col.getName())); + }); + return set; } return Collections.emptySet(); } diff --git a/assay/api-src/org/labkey/api/assay/AssayBatchDomainKind.java b/assay/api-src/org/labkey/api/assay/AssayBatchDomainKind.java index 090deac4b7c..c9389967fe3 100644 --- a/assay/api-src/org/labkey/api/assay/AssayBatchDomainKind.java +++ b/assay/api-src/org/labkey/api/assay/AssayBatchDomainKind.java @@ -15,11 +15,15 @@ */ package org.labkey.api.assay; +import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.query.ExpExperimentTable; import org.labkey.api.security.User; +import java.util.Arrays; import java.util.Set; /** @@ -28,6 +32,13 @@ */ public class AssayBatchDomainKind extends AssayDomainKind { + private static final Set RESERVED_NAMES; + + static { + RESERVED_NAMES = DomainUtil.getNamesAndLabels(Arrays.stream(ExpExperimentTable.Column.values()).map(ExpExperimentTable.Column::name).toList()); + RESERVED_NAMES.addAll(getAssayReservedPropertyNames()); + RESERVED_NAMES.addAll(DomainUtil.getNameAndLabels("AssayId")); + } public AssayBatchDomainKind() { super(ExpProtocol.ASSAY_DOMAIN_BATCH); @@ -40,16 +51,9 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set result = super.getAssayReservedPropertyNames(); - for (ExpExperimentTable.Column column : ExpExperimentTable.Column.values()) - { - result.add(column.toString()); - } - result.add("AssayId"); - result.add("Assay Id"); - return result; + return RESERVED_NAMES; } @Override diff --git a/assay/api-src/org/labkey/api/assay/AssayDomainKind.java b/assay/api-src/org/labkey/api/assay/AssayDomainKind.java index 111079ea908..582a4d43565 100644 --- a/assay/api-src/org/labkey/api/assay/AssayDomainKind.java +++ b/assay/api-src/org/labkey/api/assay/AssayDomainKind.java @@ -33,6 +33,7 @@ import org.labkey.api.exp.api.ExperimentService; import org.labkey.api.exp.property.BaseAbstractDomainKind; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.property.PropertyService; import org.labkey.api.gwt.client.DefaultValueType; import org.labkey.api.gwt.client.model.GWTDomain; @@ -48,6 +49,7 @@ import org.labkey.api.view.ActionURL; import org.labkey.api.writer.ContainerUser; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -55,6 +57,21 @@ public abstract class AssayDomainKind extends BaseAbstractDomainKind { private final String _namespacePrefix; private final Priority _priority; + private static final Set RESERVED_NAMES; + static { + Set s = DomainUtil.getNamesAndLabels(List.of( + "RowId", + "Container", + "LSID", + "Owner", + "CreatedBy", + "Created", + "ModifiedBy", + "Modified" + )); + // make this an unmodifiable set because many domains build from this set but shouldn't alter the base set + RESERVED_NAMES = Collections.unmodifiableSet(s); + } protected AssayDomainKind(String namespacePrefix) { @@ -210,19 +227,9 @@ public Domain createDomain(GWTDomain domain, JSONObject arguments, Container con return PropertyService.get().getDomain(container, dd.getDomainURI(), forUpdate); } - protected Set getAssayReservedPropertyNames() + protected static Set getAssayReservedPropertyNames() { - Set result = new CaseInsensitiveHashSet(); - result.add("RowId"); - result.add("Row Id"); - result.add("Container"); - result.add("LSID"); - result.add("Owner"); - result.add("CreatedBy"); - result.add("Created"); - result.add("ModifiedBy"); - result.add("Modified"); - return result; + return RESERVED_NAMES; } @Override diff --git a/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java b/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java index a72c27169b7..d6e4000a671 100644 --- a/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java +++ b/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java @@ -16,6 +16,8 @@ package org.labkey.api.assay; +import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.Container; import org.labkey.api.data.DbSchema; import org.labkey.api.data.DbScope; @@ -25,6 +27,7 @@ import org.labkey.api.exp.PropertyDescriptor; import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.query.FieldKey; import org.labkey.api.security.User; import org.labkey.api.util.PageFlowUtil; @@ -32,6 +35,7 @@ import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import static org.labkey.api.assay.AssayFileWriter.DIR_NAME; @@ -42,6 +46,13 @@ public class AssayResultDomainKind extends AssayDomainKind { + private static final Set RESERVED_NAMES; + static + { + RESERVED_NAMES = new CaseInsensitiveHashSet(getAssayReservedPropertyNames()); + RESERVED_NAMES.addAll(DomainUtil.getNamesAndLabels(List.of("Run", "DataId"))); + } + public enum Column { Plate, @@ -119,12 +130,9 @@ public DbSchema getSchema() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set result = getAssayReservedPropertyNames(); - result.add("Run"); - result.add("DataId"); - return result; + return RESERVED_NAMES; } @Override diff --git a/assay/api-src/org/labkey/api/assay/AssayRunDomainKind.java b/assay/api-src/org/labkey/api/assay/AssayRunDomainKind.java index 1af89502bda..0d3f46c04ee 100644 --- a/assay/api-src/org/labkey/api/assay/AssayRunDomainKind.java +++ b/assay/api-src/org/labkey/api/assay/AssayRunDomainKind.java @@ -15,17 +15,33 @@ */ package org.labkey.api.assay; +import org.jetbrains.annotations.NotNull; import org.labkey.api.assay.plate.AssayPlateMetadataService; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.query.ExpRunTable; import org.labkey.api.security.User; import org.labkey.api.util.Pair; +import java.util.Arrays; +import java.util.HashSet; import java.util.Set; +import java.util.stream.Collectors; public class AssayRunDomainKind extends AssayDomainKind { + private static final Set RESERVED_NAMES; + static + { + Set names = new HashSet<>(getAssayReservedPropertyNames()); + names.add("AssayId"); + names.addAll(Arrays.stream(ExpRunTable.Column.values()).map(Enum::name).collect(Collectors.toSet())); + + RESERVED_NAMES = DomainUtil.getNamesAndLabels(names); + } + public AssayRunDomainKind() { super(ExpProtocol.ASSAY_DOMAIN_RUN); @@ -38,16 +54,9 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set result = getAssayReservedPropertyNames(); - for (ExpRunTable.Column column : ExpRunTable.Column.values()) - { - result.add(column.toString()); - } - result.add("AssayId"); - result.add("Assay Id"); - return result; + return RESERVED_NAMES; } @Override diff --git a/assay/src/org/labkey/assay/DefaultAssayDomainKind.java b/assay/src/org/labkey/assay/DefaultAssayDomainKind.java index 60802a7e691..56fef31c8f8 100644 --- a/assay/src/org/labkey/assay/DefaultAssayDomainKind.java +++ b/assay/src/org/labkey/assay/DefaultAssayDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.assay; +import org.jetbrains.annotations.NotNull; import org.labkey.api.assay.AssayDomainKind; import org.labkey.api.exp.api.ExpProtocol; import org.labkey.api.exp.property.Domain; @@ -42,7 +43,7 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return getAssayReservedPropertyNames(); } diff --git a/assay/src/org/labkey/assay/PlateBasedAssaySampleTypeDomainKind.java b/assay/src/org/labkey/assay/PlateBasedAssaySampleTypeDomainKind.java index 95e1f781a9b..a87b0de7996 100644 --- a/assay/src/org/labkey/assay/PlateBasedAssaySampleTypeDomainKind.java +++ b/assay/src/org/labkey/assay/PlateBasedAssaySampleTypeDomainKind.java @@ -34,6 +34,7 @@ import org.labkey.api.writer.ContainerUser; import org.labkey.api.exp.api.SampleTypeDomainKind; +import java.util.Collections; import java.util.Set; /** @@ -56,9 +57,9 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - return null; + return Collections.emptySet(); } }; } diff --git a/assay/src/org/labkey/assay/plate/PlateMetadataDomainKind.java b/assay/src/org/labkey/assay/plate/PlateMetadataDomainKind.java index b5a3d7f1684..7adec4b0deb 100644 --- a/assay/src/org/labkey/assay/plate/PlateMetadataDomainKind.java +++ b/assay/src/org/labkey/assay/plate/PlateMetadataDomainKind.java @@ -73,7 +73,7 @@ public enum Column static { - RESERVED_NAMES = new CaseInsensitiveHashSet(Arrays.stream(Column.values()).map(Enum::name).toList()); + RESERVED_NAMES = DomainUtil.getNamesAndLabels(Arrays.stream(Column.values()).map(Enum::name).toList()); INDEXES = Set.of(new PropertyStorageSpec.Index(true, Column.Lsid.name())); REQUIRED_PROPS = List.of( new PropertyStorageSpec(Column.Amount.name(), JdbcType.DOUBLE), @@ -217,7 +217,7 @@ public SQLFragment sqlObjectIdsInDomain(Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return RESERVED_NAMES; } diff --git a/assay/src/org/labkey/assay/plate/PlateReplicateStatsDomainKind.java b/assay/src/org/labkey/assay/plate/PlateReplicateStatsDomainKind.java index 3f9afa3bfb6..a25e0911006 100644 --- a/assay/src/org/labkey/assay/plate/PlateReplicateStatsDomainKind.java +++ b/assay/src/org/labkey/assay/plate/PlateReplicateStatsDomainKind.java @@ -1,5 +1,6 @@ package org.labkey.assay.plate; +import org.jetbrains.annotations.NotNull; import org.labkey.api.assay.AbstractTsvAssayProvider; import org.labkey.api.assay.AssayDomainKind; import org.labkey.api.assay.plate.PlateSet; @@ -50,7 +51,7 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return getAssayReservedPropertyNames(); } diff --git a/core/src/org/labkey/core/query/UsersDomainKind.java b/core/src/org/labkey/core/query/UsersDomainKind.java index b5fcceed910..20fc332bf43 100644 --- a/core/src/org/labkey/core/query/UsersDomainKind.java +++ b/core/src/org/labkey/core/query/UsersDomainKind.java @@ -15,8 +15,10 @@ */ package org.labkey.core.query; +import org.jetbrains.annotations.NotNull; import org.json.JSONObject; import org.labkey.api.collections.CaseInsensitiveHashMap; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerManager; @@ -31,6 +33,7 @@ import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainProperty; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.property.PropertyService; import org.labkey.api.gwt.client.model.GWTDomain; import org.labkey.api.module.ModuleContext; @@ -57,23 +60,26 @@ public class UsersDomainKind extends SimpleTableDomainKind { public static final String NAME = "CoreUsersTable"; - private static final Set _reservedNames = new HashSet<>(); + private static final Set _reservedNames; private static final List _requiredProperties = new ArrayList<>(); static { - _reservedNames.add("Email"); - _reservedNames.add("_ts"); - _reservedNames.add("EntityId"); - _reservedNames.add("CreatedBy"); - _reservedNames.add("Created"); - _reservedNames.add("ModifiedBy"); - _reservedNames.add("Modified"); - _reservedNames.add("Owner"); - _reservedNames.add("UserId"); - _reservedNames.add("DisplayName"); - _reservedNames.add("LastLogin"); - _reservedNames.add("Active"); - _reservedNames.add("ExpirationDate"); + _reservedNames = DomainUtil.getNamesAndLabels(List.of( + "Email", + "_ts", + "EntityId", + "CreatedBy", + "Created", + "ModifiedBy", + "Modified", + "Owner", + "UserId", + "DisplayName", + "LastLogin", + "Active", + "ExpirationDate" + )); + _requiredProperties.add(new PropertyDescriptorSpec("FirstName", PropertyType.STRING, 64, false)); _requiredProperties.add(new PropertyDescriptorSpec("LastName", PropertyType.STRING, 64, false)); @@ -154,7 +160,7 @@ public Domain createDomain(GWTDomain domain, JSONObject arguments, Container con } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return _reservedNames; } diff --git a/experiment/src/org/labkey/experiment/api/DataClassDomainKind.java b/experiment/src/org/labkey/experiment/api/DataClassDomainKind.java index 7efec176896..3261a0f7d6c 100644 --- a/experiment/src/org/labkey/experiment/api/DataClassDomainKind.java +++ b/experiment/src/org/labkey/experiment/api/DataClassDomainKind.java @@ -22,7 +22,6 @@ import org.jetbrains.annotations.Nullable; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.compliance.ComplianceService; -import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.DbSchema; @@ -46,6 +45,7 @@ import org.labkey.api.exp.api.SampleTypeService; import org.labkey.api.exp.property.AbstractDomainKind; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.query.DataClassUserSchema; import org.labkey.api.exp.query.ExpDataClassDataTable; import org.labkey.api.gwt.client.DefaultValueType; @@ -70,6 +70,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -100,13 +101,13 @@ public class DataClassDomainKind extends AbstractDomainKind names = new HashSet<>(); + names.addAll(BASE_PROPERTIES.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet())); + names.addAll(Arrays.stream(ExpDataClassDataTable.Column.values()).map(ExpDataClassDataTable.Column::name).toList()); + names.add("RunId"); // Issue 50461 + names.add("Container"); - RESERVED_NAMES = new CaseInsensitiveHashSet(BASE_PROPERTIES.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet())); - RESERVED_NAMES.addAll(Arrays.stream(ExpDataClassDataTable.Column.values()).map(ExpDataClassDataTable.Column::name).toList()); - RESERVED_NAMES.addAll(Arrays.stream(ExpDataClassDataTable.Column.values()).map(col -> ColumnInfo.labelFromName(col.name())).toList()); - RESERVED_NAMES.add("Container"); - RESERVED_NAMES.add("RunId"); // Issue 50461 - RESERVED_NAMES.add("Run Id"); + RESERVED_NAMES = DomainUtil.getNamesAndLabels(names); FOREIGN_KEYS = Collections.unmodifiableSet(Sets.newLinkedHashSet(Arrays.asList( // NOTE: We join to exp.data using LSID instead of rowid for insert performance -- we will generate @@ -221,7 +222,7 @@ public Set getBaseProperties(Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return RESERVED_NAMES; } diff --git a/experiment/src/org/labkey/experiment/api/VocabularyDomainKind.java b/experiment/src/org/labkey/experiment/api/VocabularyDomainKind.java index daddfde1180..2ffec105742 100644 --- a/experiment/src/org/labkey/experiment/api/VocabularyDomainKind.java +++ b/experiment/src/org/labkey/experiment/api/VocabularyDomainKind.java @@ -1,6 +1,7 @@ package org.labkey.experiment.api; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; import org.labkey.api.collections.CaseInsensitiveHashSet; @@ -26,7 +27,6 @@ import org.labkey.api.writer.ContainerUser; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -37,6 +37,13 @@ public class VocabularyDomainKind extends BaseAbstractDomainKind { public static final String KIND_NAME = "Vocabulary"; + private static final Set RESERVED_PROPERTY_NAMES; + static + { + RESERVED_PROPERTY_NAMES = DomainUtil.getNamesAndLabels( + List.of("RowId", "LSID", "EntityId", "Container", "Folder", "CreatedBy", "Created", "ModifiedBy", "Modified", "Owner", "LastIndexed") + ); + } @Override public String getKindName() @@ -72,21 +79,9 @@ public ActionURL urlShowData(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set reservedProperties = new HashSet<>(); - reservedProperties.add("RowId"); - reservedProperties.add("LSID"); - reservedProperties.add("EntityId"); - reservedProperties.add("Container"); - reservedProperties.add("Folder"); - reservedProperties.add("CreatedBy"); - reservedProperties.add("Created"); - reservedProperties.add("ModifiedBy"); - reservedProperties.add("Modified"); - reservedProperties.add("Owner"); - reservedProperties.add("LastIndexed"); - return reservedProperties; + return RESERVED_PROPERTY_NAMES; } @Override diff --git a/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java b/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java index 75c01943dcd..47cd48e4b94 100644 --- a/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java +++ b/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java @@ -98,6 +98,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; @@ -1712,9 +1713,9 @@ public ActionURL urlShowData(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - return Set.of(); + return Collections.emptySet(); } @Override diff --git a/filecontent/src/org/labkey/filecontent/FilePropertiesDomainKind.java b/filecontent/src/org/labkey/filecontent/FilePropertiesDomainKind.java index b62130335ec..1ba6a86b513 100644 --- a/filecontent/src/org/labkey/filecontent/FilePropertiesDomainKind.java +++ b/filecontent/src/org/labkey/filecontent/FilePropertiesDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.filecontent; +import org.jetbrains.annotations.NotNull; import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.compliance.ComplianceService; import org.labkey.api.data.SQLFragment; @@ -22,6 +23,7 @@ import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.BaseAbstractDomainKind; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.query.ExpDataTable; import org.labkey.api.gwt.client.DefaultValueType; import org.labkey.api.security.User; @@ -31,8 +33,10 @@ import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; /** * User: klum @@ -56,11 +60,10 @@ public class FilePropertiesDomainKind extends BaseAbstractDomainKind private static final Set _reservedFieldSet; static { - Set s = new CaseInsensitiveHashSet(RESERVED_FIELDS); + Set s = new HashSet<>(RESERVED_FIELDS); - for (ExpDataTable.Column col : ExpDataTable.Column.values()) - s.add(col.name()); - _reservedFieldSet = Collections.unmodifiableSet(s); + s.addAll(Arrays.stream(ExpDataTable.Column.values()).map(Enum::name).collect(Collectors.toSet())); + _reservedFieldSet = Collections.unmodifiableSet(DomainUtil.getNamesAndLabels(s)); } @Override @@ -101,7 +104,7 @@ public ActionURL urlEditDefinition(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return _reservedFieldSet; } @@ -118,12 +121,6 @@ public DefaultValueType[] getDefaultValueOptions(Domain domain) return new DefaultValueType[] { DefaultValueType.FIXED_EDITABLE, DefaultValueType.FIXED_NON_EDITABLE }; } - @Override - public DefaultValueType getDefaultDefaultType(Domain domain) - { - return DefaultValueType.FIXED_EDITABLE; - } - @Override public boolean supportsPhiLevel() { diff --git a/issues/src/org/labkey/issue/query/IssueDefDomainKind.java b/issues/src/org/labkey/issue/query/IssueDefDomainKind.java index ac2da140aeb..c13921cea88 100644 --- a/issues/src/org/labkey/issue/query/IssueDefDomainKind.java +++ b/issues/src/org/labkey/issue/query/IssueDefDomainKind.java @@ -16,6 +16,8 @@ package org.labkey.issue.query; import com.google.common.collect.Sets; +import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.Container; import org.labkey.api.data.JdbcType; import org.labkey.api.data.PropertyStorageSpec; @@ -23,6 +25,7 @@ import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainTemplate; import org.labkey.api.exp.property.DomainTemplateGroup; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.gwt.client.DefaultValueType; import org.labkey.api.issues.AbstractIssuesListDefDomainKind; import org.labkey.api.query.BatchValidationException; @@ -83,23 +86,25 @@ public class IssueDefDomainKind extends AbstractIssuesListDefDomainKind new PropertyStorageSpec.ForeignKey(RESOLUTION_LOOKUP, "Lists", RESOLUTION_LOOKUP, "value", null, false) ))); - RESERVED_NAMES = BASE_PROPERTIES.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet()); - RESERVED_NAMES.addAll(Arrays.asList("RowId", "Name")); - RESERVED_NAMES.addAll(REQUIRED_PROPERTIES + Set names = new HashSet<>(); + names.addAll(BASE_PROPERTIES.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet())); + names.addAll(REQUIRED_PROPERTIES .stream() - .filter(p -> !OPTIONAL_NAMES.contains(p.getName())) .map(PropertyStorageSpec::getName) + .filter(name -> !OPTIONAL_NAMES.contains(name)) .collect(Collectors.toSet())); - - // field names that are contained in the issues table that get's joined to the provisioned table - RESERVED_NAMES.addAll(Arrays.asList("IssueId", "AssignedTo", "Modified", "ModifiedBy", - "Created", "CreatedBy", "Resolved", "ResolvedBy", "Status", "BuildFound", - "Tag", "Resolution", "Duplicate", "ClosedBy", "Closed", "LastIndexed", "IssueDefId")); + names.add("RowId"); + names.add("Name"); + // field names that are contained in the issues table that gets joined to the provisioned table + names.addAll(Arrays.asList("IssueId", "AssignedTo", "Modified", "ModifiedBy", + "Created", "CreatedBy", "Resolved", "ResolvedBy", "Status", "BuildFound", + "Tag", "Resolution", "Duplicate", "ClosedBy", "Closed", "LastIndexed", "IssueDefId")); + RESERVED_NAMES = DomainUtil.getNamesAndLabels(names); MANDATORY_PROPERTIES = REQUIRED_PROPERTIES .stream() - .filter(p -> !OPTIONAL_NAMES.contains(p.getName())) .map(PropertyStorageSpec::getName) + .filter(name -> !OPTIONAL_NAMES.contains(name)) .collect(Collectors.toSet()); } @@ -110,7 +115,7 @@ public String getKindName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return RESERVED_NAMES; } diff --git a/list/src/org/labkey/list/model/ListDomainKind.java b/list/src/org/labkey/list/model/ListDomainKind.java index 01ff5caa5b8..6c38b91460a 100644 --- a/list/src/org/labkey/list/model/ListDomainKind.java +++ b/list/src/org/labkey/list/model/ListDomainKind.java @@ -27,7 +27,6 @@ import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.Container; import org.labkey.api.data.ContainerFilter; -import org.labkey.api.data.ContainerManager; import org.labkey.api.data.DbScope; import org.labkey.api.data.JdbcType; import org.labkey.api.data.PropertyStorageSpec; @@ -96,6 +95,7 @@ public abstract class ListDomainKind extends AbstractDomainKind BASE_PROPERTIES; private ListDefinitionImpl _list; private final static int MAX_NAME_LENGTH = 200; + private static final Set RESERVED_NAMES; static { @@ -107,6 +107,8 @@ public abstract class ListDomainKind extends AbstractDomainKind getSupportedKeyTypes(); @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set properties = new CaseInsensitiveHashSet(); - for (PropertyStorageSpec pss : BASE_PROPERTIES) - { - properties.add(pss.getName()); - } - - return Collections.unmodifiableSet(properties); + return RESERVED_NAMES; } @Override diff --git a/study/api-src/org/labkey/api/specimen/model/AbstractSpecimenDomainKind.java b/study/api-src/org/labkey/api/specimen/model/AbstractSpecimenDomainKind.java index 7ab93f2d336..ff6e23acca5 100644 --- a/study/api-src/org/labkey/api/specimen/model/AbstractSpecimenDomainKind.java +++ b/study/api-src/org/labkey/api/specimen/model/AbstractSpecimenDomainKind.java @@ -34,6 +34,7 @@ import org.labkey.api.exp.property.BaseAbstractDomainKind; import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainProperty; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.gwt.client.model.GWTDomain; import org.labkey.api.gwt.client.model.GWTPropertyDescriptor; import org.labkey.api.query.SimpleValidationError; @@ -143,9 +144,9 @@ public Priority getPriority(String domainURI) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - return new HashSet<>(); + return Collections.emptySet(); } @Override diff --git a/study/api-src/org/labkey/api/specimen/model/SpecimenDomainKind.java b/study/api-src/org/labkey/api/specimen/model/SpecimenDomainKind.java index 255c67e6411..03d0d8f652e 100644 --- a/study/api-src/org/labkey/api/specimen/model/SpecimenDomainKind.java +++ b/study/api-src/org/labkey/api/specimen/model/SpecimenDomainKind.java @@ -25,6 +25,7 @@ import org.labkey.api.exp.PropertyDescriptor; import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.gwt.client.model.GWTDomain; import org.labkey.api.gwt.client.model.GWTPropertyDescriptor; import org.labkey.api.query.PropertyValidationError; @@ -46,6 +47,8 @@ public final class SpecimenDomainKind extends AbstractSpecimenDomainKind { + private static final Set RESERVED_FIELD_NAMES = DomainUtil.getNamesAndLabels(List.of(COMMENTS, COLUMN)); + private static final String NAME = "Specimen"; private static final String NAMESPACE_PREFIX = "Specimen"; @@ -224,11 +227,8 @@ public ActionURL urlEditDefinition(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set names = new HashSet<>(); - names.add(COMMENTS); - names.add(COLUMN); - return names; + return RESERVED_FIELD_NAMES; } } diff --git a/study/api-src/org/labkey/api/specimen/model/SpecimenEventDomainKind.java b/study/api-src/org/labkey/api/specimen/model/SpecimenEventDomainKind.java index 81d6f8a96c5..f66ebf80483 100644 --- a/study/api-src/org/labkey/api/specimen/model/SpecimenEventDomainKind.java +++ b/study/api-src/org/labkey/api/specimen/model/SpecimenEventDomainKind.java @@ -19,11 +19,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.JSONObject; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.Container; import org.labkey.api.data.JdbcType; import org.labkey.api.data.PropertyStorageSpec; import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.gwt.client.model.GWTDomain; import org.labkey.api.gwt.client.model.GWTPropertyDescriptor; import org.labkey.api.query.PropertyValidationError; @@ -44,6 +46,8 @@ public final class SpecimenEventDomainKind extends AbstractSpecimenDomainKind { + private static final Set RESERVED_FIELD_NAMES = new CaseInsensitiveHashSet(DomainUtil.getNameAndLabels(COLUMN)); + private static final String NAME = "SpecimenEvent"; private static final String NAMESPACE_PREFIX = "SpecimenEvent"; @@ -264,10 +268,8 @@ public ActionURL urlEditDefinition(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set names = new HashSet<>(); - names.add(COLUMN); - return names; + return RESERVED_FIELD_NAMES; } } diff --git a/study/api-src/org/labkey/api/specimen/model/VialDomainKind.java b/study/api-src/org/labkey/api/specimen/model/VialDomainKind.java index 1d67a539bed..b2cbf38da37 100644 --- a/study/api-src/org/labkey/api/specimen/model/VialDomainKind.java +++ b/study/api-src/org/labkey/api/specimen/model/VialDomainKind.java @@ -26,6 +26,7 @@ import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.Domain; import org.labkey.api.exp.property.DomainProperty; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.gwt.client.model.GWTDomain; import org.labkey.api.gwt.client.model.GWTPropertyDescriptor; import org.labkey.api.query.PropertyValidationError; @@ -47,6 +48,8 @@ public final class VialDomainKind extends AbstractSpecimenDomainKind { + private static final Set RESERVED_FIELD_NAMES = DomainUtil.getNamesAndLabels(List.of(COMMENTS, COLUMN)); + private static final String NAME = "Vial"; private static final String NAMESPACE_PREFIX = "Vial"; @@ -228,11 +231,8 @@ public ActionURL urlEditDefinition(Domain domain, ContainerUser containerUser) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set names = new HashSet<>(); - names.add(COMMENTS); - names.add(COLUMN); - return names; + return RESERVED_FIELD_NAMES; } } diff --git a/study/api-src/org/labkey/api/studydesign/query/AbstractStudyDesignDomainKind.java b/study/api-src/org/labkey/api/studydesign/query/AbstractStudyDesignDomainKind.java index 8e589c84395..d5e4df0f9dd 100644 --- a/study/api-src/org/labkey/api/studydesign/query/AbstractStudyDesignDomainKind.java +++ b/study/api-src/org/labkey/api/studydesign/query/AbstractStudyDesignDomainKind.java @@ -15,6 +15,8 @@ */ package org.labkey.api.studydesign.query; +import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.Container; import org.labkey.api.data.DbScope; import org.labkey.api.data.JdbcType; @@ -27,6 +29,7 @@ import org.labkey.api.exp.api.ExperimentUrls; import org.labkey.api.exp.property.BaseAbstractDomainKind; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.exp.property.PropertyService; import org.labkey.api.exp.xar.LsidUtils; import org.labkey.api.query.QueryAction; @@ -37,9 +40,9 @@ import org.labkey.api.writer.ContainerUser; import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; +import java.util.stream.Collectors; public abstract class AbstractStudyDesignDomainKind extends BaseAbstractDomainKind { @@ -50,6 +53,7 @@ public abstract class AbstractStudyDesignDomainKind extends BaseAbstractDomainKi private static final String DOMAIN_LSID_TEMPLATE = "${FolderLSIDBase}:${TableName}"; private static final Set BASE_FIELDS; + private static final Set RESERVED_PROPERTY_NAMES; static { @@ -61,6 +65,7 @@ public abstract class AbstractStudyDesignDomainKind extends BaseAbstractDomainKi baseFields.add(createFieldSpec("ModifiedBy", JdbcType.INTEGER)); BASE_FIELDS = Collections.unmodifiableSet(baseFields); + RESERVED_PROPERTY_NAMES = DomainUtil.getNamesAndLabels(baseFields.stream().map(PropertyStorageSpec::getName).collect(Collectors.toSet())); } private final Set _standardFields = new LinkedHashSet<>(BASE_FIELDS); @@ -159,14 +164,9 @@ public String getStorageSchemaName() } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - Set names = new HashSet<>(); - - for (PropertyStorageSpec spec : getBaseProperties(domain)) - names.add(spec.getName()); - - return names; + return RESERVED_PROPERTY_NAMES; } protected static PropertyStorageSpec createFieldSpec(String name, JdbcType jdbcType) diff --git a/study/src/org/labkey/study/model/BaseStudyDomainKind.java b/study/src/org/labkey/study/model/BaseStudyDomainKind.java index badc6293fe1..c1f7f08728c 100644 --- a/study/src/org/labkey/study/model/BaseStudyDomainKind.java +++ b/study/src/org/labkey/study/model/BaseStudyDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.study.model; +import org.jetbrains.annotations.NotNull; import org.labkey.api.data.Container; import org.labkey.api.data.SQLFragment; import org.labkey.api.data.TableInfo; @@ -72,7 +73,7 @@ public SQLFragment sqlObjectIdsInDomain(Domain domain) protected abstract TableInfo getTableInfo(); @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { TableInfo table = getTableInfo(); return table.getColumnNameSet(); diff --git a/study/src/org/labkey/study/model/ContinuousDatasetDomainKind.java b/study/src/org/labkey/study/model/ContinuousDatasetDomainKind.java index 3e314a9a557..24029c4e5ee 100644 --- a/study/src/org/labkey/study/model/ContinuousDatasetDomainKind.java +++ b/study/src/org/labkey/study/model/ContinuousDatasetDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.study.model; +import org.jetbrains.annotations.NotNull; import org.labkey.api.exp.property.Domain; import org.labkey.api.security.User; import org.labkey.api.study.TimepointType; @@ -55,7 +56,7 @@ public Set getMandatoryPropertyNames(Domain domain) @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { HashSet fields = new HashSet<>(getStudySubjectReservedName(domain)); fields.addAll(DatasetDefinition.DEFAULT_ABSOLUTE_DATE_FIELDS); diff --git a/study/src/org/labkey/study/model/DatasetDomainKind.java b/study/src/org/labkey/study/model/DatasetDomainKind.java index 7210771238e..be77b3f371d 100644 --- a/study/src/org/labkey/study/model/DatasetDomainKind.java +++ b/study/src/org/labkey/study/model/DatasetDomainKind.java @@ -283,21 +283,21 @@ DatasetDefinition getDatasetDefinition(String domainURI) // Issue 43898: Add the study subject name column to reserved fields protected Set getStudySubjectReservedName(Domain domain) { - HashSet fields = new HashSet<>(); + HashSet fields = new CaseInsensitiveHashSet(); if (null != domain) { Study study = StudyManager.getInstance().getStudy(domain.getContainer()); if (null != study) { String participantIdField = study.getSubjectColumnName(); - fields.add(participantIdField); + fields.addAll(DomainUtil.getNameAndLabels(participantIdField)); } } return Collections.unmodifiableSet(fields); } @Override - public abstract Set getReservedPropertyNames(Domain domain, User user); + public abstract @NotNull Set getReservedPropertyNames(Domain domain, User user); @Override public Set getBaseProperties(Domain domain) diff --git a/study/src/org/labkey/study/model/DateDatasetDomainKind.java b/study/src/org/labkey/study/model/DateDatasetDomainKind.java index 56eb4d00104..3a0f22f52a3 100644 --- a/study/src/org/labkey/study/model/DateDatasetDomainKind.java +++ b/study/src/org/labkey/study/model/DateDatasetDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.study.model; +import org.jetbrains.annotations.NotNull; import org.labkey.api.exp.property.Domain; import org.labkey.api.security.User; import org.labkey.api.study.TimepointType; @@ -57,11 +58,11 @@ public Set getMandatoryPropertyNames(Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { HashSet fields = new HashSet<>(getStudySubjectReservedName(domain)); fields.addAll(DatasetDefinition.DEFAULT_RELATIVE_DATE_FIELDS); return Collections.unmodifiableSet(fields); } -} \ No newline at end of file +} diff --git a/study/src/org/labkey/study/model/TestDatasetDomainKind.java b/study/src/org/labkey/study/model/TestDatasetDomainKind.java index 923dbbe0caf..6fe00579cc8 100644 --- a/study/src/org/labkey/study/model/TestDatasetDomainKind.java +++ b/study/src/org/labkey/study/model/TestDatasetDomainKind.java @@ -15,6 +15,7 @@ */ package org.labkey.study.model; +import org.jetbrains.annotations.NotNull; import org.labkey.api.data.PropertyStorageSpec; import org.labkey.api.exp.property.Domain; import org.labkey.api.security.User; @@ -48,7 +49,7 @@ public Priority getPriority(String domainURI) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { return Collections.emptySet(); } diff --git a/study/src/org/labkey/study/model/VisitDatasetDomainKind.java b/study/src/org/labkey/study/model/VisitDatasetDomainKind.java index 587081d6cc2..a0ce687a04c 100644 --- a/study/src/org/labkey/study/model/VisitDatasetDomainKind.java +++ b/study/src/org/labkey/study/model/VisitDatasetDomainKind.java @@ -15,9 +15,12 @@ */ package org.labkey.study.model; +import org.jetbrains.annotations.NotNull; +import org.labkey.api.collections.CaseInsensitiveHashSet; import org.labkey.api.data.PropertyStorageSpec; import org.labkey.api.data.TableInfo; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainUtil; import org.labkey.api.security.User; import org.labkey.api.study.Study; import org.labkey.api.study.StudyService; @@ -58,10 +61,10 @@ public Set getMandatoryPropertyNames(Domain domain) } @Override - public Set getReservedPropertyNames(Domain domain, User user) + public @NotNull Set getReservedPropertyNames(Domain domain, User user) { - HashSet fields = new HashSet<>(getStudySubjectReservedName(domain)); - fields.addAll(DatasetDefinition.DEFAULT_VISIT_FIELDS); + Set fields = DomainUtil.getNamesAndLabels(DatasetDefinition.DEFAULT_VISIT_FIELDS); + fields.addAll(getStudySubjectReservedName(domain)); return Collections.unmodifiableSet(fields); }