diff --git a/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java b/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java index 38d42d23233..af87f14db13 100644 --- a/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java +++ b/assay/api-src/org/labkey/api/assay/AssayResultDomainKind.java @@ -100,15 +100,6 @@ public Set getPropertyIndices(Domain domain) return PageFlowUtil.set(new PropertyStorageSpec.Index(false, AbstractTsvAssayProvider.DATA_ID_COLUMN_NAME)); } - @Override - public Set getPropertyForeignKeys(Container container) - { - return new HashSet<>(Arrays.asList( - new PropertyStorageSpec.ForeignKey(SpecialColumn.CreatedBy.name(), "core", "users", "userid", null, false), - new PropertyStorageSpec.ForeignKey(SpecialColumn.ModifiedBy.name(), "core", "users", "userid", null, false) - )); - } - @Override public DbScope getScope() { diff --git a/experiment/src/org/labkey/experiment/XarReader.java b/experiment/src/org/labkey/experiment/XarReader.java index 31791c10306..599fdec5394 100644 --- a/experiment/src/org/labkey/experiment/XarReader.java +++ b/experiment/src/org/labkey/experiment/XarReader.java @@ -97,6 +97,7 @@ import org.labkey.api.exp.api.ExperimentService; import org.labkey.api.exp.api.SampleTypeService; import org.labkey.api.exp.property.Domain; +import org.labkey.api.exp.property.DomainKind; import org.labkey.api.exp.property.DomainProperty; import org.labkey.api.exp.property.PropertyService; import org.labkey.api.exp.query.ExpMaterialTable; @@ -893,6 +894,10 @@ private Domain loadDomain(DomainDescriptorType xDomain) throws ExperimentExcepti try { + DomainKind kind = domain.getDomainKind(); + if (kind != null) + domain.setPropertyForeignKeys(kind.getPropertyForeignKeys(getContainer())); // GitHub Issue 1117 + domain.save(getUser()); DefaultValueService.get().setDefaultValues(domain.getContainer(), newDefaultValues); } diff --git a/experiment/src/org/labkey/experiment/api/SampleTypeServiceImpl.java b/experiment/src/org/labkey/experiment/api/SampleTypeServiceImpl.java index 9ba38e5d89b..f69d0948abe 100644 --- a/experiment/src/org/labkey/experiment/api/SampleTypeServiceImpl.java +++ b/experiment/src/org/labkey/experiment/api/SampleTypeServiceImpl.java @@ -835,7 +835,11 @@ public ExpSampleTypeImpl createSampleType(Container c, User u, String name, Stri Domain domain = PropertyService.get().createDomain(c, lsid, name, templateInfo); DomainKind kind = domain.getDomainKind(); if (kind != null) + { domain.setDisabledSystemFields(kind.getDisabledSystemFields(disabledSystemField)); + domain.setPropertyForeignKeys(kind.getPropertyForeignKeys(c)); // GitHub Issue 1117 + } + Set reservedNames = kind.getReservedPropertyNames(domain, u); Set reservedPrefixes = kind.getReservedPropertyNamePrefixes(); Set lowerReservedNames = reservedNames.stream().map(String::toLowerCase).collect(Collectors.toSet()); diff --git a/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java b/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java index 3b13e69f3ff..21e4632f511 100644 --- a/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java +++ b/experiment/src/org/labkey/experiment/api/property/StorageProvisionerImpl.java @@ -213,6 +213,15 @@ private String _create(DbScope scope, DomainKind kind, Domain domain, boolean indices.addAll(domain.getPropertyIndices()); change.setIndexedColumns(domain, indices); + /* + * TODO: + * GitHub Issue 1117: Consider the generic fix below for develop. See https://github.com/LabKey/platform/pull/7804 + * Tests may need updates and domains FKs (for example, issues) maybe need to adjusted. + * + * Set foreignKeys = new LinkedHashSet<>(kind.getPropertyForeignKeys(domain.getContainer())); + * foreignKeys.addAll(domain.getPropertyForeignKeys()); + * change.setForeignKeys(foreignKeys); + */ change.setForeignKeys(domain.getPropertyForeignKeys()); try