diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java index 485a930f10745e0e16160b2765cb28f660617c17..7768b2577985c6a2ac82323736b0058cef83be3e 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java @@ -219,11 +219,13 @@ public class SyncConfig private Boolean dryRun = false; private Boolean verbose = false; - + private boolean masterDataUpdate; - + + private boolean propertyTypeUpdateAllowed; + private boolean propertyUnassignmentAllowed; - + private boolean deletionAllowed; private boolean keepOriginalTimestampsAndUsers; @@ -370,6 +372,16 @@ public class SyncConfig this.propertyUnassignmentAllowed = propertyUnassignmentAllowed; } + public boolean isPropertyTypeUpdateAllowed() + { + return propertyTypeUpdateAllowed; + } + + public void setPropertyTypeUpdateAllowed(boolean propertyTypeUpdateAllowed) + { + this.propertyTypeUpdateAllowed = propertyTypeUpdateAllowed; + } + public boolean isDeletionAllowed() { return deletionAllowed; diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java index 8ef5842cb87fc9174bd80f8544cfd0ce660fa6a8..e0827b3d3fc83fe7052c35dc816be976759ec83b 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SynchronizationConfigReader.java @@ -87,7 +87,9 @@ public class SynchronizationConfigReader private static final String MASTER_DATA_UPDATE_PROPERTY_NAME = "master-data-update"; private static final String PROPERTY_UNASSIGNMENT_ALLOWED_PROPERTY_NAME = "property-unassignment-allowed"; - + + private static final String PROPERTY_TYPE_UPDATE_ALLOWED_PROPERTY_NAME = "property-type-update-allowed"; + private static final String DELETION_ALLOWED_PROPERTY_NAME = "deletion-allowed"; private static final String KEEP_ORIGINAL_TIMESTAMPS_AND_USERS_PROPERTY_NAME = "keep-original-timestamps-and-users"; @@ -132,7 +134,7 @@ public class SynchronizationConfigReader config.setEmailAddresses(reader.getString(section, EMAIL_ADDRESSES_PROPERTY_NAME, null, true)); config.setDataSourceAlias(reader.getString(section, DATA_SOURCE_ALIAS_PROPERTY_NAME, section, false)); String defaultLogFilePath = DEFAULT_LOG_FILE_PATH.replaceFirst(Pattern.quote("{alias}"), config.getDataSourceAlias()); - config.setLogFilePath(reader.getString(section, LOG_FILE_PROPERTY_NAME, defaultLogFilePath, false) + config.setLogFilePath(reader.getString(section, LOG_FILE_PROPERTY_NAME, defaultLogFilePath, false) + new SimpleDateFormat(".yyyy-MM-dd_HH-mm-ss", Locale.US).format(new Date())); config.setDataSourceURI(reader.getString(section, DATA_SOURCE_URL_PROPERTY_NAME, null, true)); config.setDataSourceOpenbisURL(reader.getString(section, DATA_SOURCE_OPENBIS_URL_PROPERTY_NAME, null, true)); @@ -195,6 +197,7 @@ public class SynchronizationConfigReader config.setMasterDataUpdate(reader.getBoolean(section, MASTER_DATA_UPDATE_PROPERTY_NAME, true)); config.setDeletionAllowed(reader.getBoolean(section, DELETION_ALLOWED_PROPERTY_NAME, false)); config.setPropertyUnassignmentAllowed(reader.getBoolean(section, PROPERTY_UNASSIGNMENT_ALLOWED_PROPERTY_NAME, false)); + config.setPropertyTypeUpdateAllowed(reader.getBoolean(section, PROPERTY_TYPE_UPDATE_ALLOWED_PROPERTY_NAME, false)); config.setKeepOriginalTimestampsAndUsers(reader.getBoolean(section, KEEP_ORIGINAL_TIMESTAMPS_AND_USERS_PROPERTY_NAME, true)); config.setKeepOriginalFrozenFlags(reader.getBoolean(section, KEEP_ORIGINAL_FROZEN_FLAGS_PROPERTY_NAME, true)); config.setWishedNumberOfStreams(reader.getInt(section, WISHED_NUMBER_OF_STREAMS_PROPERTY_NAME, null, false)); diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java index 316706e20829ca452c8b89b0222dec006a7fa7f6..0d538d039b71da6f93796fc91c809e5d64d8d6b8 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java @@ -19,7 +19,6 @@ package ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchroniz import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java index 07cd741ed43f954747e7853e5026374ae0989a10..ea0c2f4adfd011477019ef9b340a71e2dd8e2b30 100644 --- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java +++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataSynchronizer.java @@ -353,14 +353,11 @@ public class MasterDataSynchronizer if (existingEntityType != null) { String diff = calculateDiff(entityKind, existingEntityType, incomingEntityType); - if (StringUtils.isNotBlank(diff)) + if (StringUtils.isNotBlank(diff) && config.isPropertyTypeUpdateAllowed()) { incomingEntityType.setModificationDate(existingEntityType.getModificationDate()); updateEntityType(entityKind, incomingEntityType, diff); } - // existingEntityType.setCode(incomingEntityType.getCode()); - // existingEntityType.setDescription(incomingEntityType.getDescription()); - // existingEntityType.setValidationScript(incomingEntityType.getValidationScript()); if (list != null && entityKind != EntityKind.MATERIAL) // defer material property assignments until after property types are processed { processPropertyAssignments(existingEntityType, list); @@ -396,7 +393,7 @@ public class MasterDataSynchronizer if (foundType != null) { String diff = calculateDiff(foundType, newETPTAssignment); - if (StringUtils.isNotBlank(diff)) + if (StringUtils.isNotBlank(diff) && config.isPropertyTypeUpdateAllowed()) { newETPTAssignment.setModificationDate(foundType.getModificationDate()); synchronizerFacade.updatePropertyTypeAssignment(newETPTAssignment, diff);