diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyAssignment.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyAssignment.java index d209647f2d77b53cb7b87b9c14658cab576c4ed7..b6ef6e7551da4bf6c4f5055c6a5acab4c1dbbebc 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyAssignment.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyAssignment.java @@ -93,6 +93,12 @@ public class PropertyAssignment @JsonProperty private boolean managedInternally; + @JsonProperty + private String pattern; + + @JsonProperty + private String patternType; + // Method automatically generated with DtoGenerator @JsonIgnore public PropertyAssignmentFetchOptions getFetchOptions() @@ -336,6 +342,28 @@ public class PropertyAssignment this.managedInternally = managedInternally; } + @JsonIgnore + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + @JsonIgnore + public String getPatternType() + { + return patternType; + } + + public void setPatternType(String patternType) + { + this.patternType = patternType; + } + // Method automatically generated with DtoGenerator @Override public String toString() diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyType.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyType.java index 5bd3ada1f5d041558cb20b37c737ebc5554ac64a..19d0a956bfcbd0ccc0a1d470fb3d55b063a70e6d 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyType.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/PropertyType.java @@ -99,12 +99,6 @@ public class PropertyType implements Serializable, ICodeHolder, IDescriptionHold @JsonProperty private Boolean multiValue; - @JsonProperty - private String pattern; - - @JsonProperty - private String patternType; - // Method automatically generated with DtoGenerator @JsonIgnore public PropertyTypeFetchOptions getFetchOptions() @@ -379,28 +373,6 @@ public class PropertyType implements Serializable, ICodeHolder, IDescriptionHold this.multiValue = multiValue; } - @JsonIgnore - public String getPattern() - { - return pattern; - } - - public void setPattern(String pattern) - { - this.pattern = pattern; - } - - @JsonIgnore - public String getPatternType() - { - return patternType; - } - - public void setPatternType(String patternType) - { - this.patternType = patternType; - } - // Method automatically generated with DtoGenerator @Override public String toString() diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyAssignmentCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyAssignmentCreation.java index 28dcf5f9b27c38b7f00fb615acea375d87af8c5f..b62cfb13a615d2017bdc8cc0236f966bffabcaae 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyAssignmentCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyAssignmentCreation.java @@ -49,6 +49,10 @@ public class PropertyAssignmentCreation implements ICreation private boolean managedInternally = false; + private String patternType; + + private String pattern; + public String getSection() { return section; @@ -149,6 +153,26 @@ public class PropertyAssignmentCreation implements ICreation this.managedInternally = managedInternally; } + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + public String getPatternType() + { + return patternType; + } + + public void setPatternType(String patternType) + { + this.patternType = patternType; + } + @Override public String toString() { diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyTypeCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyTypeCreation.java index 00d7f5d61a02981ff666d801c911ceeccf067de3..d9f466647de8aed8e478daa2626ffdb75091b349 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyTypeCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/create/PropertyTypeCreation.java @@ -72,12 +72,6 @@ public class PropertyTypeCreation implements ICreation, IObjectCreation @JsonProperty private Boolean multiValue; - @JsonProperty - private String pattern; - - @JsonProperty - private String patternType; - @JsonIgnore public String getCode() { @@ -231,28 +225,6 @@ public class PropertyTypeCreation implements ICreation, IObjectCreation this.multiValue = multiValue; } - @JsonIgnore - public String getPattern() - { - return pattern; - } - - public void setPattern(String pattern) - { - this.pattern = pattern; - } - - @JsonIgnore - public String getPatternType() - { - return patternType; - } - - public void setPatternType(String patternType) - { - this.patternType = patternType; - } - @Override public String toString() { diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/update/PropertyTypeUpdate.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/update/PropertyTypeUpdate.java index 9cef04183128171803655f2f959fb83e0882a935..4d6fdbb1214afd76fabc0bfcd33682b7b62c2178 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/update/PropertyTypeUpdate.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/property/update/PropertyTypeUpdate.java @@ -59,12 +59,6 @@ public class PropertyTypeUpdate implements IUpdate, IObjectUpdate<IPropertyTypeI @JsonProperty private ListUpdateMapValues metaData = new ListUpdateMapValues(); - @JsonProperty - private FieldUpdateValue<String> pattern = new FieldUpdateValue<String>(); - - @JsonProperty - private FieldUpdateValue<String> patternType = new FieldUpdateValue<String>(); - @Override @JsonIgnore public IPropertyTypeId getObjectId() @@ -144,30 +138,6 @@ public class PropertyTypeUpdate implements IUpdate, IObjectUpdate<IPropertyTypeI this.transformation.setValue(transformation); } - @JsonIgnore - public FieldUpdateValue<String> getPattern() - { - return pattern; - } - - @JsonIgnore - public void setPattern(String pattern) - { - this.pattern.setValue(pattern); - } - - @JsonIgnore - public FieldUpdateValue<String> getPatternType() - { - return patternType; - } - - @JsonIgnore - public void setPatternType(String patternType) - { - this.patternType.setValue(patternType); - } - @JsonIgnore public ListUpdateMapValues getMetaData() { diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/CreatePropertyAssignmentsExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/CreatePropertyAssignmentsExecutor.java index 69619b747aebbe118681b7d36769070172456749..20db102bb7c4e970466d0eb09cb1e6045540ee9e 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/CreatePropertyAssignmentsExecutor.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/CreatePropertyAssignmentsExecutor.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import javax.annotation.Resource; @@ -61,6 +62,9 @@ public class CreatePropertyAssignmentsExecutor @Autowired private IMapPluginByIdExecutor mapPluginByIdExecutor; + + @Autowired + private IPatternCompiler patternCompiler; public void createPropertyAssignments(final IOperationContext context, String entityTypeCode, Collection<? extends PropertyAssignmentCreation> propertyAssignments, ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind entityKind) @@ -144,6 +148,16 @@ public class CreatePropertyAssignmentsExecutor assignment.setShowRawValue(assignmentCreation.isShowRawValueInForms()); assignment.setUnique(assignmentCreation.isUnique()); assignment.setManagedInternally(assignmentCreation.isManagedInternally()); + //if only one element out of pair (pattern, patternType) is empty, throw exception + if(((assignmentCreation.getPattern() == null || assignmentCreation.getPattern().trim().isEmpty()) && (assignmentCreation.getPatternType() != null && !assignmentCreation.getPatternType().trim().isEmpty())) + || ((assignmentCreation.getPattern() != null && !assignmentCreation.getPattern().trim().isEmpty()) && (assignmentCreation.getPatternType() == null || assignmentCreation.getPatternType().trim().isEmpty()))) + { + throw new UserFailureException("Pattern and Pattern Type must be both either empty or non-empty!"); + } + assignment.setPatternType(assignmentCreation.getPatternType()); + assignment.setPattern(assignmentCreation.getPattern()); + Pattern pattern = patternCompiler.compilePattern(assignmentCreation.getPattern(), assignmentCreation.getPatternType()); + assignment.setPatternRegex(pattern == null ? null : pattern.pattern()); return assignment; } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/IPatternCompiler.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/IPatternCompiler.java similarity index 91% rename from server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/IPatternCompiler.java rename to server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/IPatternCompiler.java index 7fc882646f971d6c48eb782b674f66dbae2802be..00b93cb06341ebf558c21fa355d8aa5acfaa33c8 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/IPatternCompiler.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/IPatternCompiler.java @@ -15,7 +15,7 @@ * */ -package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.property; +package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity; import java.util.regex.Pattern; diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompiler.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/PatternCompiler.java similarity index 97% rename from server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompiler.java rename to server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/PatternCompiler.java index f24c9b458e5dbe6d1866a66293d6a9399d8ee023..69de021836922d62016baaef3350ab09cfe1eb1b 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompiler.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/entity/PatternCompiler.java @@ -15,7 +15,7 @@ * */ -package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.property; +package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity; import ch.systemsx.cisd.common.exceptions.UserFailureException; import org.springframework.stereotype.Component; @@ -65,7 +65,8 @@ public final class PatternCompiler implements IPatternCompiler private String prepareValue(String value) { String result = value.strip(); - if(result.charAt(0) != '"' || result.charAt(result.length()-1) != '"') + if((result.charAt(0) != '"' && result.charAt(0) != '“') + || (result.charAt(result.length()-1) != '"' && result.charAt(result.length()-1) != 'â€')) { throw new UserFailureException("Wrong value format: '" + value + "'"); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/CreatePropertyTypeExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/CreatePropertyTypeExecutor.java index 14d222a663f3a37a7c45b3f263327379962038f6..d21545ec4e39b16729486582c610d4b120e2991c 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/CreatePropertyTypeExecutor.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/CreatePropertyTypeExecutor.java @@ -23,6 +23,7 @@ import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.IPatternCompiler; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; @@ -129,12 +130,6 @@ public class CreatePropertyTypeExecutor { throw new UserFailureException("Vocabulary id has been specified but data type is " + dataType + "."); } - //if only one element out of pair (pattern, patternType) is empty, throw exception - if(((creation.getPattern() == null || creation.getPattern().trim().isEmpty()) && (creation.getPatternType() != null && !creation.getPatternType().trim().isEmpty())) - || ((creation.getPattern() != null && !creation.getPattern().trim().isEmpty()) && (creation.getPatternType() == null || creation.getPatternType().trim().isEmpty()))) - { - throw new UserFailureException("Pattern and Pattern Type must be both either empty or non-empty!"); - } validateMaterialType(creation, dataType); validateSampleType(creation, dataType); validateSchemaAndDataType(dataType.name(), creation.getSchema()); @@ -219,10 +214,6 @@ public class CreatePropertyTypeExecutor propertyType.setMetaData(creation.getMetaData()); propertyType.setMultiValue( creation.isMultiValue() != null && creation.isMultiValue()); - propertyType.setPattern(creation.getPattern()); - propertyType.setPatternType(creation.getPatternType()); - Pattern pattern = patternCompiler.compilePattern(creation.getPattern(), creation.getPatternType()); - propertyType.setPatternRegex(pattern == null ? null : pattern.pattern()); propertyTypes.add(propertyType); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/UpdatePropertyTypeExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/UpdatePropertyTypeExecutor.java index dabb244c0b49b2ec4eb6448067fbc4a6685484a8..e2ef79c29bcf254ee97ce9996447ce76a9420725 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/UpdatePropertyTypeExecutor.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/UpdatePropertyTypeExecutor.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; -import ch.systemsx.cisd.openbis.generic.shared.dto.VocabularyPE; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.IPatternCompiler; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; @@ -100,11 +100,6 @@ public class UpdatePropertyTypeExecutor { throw new UserFailureException("Description cannot be empty."); } - if(update.getPattern().isModified() && update.getPatternType().isModified() && ((StringUtils.isEmpty(update.getPattern().getValue()) && !StringUtils.isEmpty(update.getPatternType().getValue())) - || (!StringUtils.isEmpty(update.getPattern().getValue()) && StringUtils.isEmpty(update.getPatternType().getValue())))) - { - throw new UserFailureException("Pattern and Pattern Type must be both either empty or non-empty!"); - } } @Override @@ -143,11 +138,6 @@ public class UpdatePropertyTypeExecutor CreatePropertyTypeExecutor.validateTransformationAndDataType(dataType, update.getTransformation().getValue()); propertyType.setTransformation(getNewValue(update.getTransformation(), propertyType.getTransformation())); updateMetaData(propertyType, update); - propertyType.setPattern(getNewValue(update.getPattern(), propertyType.getPattern())); - propertyType.setPatternType(getNewValue(update.getPatternType(), propertyType.getPatternType())); - - Pattern updateRegex = patternCompiler.compilePattern(propertyType.getPattern(), propertyType.getPatternType()); - propertyType.setPatternRegex(updateRegex == null ? null : updateRegex.pattern()); } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentRecord.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentRecord.java index b4eddd18f652e36d09d48caab27b1cd04074982e..2882563312461dc08f3be7d76a3c05fa1a516737 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentRecord.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentRecord.java @@ -55,6 +55,12 @@ public class PropertyAssignmentRecord extends ObjectBaseRecord public Boolean is_unique; + public String pattern; + + public String pattern_type; + + public String pattern_regex; + // IS_MANAGED_INTERNALLY_NAMESPACE public Boolean is_managed_internally_assignment; } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentTranslator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentTranslator.java index 8413daee189000430b84695b21913e180f7f006d..d1d198e9814180d8a9e5db862f25dd9e1577fc33 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentTranslator.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyAssignmentTranslator.java @@ -129,6 +129,8 @@ public class PropertyAssignmentTranslator implements IPropertyAssignmentTranslat assignment.setRegistrationDate(assignmentRecord.registration_timestamp); assignment.setUnique(assignmentRecord.is_unique); assignment.setFetchOptions(assignmentFetchOptions); + assignment.setPattern(assignmentRecord.pattern); + assignment.setPatternType(assignmentRecord.pattern_type); assignment.setManagedInternally(assignmentRecord.is_managed_internally_assignment); PropertyAssignmentKey key = new PropertyAssignmentKey(assignmentRecord.id, entityKind); diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeRecord.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeRecord.java index 18821d0092a523fa8b7ca01e3bdada271776fb77..260daa965c7eafd3615d2281e47950db6782eca6 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeRecord.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeRecord.java @@ -44,10 +44,4 @@ public class PropertyTypeRecord extends ObjectBaseRecord public Boolean is_multi_value; - public String pattern; - - public String pattern_type; - - public String pattern_regex; - } diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeTranslator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeTranslator.java index 6e9cce45fcd76bc425b1b1471a797bdb89bc1743..b104b707a1ad945944028b4c443d110a1889f8ab 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeTranslator.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/translator/property/PropertyTypeTranslator.java @@ -127,8 +127,6 @@ public class PropertyTypeTranslator extends AbstractCachingTranslator<Long, Prop result.setRegistrationDate(baseRecord.registration_timestamp); result.setMetaData(CommonUtils.asMap(baseRecord.meta_data)); result.setMultiValue(baseRecord.is_multi_value); - result.setPattern(baseRecord.pattern); - result.setPatternType(baseRecord.pattern_type); if (fetchOptions.hasVocabulary()) { diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSEntityTypeExportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSEntityTypeExportHelper.java index 8bbb8c69d4f4044f08991edd8e79976319b2c6e4..b40b4711d42925d18340446c653d4708249c1104 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSEntityTypeExportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/export/helper/AbstractXLSEntityTypeExportHelper.java @@ -190,8 +190,8 @@ public abstract class AbstractXLSEntityTypeExportHelper<ENTITY_TYPE extends IEnt plugin != null ? (plugin.getName() != null ? plugin.getName() + ".py" : "") : "", String.valueOf(propertyType.isMultiValue() != null && propertyType.isMultiValue()).toUpperCase(), String.valueOf(propertyAssignment.isUnique() != null && propertyAssignment.isUnique()).toUpperCase(), - String.valueOf(propertyType.getPattern() != null ? propertyType.getPattern() : ""), - String.valueOf(propertyType.getPatternType() != null ? propertyType.getPatternType() : ""), + String.valueOf(propertyAssignment.getPattern() != null ? propertyAssignment.getPattern() : ""), + String.valueOf(propertyAssignment.getPatternType() != null ? propertyAssignment.getPatternType() : ""), String.valueOf(propertyAssignment.isManagedInternally() != null && propertyAssignment.isManagedInternally()).toUpperCase() }; addRow(rowNumber++, false, exportableKind, permId, warnings, valueFiles, values); diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java index 5eba0433083b649799dd2da7a50820d3d121c5f6..3df6ecc3f32b9ef06b27d87447398f6456bfe0b6 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyAssignmentImportHelper.java @@ -154,6 +154,8 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper String section = getValueByColumnName(headers, values, Attribute.Section); String script = getValueByColumnName(headers, values, Attribute.DynamicScript); String unique = getValueByColumnName(headers, values, Attribute.Unique); + String pattern = getValueByColumnName(headers, values, Attribute.Pattern); + String patternType = getValueByColumnName(headers, values, Attribute.PatternType); String internalAssignment = getValueByColumnName(headers, values, Attribute.InternalAssignment); PropertyAssignmentCreation creation = new PropertyAssignmentCreation(); @@ -163,6 +165,8 @@ public class PropertyAssignmentImportHelper extends BasicImportHelper creation.setShowInEditView(Boolean.parseBoolean(showInEditViews)); creation.setSection(section); creation.setUnique(Boolean.parseBoolean(unique)); + creation.setPattern(pattern); + creation.setPatternType(patternType); creation.setManagedInternally(Boolean.parseBoolean(internalAssignment)); if (script != null && !script.isEmpty()) diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java index 7f7ebd0b6d554061fd49b0eef1eba56a2bc544f7..36a2146da374ee3cc1cca8bc8b7e064fff18269c 100644 --- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java +++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/xls/importer/helper/PropertyTypeImportHelper.java @@ -205,8 +205,6 @@ public class PropertyTypeImportHelper extends BasicImportHelper String vocabularyCode = getValueByColumnName(header, values, Attribute.VocabularyCode); String metadata = getValueByColumnName(header, values, Attribute.Metadata); String multiValued = getValueByColumnName(header, values, Attribute.MultiValued); - String pattern = getValueByColumnName(header, values, Attribute.Pattern); - String patternType = getValueByColumnName(header, values, Attribute.PatternType); PropertyTypeCreation creation = new PropertyTypeCreation(); creation.setCode(code); @@ -244,11 +242,6 @@ public class PropertyTypeImportHelper extends BasicImportHelper creation.setMultiValue(false); } - if(pattern != null && !pattern.isEmpty() && patternType != null && !patternType.isEmpty()) - { - creation.setPattern(pattern); - creation.setPatternType(patternType); - } delayedExecutor.createPropertyType(creation, page, line); } @@ -263,8 +256,6 @@ public class PropertyTypeImportHelper extends BasicImportHelper String dataType = getValueByColumnName(header, values, Attribute.DataType); String vocabularyCode = getValueByColumnName(header, values, Attribute.VocabularyCode); String metadata = getValueByColumnName(header, values, Attribute.Metadata); - String pattern = getValueByColumnName(header, values, Attribute.Pattern); - String patternType = getValueByColumnName(header, values, Attribute.PatternType); PropertyTypePermId propertyTypePermId = new PropertyTypePermId(code); @@ -324,12 +315,6 @@ public class PropertyTypeImportHelper extends BasicImportHelper update.getMetaData().add(JSONHandler.parseMetaData(metadata)); } - if(pattern != null && !pattern.isEmpty() && patternType != null && !patternType.isEmpty()) - { - update.getPattern().setValue(pattern); - update.getPatternType().setValue(patternType); - } - delayedExecutor.updatePropertyType(update, page, line); } diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java index 0dfdc1a83a6acbaa4f882903fc5cb43b8311fb6c..5551c9605e5369bc010fefdfdc8f70d4d1d3110c 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/EntityTypePropertyTypeBO.java @@ -138,7 +138,9 @@ public class EntityTypePropertyTypeBO extends AbstractBusinessObject implements createAssignment(newAssignment.isMandatory(), newAssignment.getSection(), newAssignment.getOrdinal(), entityType, propertyType, scriptOrNull, newAssignment.isShownInEditView(), newAssignment.getShowRawValue(), - newAssignment.isUnique(), newAssignment.isManagedInternally()); + newAssignment.isUnique(), newAssignment.isManagedInternally(), + newAssignment.getPatternType(), newAssignment.getPattern(), + newAssignment.getPatternRegex()); String defaultValue = newAssignment.getDefaultValue(); if (newAssignment.isDynamic()) { @@ -290,6 +292,10 @@ public class EntityTypePropertyTypeBO extends AbstractBusinessObject implements assignment.setShownInEditView(assignmentUpdates.isShownInEditView()); assignment.setShowRawValue(assignmentUpdates.getShowRawValue()); + assignment.setPattern(assignmentUpdates.getPattern()); + assignment.setPatternType(assignmentUpdates.getPatternType()); + assignment.setPatternRegex(assignmentUpdates.getPatternRegex()); + UpdateAuthorizationSnapshot snapshotAfter = new UpdateAuthorizationSnapshot(assignment); if (snapshotBefore.equals(snapshotAfter) == false) @@ -323,7 +329,8 @@ public class EntityTypePropertyTypeBO extends AbstractBusinessObject implements private EntityTypePropertyTypePE createAssignment(final boolean mandatory, final String section, final Long previousETPTOrdinal, final EntityTypePE entityType, final PropertyTypePE propertyType, ScriptPE scriptOrNull, boolean shownInEditView, - boolean showRawValue, boolean unique, boolean isManagedInternally) + boolean showRawValue, boolean unique, boolean isManagedInternally, String patternType, + String pattern, String patternRegex) { checkAssignmentDoesNotExist(entityType, propertyType); Long previousOrdinal = @@ -346,6 +353,9 @@ public class EntityTypePropertyTypeBO extends AbstractBusinessObject implements etpt.setShowRawValue(showRawValue); etpt.setUnique(unique); etpt.setManagedInternallyNamespace(isManagedInternally); + etpt.setPatternType(patternType); + etpt.setPattern(pattern); + etpt.setPatternRegex(patternRegex); new InternalPropertyTypeAuthorization().canCreatePropertyAssignment(session, etpt.getPropertyType(), etpt); diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PropertyTypeBO.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PropertyTypeBO.java index 8a89507b546e88f53d151373c1154a69303c5e83..4bab9c83ce14d3af1c8ce72d3c72be29df380e4e 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PropertyTypeBO.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/PropertyTypeBO.java @@ -87,11 +87,6 @@ public final class PropertyTypeBO extends VocabularyBO implements IPropertyTypeB propertyTypePE.setRegistrator(findPerson()); propertyTypePE.setManagedInternally(propertyType.isManagedInternally()); propertyTypePE.setMultiValue(propertyType.isMultiValue()); - propertyTypePE.setPattern(propertyType.getPattern()); - propertyTypePE.setPatternType(propertyType.getPatternType()); - propertyTypePE.setPatternRegex(propertyType.getPattern() != null - ? "REGEX:" + propertyType.getPattern() - : null); if (DataTypeCode.CONTROLLEDVOCABULARY.equals(dataTypePE.getCode())) { diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/IPropertyListingQuery.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/IPropertyListingQuery.java index 3380ee3d537865749190d0d78129d7356ca29d92..52836a00ebf5f9baaf81e6b46161492b585d5cea 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/IPropertyListingQuery.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/IPropertyListingQuery.java @@ -37,8 +37,7 @@ public interface IPropertyListingQuery * label are already HTML escaped. */ @Select(sql = "select pt.id as pt_id, pt.code as pt_code, dt.code as dt_code," - + " pt.label as pt_label, pt.is_managed_internally, pt.schema, pt.transformation," - + " pt.pattern, pt.pattern_type" + + " pt.label as pt_label, pt.is_managed_internally, pt.schema, pt.transformation" + " from property_types pt join data_types dt on pt.daty_id=dt.id", resultSetBinding = PropertyTypeDataObjectBinding.class) public PropertyType[] getPropertyTypes(); diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/PropertyTypeDataObjectBinding.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/PropertyTypeDataObjectBinding.java index 5420e2111426eaf9bbac534c22e2880d74aa800e..73590d87a969ee8671cf63a74a313c94c1236f81 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/PropertyTypeDataObjectBinding.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/common/PropertyTypeDataObjectBinding.java @@ -44,7 +44,5 @@ public class PropertyTypeDataObjectBinding extends NonUpdateCapableDataObjectBin final DataType dataType = new DataType(); dataType.setCode(DataTypeCode.valueOf(row.getString("dt_code"))); into.setDataType(dataType); - into.setPattern(row.getString("pattern")); - into.setPatternType(row.getString("pattern_type")); } } diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTypePropertyType.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTypePropertyType.java index 721705de8a797af7a15b6606ffd12d857e6b4562..446febae8712518543e97d7807ccc447c32717fc 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTypePropertyType.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/EntityTypePropertyType.java @@ -54,6 +54,14 @@ public abstract class EntityTypePropertyType<T extends EntityType> implements Se private Date modificationDate; + private String pattern; + + private String patternType; + + private String patternRegex; + + private boolean managedInternallyNamespace; + public Date getModificationDate() { return modificationDate; @@ -209,6 +217,46 @@ public abstract class EntityTypePropertyType<T extends EntityType> implements Se this.section = section; } + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + public String getPatternType() + { + return patternType; + } + + public void setPatternType(String patternType) + { + this.patternType = patternType; + } + + public String getPatternRegex() + { + return patternRegex; + } + + public void setPatternRegex(String patternRegex) + { + this.patternRegex = patternRegex; + } + + public boolean isManagedInternallyNamespace() + { + return managedInternallyNamespace; + } + + public void setManagedInternallyNamespace(boolean managedInternallyNamespace) + { + this.managedInternallyNamespace = managedInternallyNamespace; + } + // // Object // diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewETPTAssignment.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewETPTAssignment.java index ae37bfbd9554209c922c6de47dc7fb699bf59d24..ddcd6d5fd6f05fb6148d14fe8a6093d632a79409 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewETPTAssignment.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewETPTAssignment.java @@ -59,6 +59,12 @@ public class NewETPTAssignment implements Serializable // IS_MANAGED_INTERNALLY_NAMESPACE private boolean isManagedInternally; + private String patternType; + + private String pattern; + + private String patternRegex; + public NewETPTAssignment() { } @@ -247,4 +253,34 @@ public class NewETPTAssignment implements Serializable { isManagedInternally = managedInternally; } + + public String getPatternType() + { + return patternType; + } + + public void setPatternType(String patternType) + { + this.patternType = patternType; + } + + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + public String getPatternRegex() + { + return patternRegex; + } + + public void setPatternRegex(String patternRegex) + { + this.patternRegex = patternRegex; + } } \ No newline at end of file diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/EntityTypePropertyTypePE.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/EntityTypePropertyTypePE.java index 13ae2e3e8ed1fefdfce73258e07497b7661a9baf..e7aa0f8e02a7d8d56ab0b37813e2c0b1d0ec3914 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/EntityTypePropertyTypePE.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/EntityTypePropertyTypePE.java @@ -79,6 +79,12 @@ public abstract class EntityTypePropertyTypePE extends HibernateAbstractRegistra private boolean unique; private boolean managedInternallyNamespace; + private String pattern; + + private String patternType; + + private String patternRegex; + final public static <T extends EntityTypePropertyTypePE> T createEntityTypePropertyType( final EntityKind entityKind) { @@ -239,6 +245,39 @@ public abstract class EntityTypePropertyTypePE extends HibernateAbstractRegistra this.unique = unique; } + @Column(name = ColumnNames.PATTERN) + public String getPattern() + { + return pattern; + } + + public void setPattern(String pattern) + { + this.pattern = pattern; + } + + @Column(name = ColumnNames.PATTERN_TYPE) + public String getPatternType() + { + return patternType; + } + + public void setPatternType(String patternType) + { + this.patternType = patternType; + } + + @Column(name = ColumnNames.PATTERN_REGEX) + public String getPatternRegex() + { + return patternRegex; + } + + public void setPatternRegex(String patternRegex) + { + this.patternRegex = patternRegex; + } + public void setSection(String section) { this.section = section; diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/PropertyTypePE.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/PropertyTypePE.java index 803b89538695667aae1bde04d28e8d8916a1f8d9..e278bf639a561514e28cbfcd50634b0389e69be3 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/PropertyTypePE.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/PropertyTypePE.java @@ -127,12 +127,6 @@ public final class PropertyTypePE extends HibernateAbstractRegistrationHolder im private boolean multiValue; - private String pattern; - - private String patternType; - - private String patternRegex; - @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = ColumnNames.CONTROLLED_VOCABULARY_COLUMN, updatable = true) public VocabularyPE getVocabulary() @@ -334,38 +328,7 @@ public final class PropertyTypePE extends HibernateAbstractRegistrationHolder im this.multiValue = multiValue; } - @Column(name = ColumnNames.PATTERN) - public String getPattern() - { - return pattern; - } - - public void setPattern(String pattern) - { - this.pattern = pattern; - } - @Column(name = ColumnNames.PATTERN_TYPE) - public String getPatternType() - { - return patternType; - } - - public void setPatternType(String patternType) - { - this.patternType = patternType; - } - - @Column(name = ColumnNames.PATTERN_REGEX) - public String getPatternRegex() - { - return patternRegex; - } - - public void setPatternRegex(String patternRegex) - { - this.patternRegex = patternRegex; - } @Override @SequenceGenerator(name = SequenceNames.PROPERTY_TYPES_SEQUENCE, sequenceName = SequenceNames.PROPERTY_TYPES_SEQUENCE, allocationSize = 1) diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidator.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidator.java index 9c33fe9da5a5ce2b147906ba2cd34da37c635adb..93dd2c3fa5c9102034d86731cfc02c9bc4b198d6 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidator.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidator.java @@ -17,11 +17,10 @@ package ch.systemsx.cisd.openbis.generic.shared.dto.hibernate; -import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.property.IPatternCompiler; -import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.property.PatternCompiler; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.IPatternCompiler; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.PatternCompiler; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; -import ch.systemsx.cisd.openbis.generic.shared.dto.PropertyTypePE; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; @@ -32,7 +31,7 @@ import java.util.regex.Pattern; public class PatternValueValidator implements ConstraintValidator<PatternValue, EntityPropertyPE> { - private Map<String, Pattern> propertyTypeToPatternMap; + private Map<Long, Pattern> propertyTypeToPatternMap; private IPatternCompiler compiler; @Override @@ -47,17 +46,15 @@ public class PatternValueValidator implements ConstraintValidator<PatternValue, { if(entityPropertyPE.getValue() != null && entityPropertyPE.getEntityTypePropertyType() != null) { EntityTypePropertyTypePE etpt = entityPropertyPE.getEntityTypePropertyType(); - if(etpt.getPropertyType() != null) { - PropertyTypePE pt = etpt.getPropertyType(); - if(pt.getPatternType() != null) { + if(etpt.getPatternType() != null) { Pattern pattern; - if(propertyTypeToPatternMap.containsKey(pt.getCode())) { - pattern = propertyTypeToPatternMap.get(pt.getCode()); - if(!pt.getPatternRegex().equals(pattern.pattern())) { - pattern = updatePattern(pt.getCode(), pt.getPattern(), pt.getPatternType()); + if(propertyTypeToPatternMap.containsKey(etpt.getId())) { + pattern = propertyTypeToPatternMap.get(etpt.getId()); + if(!etpt.getPatternRegex().equals(pattern.pattern())) { + pattern = updatePattern(etpt.getId(), etpt.getPattern(), etpt.getPatternType()); } } else { - pattern = updatePattern(pt.getCode(), pt.getPattern(), pt.getPatternType()); + pattern = updatePattern(etpt.getId(), etpt.getPattern(), etpt.getPatternType()); } boolean valid = pattern.matcher(entityPropertyPE.getValue()).matches(); if(!valid) { @@ -68,16 +65,14 @@ public class PatternValueValidator implements ConstraintValidator<PatternValue, return false; } } - } - } return true; } - private Pattern updatePattern(String propertyTypeCode, String pattern, String patternType) + private Pattern updatePattern(Long etptId, String pattern, String patternType) { Pattern compiledPattern = compiler.compilePattern(pattern, patternType); - propertyTypeToPatternMap.put(propertyTypeCode, compiledPattern); + propertyTypeToPatternMap.put(etptId, compiledPattern); return compiledPattern; } diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/AbstractEntityTypePropertyTypeTranslator.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/AbstractEntityTypePropertyTypeTranslator.java index c483786d85bdf15295794d0ba032ccd01f08c52e..ac0ea3bc481b737c9aeb3c3b0338482b0f437517 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/AbstractEntityTypePropertyTypeTranslator.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/AbstractEntityTypePropertyTypeTranslator.java @@ -106,6 +106,10 @@ abstract public class AbstractEntityTypePropertyTypeTranslator<ET extends Entity result.setShowRawValue(etptPE.getShowRawValue()); } result.setScript(script); + result.setManagedInternallyNamespace(etptPE.isManagedInternallyNamespace()); + result.setPattern(etptPE.getPattern()); + result.setPatternType(etptPE.getPatternType()); + result.setPatternRegex(etptPE.getPatternRegex()); return result; } diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PropertyTypeTranslator.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PropertyTypeTranslator.java index bc47ff8926c3b9a8d7f00cb3e6a20666e5ff5cfb..c067f43f0aa8f1e25ca50747d000589ad3afcfab 100644 --- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PropertyTypeTranslator.java +++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/PropertyTypeTranslator.java @@ -89,8 +89,6 @@ public final class PropertyTypeTranslator result.setSchema(propertyType.getSchema()); result.setTransformation(propertyType.getTransformation()); result.setMultiValue(propertyType.isMultiValue()); - result.setPattern(propertyType.getPattern()); - result.setPatternType(propertyType.getPatternType()); return result; } diff --git a/server-application-server/source/sql/generic/195/schema-195.sql b/server-application-server/source/sql/generic/195/schema-195.sql index 03fb37bc1e13bf0fc5e4f162961d71c2be8e3a24..3852adf87f3597cf6814e9f198872f309a41dabd 100644 --- a/server-application-server/source/sql/generic/195/schema-195.sql +++ b/server-application-server/source/sql/generic/195/schema-195.sql @@ -16,7 +16,7 @@ CREATE TABLE ATTACHMENT_CONTENTS (ID TECH_ID NOT NULL,VALUE FILE NOT NULL); CREATE TABLE EXPERIMENT_PROPERTIES (ID TECH_ID NOT NULL,EXPE_ID TECH_ID NOT NULL,ETPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE, CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, SAMP_PROP_ID TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, EXPE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE EXPERIMENT_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, EXPE_ID TECH_ID NOT NULL, ETPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE EXPERIMENT_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, VALIDATION_SCRIPT_ID TECH_ID, META_DATA JSONB); -CREATE TABLE EXPERIMENT_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,EXTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE EXPERIMENT_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,EXTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE EXTERNAL_DATA (ID TECH_ID NOT NULL,SHARE_ID CODE,SIZE ORDINAL_INT,LOCATION VARCHAR(1024) NOT NULL,FFTY_ID TECH_ID NOT NULL,LOTY_ID TECH_ID NOT NULL,CVTE_ID_STOR_FMT TECH_ID NOT NULL,IS_COMPLETE BOOLEAN_CHAR_OR_UNKNOWN NOT NULL DEFAULT 'U',CVTE_ID_STORE TECH_ID, STATUS ARCHIVING_STATUS NOT NULL DEFAULT 'AVAILABLE', PRESENT_IN_ARCHIVE BOOLEAN_CHAR DEFAULT 'F', SPEED_HINT INTEGER NOT NULL DEFAULT -50, STORAGE_CONFIRMATION BOOLEAN_CHAR NOT NULL DEFAULT 'F', H5_FOLDERS BOOLEAN_CHAR NOT NULL, H5AR_FOLDERS BOOLEAN_CHAR NOT NULL, ARCHIVING_REQUESTED BOOLEAN_CHAR NOT NULL DEFAULT 'F'); CREATE TABLE FILE_FORMAT_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000); CREATE TABLE GRID_CUSTOM_COLUMNS (ID TECH_ID NOT NULL, CODE VARCHAR(200) NOT NULL, LABEL column_label NOT NULL, DESCRIPTION DESCRIPTION_2000,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, EXPRESSION GRID_EXPRESSION NOT NULL, IS_PUBLIC BOOLEAN NOT NULL, GRID_ID GRID_ID NOT NULL); @@ -27,21 +27,21 @@ CREATE TABLE MATERIALS (ID TECH_ID NOT NULL,CODE CODE NOT NULL,MATY_ID TECH_ID N CREATE TABLE MATERIAL_PROPERTIES (ID TECH_ID NOT NULL,MATE_ID TECH_ID NOT NULL,MTPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL,CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE MATERIAL_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, MATE_ID TECH_ID NOT NULL, MTPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE MATERIAL_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, VALIDATION_SCRIPT_ID TECH_ID); -CREATE TABLE MATERIAL_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,MATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE MATERIAL_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,MATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE DATA_SET_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, MAIN_DS_PATTERN VARCHAR(300), MAIN_DS_PATH VARCHAR(1000), DELETION_DISALLOW BOOLEAN_CHAR DEFAULT 'F', VALIDATION_SCRIPT_ID TECH_ID, META_DATA JSONB); CREATE TABLE PERSONS (ID TECH_ID NOT NULL,FIRST_NAME TEXT,LAST_NAME TEXT,USER_ID USER_ID NOT NULL,EMAIL EMAIL_VALUE,SPACE_ID TECH_ID,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID, DISPLAY_SETTINGS FILE, IS_ACTIVE BOOLEAN DEFAULT TRUE); CREATE TABLE PROJECTS (ID TECH_ID NOT NULL,PERM_ID CODE NOT NULL,CODE CODE NOT NULL,SPACE_ID TECH_ID NOT NULL,PERS_ID_LEADER TECH_ID,DESCRIPTION TEXT_VALUE,PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, PERS_ID_MODIFIER TECH_ID, VERSION INTEGER DEFAULT 0, FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_EXP BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_SAMP BOOLEAN_CHAR NOT NULL DEFAULT 'F', SPACE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F'); -CREATE TABLE PROPERTY_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000 NOT NULL,LABEL COLUMN_LABEL NOT NULL,DATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,COVO_ID TECH_ID,IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F', MATY_PROP_ID TECH_ID, SATY_PROP_ID TECH_ID, SCHEMA TEXT_VALUE, TRANSFORMATION TEXT_VALUE, META_DATA JSONB, IS_MULTI_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); +CREATE TABLE PROPERTY_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000 NOT NULL,LABEL COLUMN_LABEL NOT NULL,DATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,COVO_ID TECH_ID,IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F', MATY_PROP_ID TECH_ID, SATY_PROP_ID TECH_ID, SCHEMA TEXT_VALUE, TRANSFORMATION TEXT_VALUE, META_DATA JSONB, IS_MULTI_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); CREATE TABLE ROLE_ASSIGNMENTS (ID TECH_ID NOT NULL,ROLE_CODE AUTHORIZATION_ROLE NOT NULL,SPACE_ID TECH_ID, PROJECT_ID TECH_ID, PERS_ID_GRANTEE TECH_ID, AG_ID_GRANTEE TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP); CREATE TABLE SAMPLES_ALL (ID TECH_ID NOT NULL,PERM_ID CODE NOT NULL, sample_identifier sample_identifier, CODE CODE NOT NULL, EXPE_ID TECH_ID,SATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,DEL_ID TECH_ID, ORIG_DEL TECH_ID, SPACE_ID TECH_ID, SAMP_ID_PART_OF TECH_ID, PERS_ID_MODIFIER TECH_ID, code_unique_check character varying(300), subcode_unique_check character varying(300), VERSION INTEGER DEFAULT 0, PROJ_ID TECH_ID, FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_COMP BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_CHILDREN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_PARENTS BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_DATA BOOLEAN_CHAR NOT NULL DEFAULT 'F', SPACE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', PROJ_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', EXPE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', CONT_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, META_DATA JSONB); CREATE TABLE SAMPLE_PROPERTIES (ID TECH_ID NOT NULL,SAMP_ID TECH_ID NOT NULL,STPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,CVTE_ID TECH_ID,MATE_PROP_ID TECH_ID,SAMP_PROP_ID TECH_ID,PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, SAMP_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE SAMPLE_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, SAMP_ID TECH_ID NOT NULL, STPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE SAMPLE_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, IS_LISTABLE BOOLEAN_CHAR NOT NULL DEFAULT 'T', GENERATED_FROM_DEPTH INTEGER NOT NULL DEFAULT 0, PART_OF_DEPTH INTEGER NOT NULL DEFAULT 0, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, is_auto_generated_code BOOLEAN_CHAR NOT NULL DEFAULT 'F', generated_code_prefix CODE NOT NULL DEFAULT 'S', is_subcode_unique BOOLEAN_CHAR NOT NULL DEFAULT 'F', INHERIT_PROPERTIES BOOLEAN_CHAR NOT NULL DEFAULT 'F', VALIDATION_SCRIPT_ID TECH_ID, SHOW_PARENT_METADATA BOOLEAN_CHAR NOT NULL DEFAULT 'F', META_DATA JSONB); -CREATE TABLE SAMPLE_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,SATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, IS_DISPLAYED BOOLEAN_CHAR NOT NULL DEFAULT 'T', ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE SAMPLE_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,SATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, IS_DISPLAYED BOOLEAN_CHAR NOT NULL DEFAULT 'T', ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE DATA_SET_PROPERTIES (ID TECH_ID NOT NULL,DS_ID TECH_ID NOT NULL,DSTPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, SAMP_PROP_ID TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, DASE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE DATA_SET_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, DS_ID TECH_ID NOT NULL, DSTPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); -CREATE TABLE DATA_SET_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,DSTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID, IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE DATA_SET_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,DSTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID, IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE AUTHORIZATION_GROUPS (ID TECH_ID NOT NULL, CODE CODE NOT NULL, DESCRIPTION DESCRIPTION_2000,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE AUTHORIZATION_GROUP_PERSONS (AG_ID TECH_ID NOT NULL, PERS_ID TECH_ID NOT NULL); @@ -907,11 +907,21 @@ ALTER TABLE SEMANTIC_ANNOTATIONS ADD CONSTRAINT SEMANTIC_ANNOTATIONS_SSP_CK CHEC (SATY_ID IS NULL AND STPT_ID IS NULL AND PRTY_ID IS NOT NULL) ); -ALTER TABLE PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK +ALTER TABLE EXPERIMENT_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) ); - + +ALTER TABLE SAMPLE_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + +ALTER TABLE DATA_SET_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + -- Creating indices CREATE INDEX COVO_PERS_FK_I ON CONTROLLED_VOCABULARIES (PERS_ID_REGISTERER); diff --git a/server-application-server/source/sql/generic/196/schema-196.sql b/server-application-server/source/sql/generic/196/schema-196.sql index ddf87cc2ea1d8b1be9c4a4f738f601dbc820b271..4ceb0d5466520798bce2f123ba5aca1131f98f35 100644 --- a/server-application-server/source/sql/generic/196/schema-196.sql +++ b/server-application-server/source/sql/generic/196/schema-196.sql @@ -16,7 +16,7 @@ CREATE TABLE ATTACHMENT_CONTENTS (ID TECH_ID NOT NULL,VALUE FILE NOT NULL); CREATE TABLE EXPERIMENT_PROPERTIES (ID TECH_ID NOT NULL,EXPE_ID TECH_ID NOT NULL,ETPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE, CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, SAMP_PROP_ID TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, EXPE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE EXPERIMENT_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, EXPE_ID TECH_ID NOT NULL, ETPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE EXPERIMENT_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, VALIDATION_SCRIPT_ID TECH_ID, META_DATA JSONB, IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F'); -CREATE TABLE EXPERIMENT_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,EXTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE EXPERIMENT_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,EXTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE EXTERNAL_DATA (ID TECH_ID NOT NULL,SHARE_ID CODE,SIZE ORDINAL_INT,LOCATION VARCHAR(1024) NOT NULL,FFTY_ID TECH_ID NOT NULL,LOTY_ID TECH_ID NOT NULL,CVTE_ID_STOR_FMT TECH_ID NOT NULL,IS_COMPLETE BOOLEAN_CHAR_OR_UNKNOWN NOT NULL DEFAULT 'U',CVTE_ID_STORE TECH_ID, STATUS ARCHIVING_STATUS NOT NULL DEFAULT 'AVAILABLE', PRESENT_IN_ARCHIVE BOOLEAN_CHAR DEFAULT 'F', SPEED_HINT INTEGER NOT NULL DEFAULT -50, STORAGE_CONFIRMATION BOOLEAN_CHAR NOT NULL DEFAULT 'F', H5_FOLDERS BOOLEAN_CHAR NOT NULL, H5AR_FOLDERS BOOLEAN_CHAR NOT NULL, ARCHIVING_REQUESTED BOOLEAN_CHAR NOT NULL DEFAULT 'F'); CREATE TABLE FILE_FORMAT_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000); CREATE TABLE GRID_CUSTOM_COLUMNS (ID TECH_ID NOT NULL, CODE VARCHAR(200) NOT NULL, LABEL column_label NOT NULL, DESCRIPTION DESCRIPTION_2000,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, EXPRESSION GRID_EXPRESSION NOT NULL, IS_PUBLIC BOOLEAN NOT NULL, GRID_ID GRID_ID NOT NULL); @@ -27,21 +27,21 @@ CREATE TABLE MATERIALS (ID TECH_ID NOT NULL,CODE CODE NOT NULL,MATY_ID TECH_ID N CREATE TABLE MATERIAL_PROPERTIES (ID TECH_ID NOT NULL,MATE_ID TECH_ID NOT NULL,MTPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL,CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE MATERIAL_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, MATE_ID TECH_ID NOT NULL, MTPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE MATERIAL_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, VALIDATION_SCRIPT_ID TECH_ID, IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F'); -CREATE TABLE MATERIAL_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,MATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE MATERIAL_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,MATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE DATA_SET_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, MAIN_DS_PATTERN VARCHAR(300), MAIN_DS_PATH VARCHAR(1000), DELETION_DISALLOW BOOLEAN_CHAR DEFAULT 'F', VALIDATION_SCRIPT_ID TECH_ID, META_DATA JSONB, IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F'); CREATE TABLE PERSONS (ID TECH_ID NOT NULL,FIRST_NAME TEXT,LAST_NAME TEXT,USER_ID USER_ID NOT NULL,EMAIL EMAIL_VALUE,SPACE_ID TECH_ID,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID, DISPLAY_SETTINGS FILE, IS_ACTIVE BOOLEAN DEFAULT TRUE); CREATE TABLE PROJECTS (ID TECH_ID NOT NULL,PERM_ID CODE NOT NULL,CODE CODE NOT NULL,SPACE_ID TECH_ID NOT NULL,PERS_ID_LEADER TECH_ID,DESCRIPTION TEXT_VALUE,PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, PERS_ID_MODIFIER TECH_ID, VERSION INTEGER DEFAULT 0, FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_EXP BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_SAMP BOOLEAN_CHAR NOT NULL DEFAULT 'F', SPACE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F'); -CREATE TABLE PROPERTY_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000 NOT NULL,LABEL COLUMN_LABEL NOT NULL,DATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,COVO_ID TECH_ID,IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F', MATY_PROP_ID TECH_ID, SATY_PROP_ID TECH_ID, SCHEMA TEXT_VALUE, TRANSFORMATION TEXT_VALUE, META_DATA JSONB, IS_MULTI_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); +CREATE TABLE PROPERTY_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000 NOT NULL,LABEL COLUMN_LABEL NOT NULL,DATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,COVO_ID TECH_ID,IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F', MATY_PROP_ID TECH_ID, SATY_PROP_ID TECH_ID, SCHEMA TEXT_VALUE, TRANSFORMATION TEXT_VALUE, META_DATA JSONB, IS_MULTI_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); CREATE TABLE ROLE_ASSIGNMENTS (ID TECH_ID NOT NULL,ROLE_CODE AUTHORIZATION_ROLE NOT NULL,SPACE_ID TECH_ID, PROJECT_ID TECH_ID, PERS_ID_GRANTEE TECH_ID, AG_ID_GRANTEE TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP); CREATE TABLE SAMPLES_ALL (ID TECH_ID NOT NULL,PERM_ID CODE NOT NULL, sample_identifier sample_identifier, CODE CODE NOT NULL, EXPE_ID TECH_ID,SATY_ID TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP,MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP,PERS_ID_REGISTERER TECH_ID NOT NULL,DEL_ID TECH_ID, ORIG_DEL TECH_ID, SPACE_ID TECH_ID, SAMP_ID_PART_OF TECH_ID, PERS_ID_MODIFIER TECH_ID, code_unique_check character varying(300), subcode_unique_check character varying(300), VERSION INTEGER DEFAULT 0, PROJ_ID TECH_ID, FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_COMP BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_CHILDREN BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_PARENTS BOOLEAN_CHAR NOT NULL DEFAULT 'F', FROZEN_FOR_DATA BOOLEAN_CHAR NOT NULL DEFAULT 'F', SPACE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', PROJ_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', EXPE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', CONT_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, META_DATA JSONB); CREATE TABLE SAMPLE_PROPERTIES (ID TECH_ID NOT NULL,SAMP_ID TECH_ID NOT NULL,STPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,CVTE_ID TECH_ID,MATE_PROP_ID TECH_ID,SAMP_PROP_ID TECH_ID,PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, SAMP_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE SAMPLE_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, SAMP_ID TECH_ID NOT NULL, STPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE SAMPLE_TYPES (ID TECH_ID NOT NULL,CODE CODE NOT NULL,DESCRIPTION DESCRIPTION_2000, IS_LISTABLE BOOLEAN_CHAR NOT NULL DEFAULT 'T', GENERATED_FROM_DEPTH INTEGER NOT NULL DEFAULT 0, PART_OF_DEPTH INTEGER NOT NULL DEFAULT 0, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, is_auto_generated_code BOOLEAN_CHAR NOT NULL DEFAULT 'F', generated_code_prefix CODE NOT NULL DEFAULT 'S', is_subcode_unique BOOLEAN_CHAR NOT NULL DEFAULT 'F', INHERIT_PROPERTIES BOOLEAN_CHAR NOT NULL DEFAULT 'F', VALIDATION_SCRIPT_ID TECH_ID, SHOW_PARENT_METADATA BOOLEAN_CHAR NOT NULL DEFAULT 'F', META_DATA JSONB, IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F'); -CREATE TABLE SAMPLE_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,SATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, IS_DISPLAYED BOOLEAN_CHAR NOT NULL DEFAULT 'T', ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE SAMPLE_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,SATY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, IS_DISPLAYED BOOLEAN_CHAR NOT NULL DEFAULT 'T', ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID,IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE DATA_SET_PROPERTIES (ID TECH_ID NOT NULL,DS_ID TECH_ID NOT NULL,DSTPT_ID TECH_ID NOT NULL,VALUE TEXT_VALUE,CVTE_ID TECH_ID, MATE_PROP_ID TECH_ID, SAMP_PROP_ID TECH_ID, PERS_ID_REGISTERER TECH_ID NOT NULL, REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_AUTHOR TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, DASE_FROZEN BOOLEAN_CHAR NOT NULL DEFAULT 'F', TSVECTOR_DOCUMENT TSVECTOR NOT NULL, IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); CREATE TABLE DATA_SET_PROPERTIES_HISTORY (ID TECH_ID NOT NULL, DS_ID TECH_ID NOT NULL, DSTPT_ID TECH_ID NOT NULL, VALUE TEXT_VALUE, VOCABULARY_TERM IDENTIFIER, MATERIAL IDENTIFIER, SAMPLE IDENTIFIER, PERS_ID_AUTHOR TECH_ID NOT NULL, VALID_FROM_TIMESTAMP TIME_STAMP NOT NULL, VALID_UNTIL_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP, INTEGER_ARRAY_VALUE LONG_VALUE[], REAL_ARRAY_VALUE DOUBLE_VALUE[], STRING_ARRAY_VALUE TEXT_VALUE[], TIMESTAMP_ARRAY_VALUE TIME_STAMP[], JSON_VALUE JSONB); -CREATE TABLE DATA_SET_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,DSTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID, IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F'); +CREATE TABLE DATA_SET_TYPE_PROPERTY_TYPES (ID TECH_ID NOT NULL,DSTY_ID TECH_ID NOT NULL,PRTY_ID TECH_ID NOT NULL,IS_MANDATORY BOOLEAN_CHAR NOT NULL DEFAULT 'F',IS_MANAGED_INTERNALLY BOOLEAN_CHAR NOT NULL DEFAULT 'F',PERS_ID_REGISTERER TECH_ID NOT NULL,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, ORDINAL ORDINAL_INT NOT NULL, SECTION DESCRIPTION_2000,SCRIPT_ID TECH_ID, IS_SHOWN_EDIT BOOLEAN_CHAR NOT NULL DEFAULT 'T',SHOW_RAW_VALUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_UNIQUE BOOLEAN_CHAR NOT NULL DEFAULT 'F', IS_MANAGED_INTERNALLY_NAMESPACE BOOLEAN_CHAR NOT NULL DEFAULT 'F', PATTERN TEXT_VALUE, PATTERN_TYPE PATTERN_TYPE, PATTERN_REGEX TEXT_VALUE); CREATE TABLE AUTHORIZATION_GROUPS (ID TECH_ID NOT NULL, CODE CODE NOT NULL, DESCRIPTION DESCRIPTION_2000,REGISTRATION_TIMESTAMP TIME_STAMP_DFL NOT NULL DEFAULT CURRENT_TIMESTAMP, PERS_ID_REGISTERER TECH_ID NOT NULL, MODIFICATION_TIMESTAMP TIME_STAMP DEFAULT CURRENT_TIMESTAMP); CREATE TABLE AUTHORIZATION_GROUP_PERSONS (AG_ID TECH_ID NOT NULL, PERS_ID TECH_ID NOT NULL); @@ -907,7 +907,17 @@ ALTER TABLE SEMANTIC_ANNOTATIONS ADD CONSTRAINT SEMANTIC_ANNOTATIONS_SSP_CK CHEC (SATY_ID IS NULL AND STPT_ID IS NULL AND PRTY_ID IS NOT NULL) ); -ALTER TABLE PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK +ALTER TABLE EXPERIMENT_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + +ALTER TABLE SAMPLE_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + +ALTER TABLE DATA_SET_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) ); diff --git a/server-application-server/source/sql/postgresql/migration/migration-194-195.sql b/server-application-server/source/sql/postgresql/migration/migration-194-195.sql index 65ddaa2f04fcb779d7922e18ac2843dd2bd19457..b40c8a5ce7ff8386b511d66946c2f8a79cd90d2e 100644 --- a/server-application-server/source/sql/postgresql/migration/migration-194-195.sql +++ b/server-application-server/source/sql/postgresql/migration/migration-194-195.sql @@ -2,12 +2,40 @@ CREATE DOMAIN PATTERN_TYPE AS VARCHAR(40) CHECK (VALUE IN ('PATTERN', 'VALUES', 'RANGES')); -ALTER TABLE IF EXISTS PROPERTY_TYPES +ALTER TABLE IF EXISTS EXPERIMENT_TYPE_PROPERTY_TYPES ADD COLUMN PATTERN TEXT_VALUE, ADD COLUMN PATTERN_TYPE PATTERN_TYPE, ADD COLUMN PATTERN_REGEX TEXT_VALUE; -ALTER TABLE IF EXISTS PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK +-- Adding columns for ETPT compatibility +ALTER TABLE IF EXISTS MATERIAL_TYPE_PROPERTY_TYPES + ADD COLUMN PATTERN TEXT_VALUE, + ADD COLUMN PATTERN_TYPE PATTERN_TYPE, + ADD COLUMN PATTERN_REGEX TEXT_VALUE; + +ALTER TABLE IF EXISTS SAMPLE_TYPE_PROPERTY_TYPES + ADD COLUMN PATTERN TEXT_VALUE, + ADD COLUMN PATTERN_TYPE PATTERN_TYPE, + ADD COLUMN PATTERN_REGEX TEXT_VALUE; + +ALTER TABLE IF EXISTS DATA_SET_TYPE_PROPERTY_TYPES + ADD COLUMN PATTERN TEXT_VALUE, + ADD COLUMN PATTERN_TYPE PATTERN_TYPE, + ADD COLUMN PATTERN_REGEX TEXT_VALUE; + +ALTER TABLE IF EXISTS EXPERIMENT_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + +ALTER TABLE IF EXISTS SAMPLE_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) - ); \ No newline at end of file + ); + +ALTER TABLE IF EXISTS DATA_SET_TYPE_PROPERTY_TYPES ADD CONSTRAINT PROPERTY_TYPES_PATTERN_CK CHECK + ((PATTERN IS NULL AND PATTERN_TYPE IS NULL AND PATTERN_REGEX IS NULL) OR + (PATTERN IS NOT NULL AND PATTERN_TYPE IS NOT NULL AND PATTERN_REGEX IS NOT NULL) + ); + +-- Materials are deprecated, no need to add constraint for compatibility reasons \ No newline at end of file diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompilerTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompilerTest.java index a465b3a5bba9bce4cfaa9589c194d41a2726986b..a68e5bb7b70adeb9b9772d6ae7baa76444be5b96 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompilerTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/property/PatternCompilerTest.java @@ -17,6 +17,8 @@ package ch.ethz.sis.openbis.generic.server.asapi.v3.executor.property; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.IPatternCompiler; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.entity.PatternCompiler; import ch.systemsx.cisd.common.exceptions.UserFailureException; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; @@ -86,6 +88,23 @@ public class PatternCompilerTest assertFalse(pattern.matcher("Cynthia").matches()); } + @Test + public void testValues_withDifferentQuotes() + { + Pattern pattern = compiler.compilePattern("“Aliceâ€, “B o b†, “ Cynthia â€", "VALUES"); + assertTrue(pattern.matcher("Alice").matches()); + assertFalse(pattern.matcher(" Alice ").matches()); + assertFalse(pattern.matcher(" Alice").matches()); + + assertTrue(pattern.matcher("B o b").matches()); + assertFalse(pattern.matcher("Bob").matches()); + assertFalse(pattern.matcher("Bo b").matches()); + + assertTrue(pattern.matcher(" Cynthia ").matches()); + assertFalse(pattern.matcher(" Cynthia").matches()); + assertFalse(pattern.matcher("Cynthia").matches()); + } + @Test public void testValues_specialCharacters() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateEntityTypeTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateEntityTypeTest.java index e643fd970878db8253f676cb1f4a4ac5f2f6968e..151ba1632e83ec8f74523a24d6914b50705367a6 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateEntityTypeTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateEntityTypeTest.java @@ -266,6 +266,54 @@ public abstract class CreateEntityTypeTest<CREATION extends IEntityTypeCreation, assertEquals(assignment.getOrdinal(), Integer.valueOf(1)); } + @Test + public void testCreateWithPropertyAssignmentsWithOnlyPatternTypeFilled_throwsException() + { + final String sessionToken = v3api.login(TEST_USER, PASSWORD); + + PropertyAssignmentCreation assignmentCreation = new PropertyAssignmentCreation(); + assignmentCreation.setPropertyTypeId(new PropertyTypePermId("DESCRIPTION")); + assignmentCreation.setPatternType("PATTERN"); + + final CREATION typeCreation = newTypeCreation(); + typeCreation.setCode("NEW_ENITTY_TYPE"); + typeCreation.setPropertyAssignments(Arrays.asList(assignmentCreation)); + + assertUserFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + createTypes(sessionToken, Arrays.asList(typeCreation)); + } + }, "Pattern and Pattern Type must be both either empty or non-empty!"); + + } + + @Test + public void testCreateWithPropertyAssignmentsWithOnlyPatternFilled_throwsException() + { + final String sessionToken = v3api.login(TEST_USER, PASSWORD); + + PropertyAssignmentCreation assignmentCreation = new PropertyAssignmentCreation(); + assignmentCreation.setPropertyTypeId(new PropertyTypePermId("DESCRIPTION")); + assignmentCreation.setPattern("SomePattern"); + + final CREATION typeCreation = newTypeCreation(); + typeCreation.setCode("NEW_ENITTY_TYPE"); + typeCreation.setPropertyAssignments(Arrays.asList(assignmentCreation)); + + assertUserFailureException(new IDelegatedAction() + { + @Override + public void execute() + { + createTypes(sessionToken, Arrays.asList(typeCreation)); + } + }, "Pattern and Pattern Type must be both either empty or non-empty!"); + + } + @Test public void testCreateWithPropertyAssignmentsWithIncorrectOrdinal() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreatePropertyTypeTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreatePropertyTypeTest.java index 3a5c94b2b4f99a4e97879bb8c465173ac678d719..852502dfc61dc3c0f8ac533408b0c40d36739bd3 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreatePropertyTypeTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreatePropertyTypeTest.java @@ -464,26 +464,6 @@ public class CreatePropertyTypeTest extends AbstractTest assertUserFailureException(creation, "Data type not specified."); } - @Test - public void testMissingPatternWithPatternTypeFilled() - { - PropertyTypeCreation creation = createBasic(); - creation.setPatternType("PATTERN"); - - - assertUserFailureException(creation, "Pattern and Pattern Type must be both either empty or non-empty!"); - } - - @Test - public void testMissingPatternTypeWithPatternFilled() - { - PropertyTypeCreation creation = createBasic(); - creation.setPattern("SomePattern"); - - - assertUserFailureException(creation, "Pattern and Pattern Type must be both either empty or non-empty!"); - } - @Test public void testVocabularyTypeMissingVocabulary() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateEntityTypeTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateEntityTypeTest.java index 8248ec5f295afc67ec3adde12d9ffd4855340fea..d390291a55a11af088296f35e0b8024d07794034 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateEntityTypeTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateEntityTypeTest.java @@ -934,6 +934,57 @@ public abstract class UpdateEntityTypeTest<CREATION extends IEntityTypeCreation, }, typeId, patternContains("checking access")); } + @Test + public void testUpdatePatternForEntity() + { + String sessionToken = v3api.login(TEST_USER, PASSWORD); + + // Given + PropertyTypeCreation propertyTypeCreation = new PropertyTypeCreation(); + propertyTypeCreation.setCode("PATTERN_ASSIGNMENT_TYPE_TEST"); + propertyTypeCreation.setManagedInternally(false); + propertyTypeCreation.setDataType(DataType.VARCHAR); + propertyTypeCreation.setLabel("some property type"); + propertyTypeCreation.setDescription("some property type"); + v3api.createPropertyTypes(sessionToken, Arrays.asList(propertyTypeCreation)); + + + final CREATION typeCreation = newTypeCreation(); + typeCreation.setCode("PATTERN_ASSIGNMENT_ENTITY_TYPE"); + typeCreation.setManagedInternally(false); + + PropertyAssignmentCreation assignmentCreation = new PropertyAssignmentCreation(); + assignmentCreation.setPropertyTypeId(new PropertyTypePermId("DESCRIPTION")); + assignmentCreation.setPatternType("PATTERN"); + assignmentCreation.setPattern(".*"); + + typeCreation.setPropertyAssignments(Arrays.asList(assignmentCreation)); + + EntityTypePermId typeId = createTypes(sessionToken, Arrays.asList(typeCreation)).get(0); + TYPE type = getType(sessionToken, typeId); + assertNotNull(type); + assertEquals(type.getPropertyAssignments().size(), 1); + assertEquals(type.getPropertyAssignments().get(0).getPatternType(), "PATTERN"); + assertEquals(type.getPropertyAssignments().get(0).getPattern(), ".*"); + + // When + UPDATE update = newTypeUpdate(); + update.setTypeId(typeId); + update.setDescription("New description"); + + assignmentCreation.setPatternType("RANGES"); + assignmentCreation.setPattern("(-3)-(-1), 1-10, 100-200"); + update.getPropertyAssignments().set(assignmentCreation); + + updateTypes(sessionToken, Arrays.asList(update)); + + type = getType(sessionToken, typeId); + assertEquals(type.getDescription(), "New description"); + assertEquals(type.getPropertyAssignments().size(), 1); + assertEquals(type.getPropertyAssignments().get(0).getPatternType(), "RANGES"); + assertEquals(type.getPropertyAssignments().get(0).getPattern(), "(-3)-(-1), 1-10, 100-200"); + } + @DataProvider Object[][] usersNotAllowedToUpdate() { diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePropertyTypesTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePropertyTypesTest.java index 853e02cd43ac403793eb39dde84daa72ebdd5563..2d8b57d8deb60d74709c4466ad92eec7034f8156 100644 --- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePropertyTypesTest.java +++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdatePropertyTypesTest.java @@ -225,48 +225,6 @@ public class UpdatePropertyTypesTest extends AbstractTest v3api.logout(sessionToken); } - @Test - public void testPattern() - { - // Given - String sessionToken = v3api.login(TEST_USER, PASSWORD); - PropertyTypePermId id = new PropertyTypePermId("COMMENT"); - PropertyTypeUpdate update = new PropertyTypeUpdate(); - update.setTypeId(id); - update.getPattern().setValue("SOME_PATTERN"); - update.getPatternType().setValue("PATTERN"); - - // When - v3api.updatePropertyTypes(sessionToken, Arrays.asList(update)); - - // Then - PropertyTypeFetchOptions fetchOptions = new PropertyTypeFetchOptions(); - PropertyType propertyType = v3api.getPropertyTypes(sessionToken, Arrays.asList(id), fetchOptions).get(id); - assertEquals(propertyType.getDescription(), "Any other comments"); - assertEquals(propertyType.getLabel(), "Comment"); - assertEquals(propertyType.isManagedInternally().booleanValue(), false); - assertEquals(propertyType.getPattern(), "SOME_PATTERN"); - assertEquals(propertyType.getPatternType(), "PATTERN"); - - update.getPattern().setValue("1-3"); - update.getPatternType().setValue("RANGES"); - v3api.updatePropertyTypes(sessionToken, Arrays.asList(update)); - fetchOptions = new PropertyTypeFetchOptions(); - propertyType = v3api.getPropertyTypes(sessionToken, Arrays.asList(id), fetchOptions).get(id); - assertEquals(propertyType.getPattern(), "1-3"); - assertEquals(propertyType.getPatternType(), "RANGES"); - - update.getPattern().setValue("\"a\",\"b\",\"c\""); - update.getPatternType().setValue("VALUES"); - v3api.updatePropertyTypes(sessionToken, Arrays.asList(update)); - fetchOptions = new PropertyTypeFetchOptions(); - propertyType = v3api.getPropertyTypes(sessionToken, Arrays.asList(id), fetchOptions).get(id); - assertEquals(propertyType.getPattern(), "\"a\",\"b\",\"c\""); - assertEquals(propertyType.getPatternType(), "VALUES"); - - v3api.logout(sessionToken); - } - @DataProvider Object[][] dataTypeConversion() { diff --git a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidatorTest.java b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidatorTest.java index e8d821feb351a3634e1b123a2cc5041b30db625d..0db5f30d4921a71ee6df54fd2b77dcdc4e130d47 100644 --- a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidatorTest.java +++ b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/dto/hibernate/PatternValueValidatorTest.java @@ -75,13 +75,13 @@ public class PatternValueValidatorTest EntityTypePropertyTypePE etpt = new SampleTypePropertyTypePE(); etpt.setPropertyType(pt); + etpt.setPattern(pattern); + etpt.setPatternType(patternType); EntityPropertyPE propertyPE = new SamplePropertyPE(); propertyPE.setEntityTypePropertyType(etpt); propertyPE.setValue(value); - pt.setPattern(pattern); - pt.setPatternType(patternType); return propertyPE; } diff --git a/server-application-server/sourceTest/sql/postgresql/195/015=data_set_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/195/015=data_set_type_property_types.tsv index 6324d0448997c0e66456080d3252a1e6c93c6a3c..fdff18bc8fed0f3be5e85452c8e2c53a60bc9599 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/015=data_set_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/195/015=data_set_type_property_types.tsv @@ -1,11 +1,11 @@ -1 2 14 t f 2 2009-04-24 14:45:06.348563+02 \N 1 \N t f f -2 2 26 f f 2 2009-09-15 08:44:10.351183+02 \N 2 \N t f f -3 2 25 f f 2 2009-09-15 08:44:16.365221+02 \N 3 \N t f f -4 2 13 f f 2 2009-09-15 08:44:36.342115+02 \N 4 \N t f f -5 10 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -6 10 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -7 10 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -8 11 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -9 11 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -10 11 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -11 12 29 t t 2 2009-02-09 12:12:05.238758+01 \N 1 \N t f f +1 2 14 t f 2 2009-04-24 14:45:06.348563+02 \N 1 \N t f f \N \N \N +2 2 26 f f 2 2009-09-15 08:44:10.351183+02 \N 2 \N t f f \N \N \N +3 2 25 f f 2 2009-09-15 08:44:16.365221+02 \N 3 \N t f f \N \N \N +4 2 13 f f 2 2009-09-15 08:44:36.342115+02 \N 4 \N t f f \N \N \N +5 10 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +6 10 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +7 10 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +8 11 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +9 11 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +10 11 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +11 12 29 t t 2 2009-02-09 12:12:05.238758+01 \N 1 \N t f f \N \N \N diff --git a/server-application-server/sourceTest/sql/postgresql/195/029=experiment_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/195/029=experiment_type_property_types.tsv index 451deff7be6ca68cbdb3faa63a7d75654c362035..e08e2a63e0b1adb11b9efadcbd0b2417794fdd9d 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/029=experiment_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/195/029=experiment_type_property_types.tsv @@ -1,9 +1,9 @@ -1 1 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f -2 2 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f -3 1 11 f f 2 2008-11-05 09:18:24.239+01 \N 2 \N t f f -5 1 13 f f 2 2008-11-05 09:21:53.256+01 \N 3 \N t f f -7 2 14 f f 2 2009-02-09 12:12:05.238758+01 \N 2 \N t f f -8 2 26 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -9 3 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -10 3 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f -11 3 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f +1 1 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f \N \N \N +2 2 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f \N \N \N +3 1 11 f f 2 2008-11-05 09:18:24.239+01 \N 2 \N t f f \N \N \N +5 1 13 f f 2 2008-11-05 09:21:53.256+01 \N 3 \N t f f \N \N \N +7 2 14 f f 2 2009-02-09 12:12:05.238758+01 \N 2 \N t f f \N \N \N +8 2 26 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +9 3 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +10 3 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N +11 3 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N diff --git a/server-application-server/sourceTest/sql/postgresql/195/041=material_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/195/041=material_type_property_types.tsv index 05353c10132f59da5ae036714b1ce8de929911bc..fe36bfe497c1029602b41966ff21b05979ec8971 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/041=material_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/195/041=material_type_property_types.tsv @@ -1,25 +1,25 @@ -1 1 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -2 6 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -3 7 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -4 3 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -5 3 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f -6 4 3 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -7 4 5 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f -8 4 1 f t 2008-11-05 09:18:00.622+01 1 \N 3 \N t f f -9 5 1 f t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -10 4 4 t f 2008-11-05 09:18:16.435+01 2 \N 4 \N t f f -11 5 10 f f 2008-11-05 09:18:16.903+01 2 \N 2 \N t f f -12 5 11 f f 2008-11-05 09:18:17.106+01 2 \N 3 \N t f f -17 5 7 f f 2008-11-05 09:18:28.391+01 2 \N 4 \N t f f -18 5 9 f f 2008-11-05 09:18:28.86+01 2 \N 5 \N t f f -19 5 8 f f 2008-11-05 09:18:29+01 2 \N 6 \N t f f -22 6 15 f f 2008-11-05 09:18:32.512+01 2 \N 2 \N t f f -23 8 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f -24 8 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f -25 9 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f -26 9 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f -27 10 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f -28 10 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f -29 11 1 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f -30 11 15 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f -31 11 25 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f +1 1 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +2 6 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +3 7 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +4 3 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +5 3 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N +6 4 3 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +7 4 5 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N +8 4 1 f t 2008-11-05 09:18:00.622+01 1 \N 3 \N t f f \N \N \N +9 5 1 f t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +10 4 4 t f 2008-11-05 09:18:16.435+01 2 \N 4 \N t f f \N \N \N +11 5 10 f f 2008-11-05 09:18:16.903+01 2 \N 2 \N t f f \N \N \N +12 5 11 f f 2008-11-05 09:18:17.106+01 2 \N 3 \N t f f \N \N \N +17 5 7 f f 2008-11-05 09:18:28.391+01 2 \N 4 \N t f f \N \N \N +18 5 9 f f 2008-11-05 09:18:28.86+01 2 \N 5 \N t f f \N \N \N +19 5 8 f f 2008-11-05 09:18:29+01 2 \N 6 \N t f f \N \N \N +22 6 15 f f 2008-11-05 09:18:32.512+01 2 \N 2 \N t f f \N \N \N +23 8 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f \N \N \N +24 8 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N +25 9 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N +26 9 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N +27 10 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f \N \N \N +28 10 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N +29 11 1 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N +30 11 15 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N +31 11 25 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N diff --git a/server-application-server/sourceTest/sql/postgresql/195/051=property_types.tsv b/server-application-server/sourceTest/sql/postgresql/195/051=property_types.tsv index cd97b5e5971d435fbc378612572cf0c31d12efe8..cdefea1af0cb5a4265e59b12b953528fe0ee0c60 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/051=property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/195/051=property_types.tsv @@ -1,19 +1,19 @@ -1 DESCRIPTION A Description Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -2 GENE_SYMBOL Gene Symbol, e.g. BMP15 Gene Symbol 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -3 NUCLEOTIDE_SEQUENCE A sequence of nucleotides Nucleotide Sequence 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -4 REFSEQ NCBI Reference Sequence code, applicable to sequences of type: DNA, RNA, protein RefSeq 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -5 OFFSET Offset from the start of the sequence Offset 2 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -6 PLATE_GEOMETRY Plate Geometry Plate Geometry 6 2008-11-05 09:18:00.622+01 1 1 t \N \N \N \N \N f \N \N \N -7 EYE_COLOR The color of the eyes Eye color 1 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -8 SIZE The size of the object Size 2 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -9 VOLUME The volume of this person Volume 3 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -10 IS_VALID Can the material be used? Valid? 4 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -11 PURCHASE_DATE When material has been bought Purchased 5 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -13 GENDER The gender of the living organism Gender 6 2008-11-05 09:18:31.545+01 2 4 f \N \N \N \N \N f \N \N \N -14 COMMENT Any other comments Comment 1 2008-11-05 09:18:31.545+01 2 \N f \N \N \N \N \N f \N \N \N -15 ORGANISM The organism from which cells come Organism 6 2008-11-05 09:18:31.545+01 2 3 f \N \N \N \N \N f \N \N \N -25 BACTERIUM bacterium bacterium 7 2009-08-18 17:52:05.435021+02 2 \N f 6 \N \N \N \N f \N \N \N -26 ANY_MATERIAL any_material any_material 7 2009-08-18 17:52:47.771005+02 2 \N f \N \N \N \N \N f \N \N \N -27 DYNAMIC_DESCRIPTION A Dynamic Dynamic_Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -28 TEST_VOCABULARY The test controlled vocabulary property Organism 6 2008-11-05 09:18:31.545+01 2 6 f \N \N \N \N \N f \N \N \N -29 IMAGING_DATA_CONFIG The test imaging data property Imaging_Data_Config 17 2008-11-05 09:18:31.545+01 2 \N t \N \N \N \N \N f \N \N \N +1 DESCRIPTION A Description Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +2 GENE_SYMBOL Gene Symbol, e.g. BMP15 Gene Symbol 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +3 NUCLEOTIDE_SEQUENCE A sequence of nucleotides Nucleotide Sequence 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +4 REFSEQ NCBI Reference Sequence code, applicable to sequences of type: DNA, RNA, protein RefSeq 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +5 OFFSET Offset from the start of the sequence Offset 2 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +6 PLATE_GEOMETRY Plate Geometry Plate Geometry 6 2008-11-05 09:18:00.622+01 1 1 t \N \N \N \N \N f +7 EYE_COLOR The color of the eyes Eye color 1 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +8 SIZE The size of the object Size 2 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +9 VOLUME The volume of this person Volume 3 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +10 IS_VALID Can the material be used? Valid? 4 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +11 PURCHASE_DATE When material has been bought Purchased 5 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +13 GENDER The gender of the living organism Gender 6 2008-11-05 09:18:31.545+01 2 4 f \N \N \N \N \N f +14 COMMENT Any other comments Comment 1 2008-11-05 09:18:31.545+01 2 \N f \N \N \N \N \N f +15 ORGANISM The organism from which cells come Organism 6 2008-11-05 09:18:31.545+01 2 3 f \N \N \N \N \N f +25 BACTERIUM bacterium bacterium 7 2009-08-18 17:52:05.435021+02 2 \N f 6 \N \N \N \N f +26 ANY_MATERIAL any_material any_material 7 2009-08-18 17:52:47.771005+02 2 \N f \N \N \N \N \N f +27 DYNAMIC_DESCRIPTION A Dynamic Dynamic_Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +28 TEST_VOCABULARY The test controlled vocabulary property Organism 6 2008-11-05 09:18:31.545+01 2 6 f \N \N \N \N \N f +29 IMAGING_DATA_CONFIG The test imaging data property Imaging_Data_Config 17 2008-11-05 09:18:31.545+01 2 \N t \N \N \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/195/059=sample_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/195/059=sample_type_property_types.tsv index 819852300715191fd31e85a2f7a521cfc2e2c48d..612feb8253de9f79afaca72d5a9505c8d4937209 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/059=sample_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/195/059=sample_type_property_types.tsv @@ -1,18 +1,18 @@ -14 7 27 f f 2 2012-04-16 14:49:35.990096+02 t \N 1 2 t f f -1 1 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f -2 5 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f -3 1 1 f f 2 2008-11-05 09:18:18.183+01 f \N 2 \N t f f -4 5 1 f f 2 2008-11-05 09:18:19.432+01 f \N 2 \N t f f -7 3 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f -8 3 15 f f 2 2009-02-09 12:07:26.839487+01 f \N 2 \N t f f -9 3 8 f f 2 2009-02-09 12:07:34.437531+01 f \N 3 \N t f f -11 3 26 f f 2 2009-08-18 17:53:21.362126+02 f \N 4 \N t f f -12 3 25 f f 2 2009-08-18 17:53:26.884669+02 f \N 5 \N t f f -13 2 5 f f 2 2010-10-25 14:49:35.990096+02 t \N 1 \N t f f -15 7 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 2 \N t f f -16 11 28 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f -17 12 1 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f -18 12 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f -19 12 25 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f -20 10 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f -21 11 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f +14 7 27 f f 2 2012-04-16 14:49:35.990096+02 t \N 1 2 t f f \N \N \N +1 1 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f \N \N \N +2 5 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f \N \N \N +3 1 1 f f 2 2008-11-05 09:18:18.183+01 f \N 2 \N t f f \N \N \N +4 5 1 f f 2 2008-11-05 09:18:19.432+01 f \N 2 \N t f f \N \N \N +7 3 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N +8 3 15 f f 2 2009-02-09 12:07:26.839487+01 f \N 2 \N t f f \N \N \N +9 3 8 f f 2 2009-02-09 12:07:34.437531+01 f \N 3 \N t f f \N \N \N +11 3 26 f f 2 2009-08-18 17:53:21.362126+02 f \N 4 \N t f f \N \N \N +12 3 25 f f 2 2009-08-18 17:53:26.884669+02 f \N 5 \N t f f \N \N \N +13 2 5 f f 2 2010-10-25 14:49:35.990096+02 t \N 1 \N t f f \N \N \N +15 7 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 2 \N t f f \N \N \N +16 11 28 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N +17 12 1 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N +18 12 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N +19 12 25 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N +20 10 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N +21 11 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N diff --git a/server-application-server/sourceTest/sql/postgresql/195/schema-195.sql b/server-application-server/sourceTest/sql/postgresql/195/schema-195.sql index 6032ef37eabf25db95ec76bac86ef7092f14de1a..14dd4d7a21b9c767f42dcea947f85143ec3d0bc7 100644 --- a/server-application-server/sourceTest/sql/postgresql/195/schema-195.sql +++ b/server-application-server/sourceTest/sql/postgresql/195/schema-195.sql @@ -1483,7 +1483,11 @@ CREATE TABLE data_set_type_property_types ( script_id tech_id, is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, - is_unique boolean_char DEFAULT false NOT NULL + is_unique boolean_char DEFAULT false NOT NULL, + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE data_set_types ( id tech_id NOT NULL, @@ -1798,7 +1802,11 @@ CREATE TABLE experiment_type_property_types ( script_id tech_id, is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, - is_unique boolean_char DEFAULT false NOT NULL + is_unique boolean_char DEFAULT false NOT NULL, + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE experiment_types ( id tech_id NOT NULL, @@ -2045,7 +2053,10 @@ CREATE TABLE material_type_property_types ( script_id tech_id, is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, - is_unique boolean_char DEFAULT false NOT NULL + is_unique boolean_char DEFAULT false NOT NULL, + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value ); CREATE TABLE material_types ( id tech_id NOT NULL, @@ -2238,11 +2249,7 @@ CREATE TABLE property_types ( transformation text_value, meta_data jsonb, saty_prop_id tech_id, - is_multi_value boolean_char DEFAULT false NOT NULL, - pattern text_value, - pattern_type pattern_type, - pattern_regex text_value, - CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) + is_multi_value boolean_char DEFAULT false NOT NULL ); CREATE TABLE queries ( id tech_id NOT NULL, @@ -2506,7 +2513,11 @@ CREATE TABLE sample_type_property_types ( script_id tech_id, is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, - is_unique boolean_char DEFAULT false NOT NULL + is_unique boolean_char DEFAULT false NOT NULL, + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE sample_types ( id tech_id NOT NULL, diff --git a/server-application-server/sourceTest/sql/postgresql/196/015=data_set_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/196/015=data_set_type_property_types.tsv index c299c38a73660289a28cbcaf9fafca7c48eca7a5..19aace5f9757fafd7ad98709fd053582b87b5e36 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/015=data_set_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/196/015=data_set_type_property_types.tsv @@ -1,11 +1,11 @@ -1 2 14 t f 2 2009-04-24 14:45:06.348563+02 \N 1 \N t f f f -2 2 26 f f 2 2009-09-15 08:44:10.351183+02 \N 2 \N t f f f -3 2 25 f f 2 2009-09-15 08:44:16.365221+02 \N 3 \N t f f f -4 2 13 f f 2 2009-09-15 08:44:36.342115+02 \N 4 \N t f f f -5 10 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -6 10 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -7 10 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -8 11 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -9 11 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -10 11 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -11 12 29 t t 2 2009-02-09 12:12:05.238758+01 \N 1 \N t f f f +1 2 14 t f 2 2009-04-24 14:45:06.348563+02 \N 1 \N t f f \N \N \N f +2 2 26 f f 2 2009-09-15 08:44:10.351183+02 \N 2 \N t f f \N \N \N f +3 2 25 f f 2 2009-09-15 08:44:16.365221+02 \N 3 \N t f f \N \N \N f +4 2 13 f f 2 2009-09-15 08:44:36.342115+02 \N 4 \N t f f \N \N \N f +5 10 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +6 10 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +7 10 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +8 11 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +9 11 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +10 11 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +11 12 29 t t 2 2009-02-09 12:12:05.238758+01 \N 1 \N t f f \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/196/029=experiment_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/196/029=experiment_type_property_types.tsv index 65ac1b2c9e1615d2d1fb28cca9696fa1b64f841e..67cd6ce13b932cc890ef4b1627374b40719d1126 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/029=experiment_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/196/029=experiment_type_property_types.tsv @@ -1,9 +1,9 @@ -1 1 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f f -2 2 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f f -3 1 11 f f 2 2008-11-05 09:18:24.239+01 \N 2 \N t f f f -5 1 13 f f 2 2008-11-05 09:21:53.256+01 \N 3 \N t f f f -7 2 14 f f 2 2009-02-09 12:12:05.238758+01 \N 2 \N t f f f -8 2 26 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -9 3 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -10 3 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f -11 3 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f f +1 1 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f \N \N \N f +2 2 1 t t 1 2008-11-05 09:18:00.622+01 \N 1 \N t f f \N \N \N f +3 1 11 f f 2 2008-11-05 09:18:24.239+01 \N 2 \N t f f \N \N \N f +5 1 13 f f 2 2008-11-05 09:21:53.256+01 \N 3 \N t f f \N \N \N f +7 2 14 f f 2 2009-02-09 12:12:05.238758+01 \N 2 \N t f f \N \N \N f +8 2 26 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +9 3 1 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +10 3 15 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f +11 3 25 f f 2 2009-02-09 12:12:05.238758+01 \N 3 \N t f f \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/196/041=material_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/196/041=material_type_property_types.tsv index 0ef971dec21bcc803e9d46e553dcb9869183ef8d..f7378062c96a2b33c683b9d6c00707f0ee210fb1 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/041=material_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/196/041=material_type_property_types.tsv @@ -1,25 +1,25 @@ -1 1 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -2 6 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -3 7 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -4 3 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -5 3 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f f -6 4 3 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -7 4 5 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f f -8 4 1 f t 2008-11-05 09:18:00.622+01 1 \N 3 \N t f f f -9 5 1 f t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -10 4 4 t f 2008-11-05 09:18:16.435+01 2 \N 4 \N t f f f -11 5 10 f f 2008-11-05 09:18:16.903+01 2 \N 2 \N t f f f -12 5 11 f f 2008-11-05 09:18:17.106+01 2 \N 3 \N t f f f -17 5 7 f f 2008-11-05 09:18:28.391+01 2 \N 4 \N t f f f -18 5 9 f f 2008-11-05 09:18:28.86+01 2 \N 5 \N t f f f -19 5 8 f f 2008-11-05 09:18:29+01 2 \N 6 \N t f f f -22 6 15 f f 2008-11-05 09:18:32.512+01 2 \N 2 \N t f f f -23 8 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f f -24 8 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f f -25 9 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f f -26 9 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f f -27 10 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f f -28 10 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f f -29 11 1 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f f -30 11 15 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f f -31 11 25 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f f +1 1 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +2 6 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +3 7 1 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +4 3 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +5 3 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N f +6 4 3 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +7 4 5 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N f +8 4 1 f t 2008-11-05 09:18:00.622+01 1 \N 3 \N t f f \N \N \N f +9 5 1 f t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +10 4 4 t f 2008-11-05 09:18:16.435+01 2 \N 4 \N t f f \N \N \N f +11 5 10 f f 2008-11-05 09:18:16.903+01 2 \N 2 \N t f f \N \N \N f +12 5 11 f f 2008-11-05 09:18:17.106+01 2 \N 3 \N t f f \N \N \N f +17 5 7 f f 2008-11-05 09:18:28.391+01 2 \N 4 \N t f f \N \N \N f +18 5 9 f f 2008-11-05 09:18:28.86+01 2 \N 5 \N t f f \N \N \N f +19 5 8 f f 2008-11-05 09:18:29+01 2 \N 6 \N t f f \N \N \N f +22 6 15 f f 2008-11-05 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f +23 8 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f \N \N \N f +24 8 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f +25 9 2 t t 2008-11-05 09:18:00.622+01 1 \N 1 \N t f f \N \N \N f +26 9 1 f t 2008-11-05 09:18:00.622+01 1 \N 2 \N t f f \N \N \N f +27 10 1 t t 2008-11-05 09:18:32.512+01 2 \N 1 \N t f f \N \N \N f +28 10 26 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f +29 11 1 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f +30 11 15 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f +31 11 25 f f 2012-03-13 09:18:32.512+01 2 \N 2 \N t f f \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/196/051=property_types.tsv b/server-application-server/sourceTest/sql/postgresql/196/051=property_types.tsv index cd97b5e5971d435fbc378612572cf0c31d12efe8..cdefea1af0cb5a4265e59b12b953528fe0ee0c60 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/051=property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/196/051=property_types.tsv @@ -1,19 +1,19 @@ -1 DESCRIPTION A Description Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -2 GENE_SYMBOL Gene Symbol, e.g. BMP15 Gene Symbol 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -3 NUCLEOTIDE_SEQUENCE A sequence of nucleotides Nucleotide Sequence 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -4 REFSEQ NCBI Reference Sequence code, applicable to sequences of type: DNA, RNA, protein RefSeq 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -5 OFFSET Offset from the start of the sequence Offset 2 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -6 PLATE_GEOMETRY Plate Geometry Plate Geometry 6 2008-11-05 09:18:00.622+01 1 1 t \N \N \N \N \N f \N \N \N -7 EYE_COLOR The color of the eyes Eye color 1 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -8 SIZE The size of the object Size 2 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -9 VOLUME The volume of this person Volume 3 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -10 IS_VALID Can the material be used? Valid? 4 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -11 PURCHASE_DATE When material has been bought Purchased 5 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f \N \N \N -13 GENDER The gender of the living organism Gender 6 2008-11-05 09:18:31.545+01 2 4 f \N \N \N \N \N f \N \N \N -14 COMMENT Any other comments Comment 1 2008-11-05 09:18:31.545+01 2 \N f \N \N \N \N \N f \N \N \N -15 ORGANISM The organism from which cells come Organism 6 2008-11-05 09:18:31.545+01 2 3 f \N \N \N \N \N f \N \N \N -25 BACTERIUM bacterium bacterium 7 2009-08-18 17:52:05.435021+02 2 \N f 6 \N \N \N \N f \N \N \N -26 ANY_MATERIAL any_material any_material 7 2009-08-18 17:52:47.771005+02 2 \N f \N \N \N \N \N f \N \N \N -27 DYNAMIC_DESCRIPTION A Dynamic Dynamic_Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f \N \N \N -28 TEST_VOCABULARY The test controlled vocabulary property Organism 6 2008-11-05 09:18:31.545+01 2 6 f \N \N \N \N \N f \N \N \N -29 IMAGING_DATA_CONFIG The test imaging data property Imaging_Data_Config 17 2008-11-05 09:18:31.545+01 2 \N t \N \N \N \N \N f \N \N \N +1 DESCRIPTION A Description Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +2 GENE_SYMBOL Gene Symbol, e.g. BMP15 Gene Symbol 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +3 NUCLEOTIDE_SEQUENCE A sequence of nucleotides Nucleotide Sequence 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +4 REFSEQ NCBI Reference Sequence code, applicable to sequences of type: DNA, RNA, protein RefSeq 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +5 OFFSET Offset from the start of the sequence Offset 2 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +6 PLATE_GEOMETRY Plate Geometry Plate Geometry 6 2008-11-05 09:18:00.622+01 1 1 t \N \N \N \N \N f +7 EYE_COLOR The color of the eyes Eye color 1 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +8 SIZE The size of the object Size 2 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +9 VOLUME The volume of this person Volume 3 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +10 IS_VALID Can the material be used? Valid? 4 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +11 PURCHASE_DATE When material has been bought Purchased 5 2008-11-05 09:18:16.559+01 2 \N f \N \N \N \N \N f +13 GENDER The gender of the living organism Gender 6 2008-11-05 09:18:31.545+01 2 4 f \N \N \N \N \N f +14 COMMENT Any other comments Comment 1 2008-11-05 09:18:31.545+01 2 \N f \N \N \N \N \N f +15 ORGANISM The organism from which cells come Organism 6 2008-11-05 09:18:31.545+01 2 3 f \N \N \N \N \N f +25 BACTERIUM bacterium bacterium 7 2009-08-18 17:52:05.435021+02 2 \N f 6 \N \N \N \N f +26 ANY_MATERIAL any_material any_material 7 2009-08-18 17:52:47.771005+02 2 \N f \N \N \N \N \N f +27 DYNAMIC_DESCRIPTION A Dynamic Dynamic_Description 1 2008-11-05 09:18:00.622+01 1 \N f \N \N \N \N \N f +28 TEST_VOCABULARY The test controlled vocabulary property Organism 6 2008-11-05 09:18:31.545+01 2 6 f \N \N \N \N \N f +29 IMAGING_DATA_CONFIG The test imaging data property Imaging_Data_Config 17 2008-11-05 09:18:31.545+01 2 \N t \N \N \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/196/059=sample_type_property_types.tsv b/server-application-server/sourceTest/sql/postgresql/196/059=sample_type_property_types.tsv index cfa33ffcd3c5ed5ba63e41df32acc6591996c3eb..e76042fac48c690bc6c33f655115f36b25a60adb 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/059=sample_type_property_types.tsv +++ b/server-application-server/sourceTest/sql/postgresql/196/059=sample_type_property_types.tsv @@ -1,18 +1,18 @@ -14 7 27 f f 2 2012-04-16 14:49:35.990096+02 t \N 1 2 t f f f -1 1 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f f -2 5 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f f -3 1 1 f f 2 2008-11-05 09:18:18.183+01 f \N 2 \N t f f f -4 5 1 f f 2 2008-11-05 09:18:19.432+01 f \N 2 \N t f f f -7 3 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f f -8 3 15 f f 2 2009-02-09 12:07:26.839487+01 f \N 2 \N t f f f -9 3 8 f f 2 2009-02-09 12:07:34.437531+01 f \N 3 \N t f f f -11 3 26 f f 2 2009-08-18 17:53:21.362126+02 f \N 4 \N t f f f -12 3 25 f f 2 2009-08-18 17:53:26.884669+02 f \N 5 \N t f f f -13 2 5 f f 2 2010-10-25 14:49:35.990096+02 t \N 1 \N t f f f -15 7 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 2 \N t f f f -16 11 28 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f f -17 12 1 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f f -18 12 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f f -19 12 25 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f f -20 10 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f f -21 11 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f f +14 7 27 f f 2 2012-04-16 14:49:35.990096+02 t \N 1 2 t f f \N \N \N f +1 1 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f \N \N \N f +2 5 6 t t 1 2008-11-05 09:18:00.622+01 t \N 1 \N t f f \N \N \N f +3 1 1 f f 2 2008-11-05 09:18:18.183+01 f \N 2 \N t f f \N \N \N f +4 5 1 f f 2 2008-11-05 09:18:19.432+01 f \N 2 \N t f f \N \N \N f +7 3 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N f +8 3 15 f f 2 2009-02-09 12:07:26.839487+01 f \N 2 \N t f f \N \N \N f +9 3 8 f f 2 2009-02-09 12:07:34.437531+01 f \N 3 \N t f f \N \N \N f +11 3 26 f f 2 2009-08-18 17:53:21.362126+02 f \N 4 \N t f f \N \N \N f +12 3 25 f f 2 2009-08-18 17:53:26.884669+02 f \N 5 \N t f f \N \N \N f +13 2 5 f f 2 2010-10-25 14:49:35.990096+02 t \N 1 \N t f f \N \N \N f +15 7 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 2 \N t f f \N \N \N f +16 11 28 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N f +17 12 1 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N f +18 12 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N f +19 12 25 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N f +20 10 14 f f 2 2009-02-09 12:07:19.107679+01 f \N 1 \N t f f \N \N \N f +21 11 15 f f 2 2009-02-09 12:12:05.238758+01 f \N 1 \N t f f \N \N \N f diff --git a/server-application-server/sourceTest/sql/postgresql/196/schema-196.sql b/server-application-server/sourceTest/sql/postgresql/196/schema-196.sql index 5e70adedda417d3c3a5ddb730544964cbd84a4e7..310a7a2b0a6ee97a264f7ac17706bb373d58d0be 100644 --- a/server-application-server/sourceTest/sql/postgresql/196/schema-196.sql +++ b/server-application-server/sourceTest/sql/postgresql/196/schema-196.sql @@ -1485,7 +1485,11 @@ CREATE TABLE data_set_type_property_types ( is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, is_unique boolean_char DEFAULT false NOT NULL, - is_managed_internally_namespace boolean_char DEFAULT false NOT NULL + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + is_managed_internally_namespace boolean_char DEFAULT false NOT NULL, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE data_set_types ( id tech_id NOT NULL, @@ -1802,7 +1806,11 @@ CREATE TABLE experiment_type_property_types ( is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, is_unique boolean_char DEFAULT false NOT NULL, - is_managed_internally_namespace boolean_char DEFAULT false NOT NULL + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + is_managed_internally_namespace boolean_char DEFAULT false NOT NULL, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE experiment_types ( id tech_id NOT NULL, @@ -2051,6 +2059,9 @@ CREATE TABLE material_type_property_types ( is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, is_unique boolean_char DEFAULT false NOT NULL, + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, is_managed_internally_namespace boolean_char DEFAULT false NOT NULL ); CREATE TABLE material_types ( @@ -2245,11 +2256,7 @@ CREATE TABLE property_types ( transformation text_value, meta_data jsonb, saty_prop_id tech_id, - is_multi_value boolean_char DEFAULT false NOT NULL, - pattern text_value, - pattern_type pattern_type, - pattern_regex text_value, - CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) + is_multi_value boolean_char DEFAULT false NOT NULL ); CREATE TABLE queries ( id tech_id NOT NULL, @@ -2514,7 +2521,11 @@ CREATE TABLE sample_type_property_types ( is_shown_edit boolean_char DEFAULT true NOT NULL, show_raw_value boolean_char DEFAULT false NOT NULL, is_unique boolean_char DEFAULT false NOT NULL, - is_managed_internally_namespace boolean_char DEFAULT false NOT NULL + pattern text_value, + pattern_type pattern_type, + pattern_regex text_value, + is_managed_internally_namespace boolean_char DEFAULT false NOT NULL, + CONSTRAINT property_types_pattern_ck CHECK ((pattern IS NULL AND pattern_type IS NULL AND pattern_regex IS NULL) OR (pattern IS NOT NULL AND pattern_type IS NOT NULL AND pattern_regex IS NOT NULL)) ); CREATE TABLE sample_types ( id tech_id NOT NULL,