summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java')
-rw-r--r--src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java444
1 files changed, 444 insertions, 0 deletions
diff --git a/src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java b/src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java
new file mode 100644
index 0000000..34286b4
--- /dev/null
+++ b/src/main/java/org/openecomp/sparky/synchronizer/config/SynchronizerConfiguration.java
@@ -0,0 +1,444 @@
+/**
+ * ============LICENSE_START===================================================
+ * SPARKY (AAI UI service)
+ * ============================================================================
+ * Copyright © 2017 AT&T Intellectual Property.
+ * Copyright © 2017 Amdocs
+ * All rights reserved.
+ * ============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=====================================================
+ *
+ * ECOMP and OpenECOMP are trademarks
+ * and service marks of AT&T Intellectual Property.
+ */
+
+package org.openecomp.sparky.synchronizer.config;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openecomp.cl.api.Logger;
+import org.openecomp.cl.eelf.LoggerFactory;
+import org.openecomp.sparky.logging.AaiUiMsgs;
+import org.openecomp.sparky.util.ConfigHelper;
+import org.openecomp.sparky.viewandinspect.config.TierSupportUiConstants;
+
+
+/**
+ * The Class SynchronizerConfiguration.
+ */
+public class SynchronizerConfiguration {
+
+ private static final Logger LOG = LoggerFactory.getInstance().getLogger(SynchronizerConfiguration.class);
+
+ public static final String CONFIG_FILE =
+ TierSupportUiConstants.DYNAMIC_CONFIG_APP_LOCATION + "synchronizer.properties";
+
+ private static SynchronizerConfiguration instance;
+
+ public static final String DEPTH_MODIFIER = "?depth=0";
+ public static final String DEPTH_ALL_MODIFIER = "?depth=all";
+ public static final String DEPTH_AND_NODES_ONLY_MODIFIER = "?depth=0&nodes-only";
+ public static final String NODES_ONLY_MODIFIER = "?nodes-only";
+
+ public static SynchronizerConfiguration getConfig() throws Exception {
+
+ if (instance == null) {
+ instance = new SynchronizerConfiguration();
+ instance.initialize();
+ }
+
+ return instance;
+ }
+
+ /**
+ * Instantiates a new synchronizer configuration.
+ */
+ public SynchronizerConfiguration() {
+ // test method
+ }
+
+ /**
+ * Initialize.
+ *
+ * @throws Exception the exception
+ */
+ protected void initialize() throws Exception {
+
+ Properties props = ConfigHelper.loadConfigFromExplicitPath(CONFIG_FILE);
+
+ // parse config for startup sync
+ try {
+ syncTaskInitialDelayInMs =
+ Integer.parseInt(props.getProperty("synchronizer.syncTask.initialDelayInMs",
+ SynchronizerConstants.DEFAULT_INITIAL_DELAY_IN_MS));
+ if (syncTaskInitialDelayInMs < 0) {
+ throw new Exception();
+ }
+ } catch (Exception exc) {
+ this.setConfigOkForStartupSync(false);
+ syncTaskInitialDelayInMs = SynchronizerConstants.DEFAULT_CONFIG_ERROR_INT_VALUE;
+ String message = "Invalid configuration for synchronizer parameter:"
+ + " 'synchronizer.syncTask.initialDelayInMs'";
+ LOG.error(AaiUiMsgs.SYNC_INVALID_CONFIG_PARAM, message);
+ }
+
+ // parse config for periodic sync
+ try {
+ syncTaskFrequencyInDay =
+ Integer.parseInt(props.getProperty("synchronizer.syncTask.taskFrequencyInDay",
+ SynchronizerConstants.DEFAULT_TASK_FREQUENCY_IN_DAY));
+ if (syncTaskFrequencyInDay < 0) {
+ throw new Exception();
+ }
+ } catch (Exception exc) {
+ this.setConfigOkForPeriodicSync(false);
+ syncTaskFrequencyInDay = SynchronizerConstants.DEFAULT_CONFIG_ERROR_INT_VALUE;
+ String message = "Invalid configuration for synchronizer parameter:"
+ + " 'synchronizer.syncTask.taskFrequencyInDay'";
+ LOG.error(AaiUiMsgs.SYNC_INVALID_CONFIG_PARAM, message);
+ }
+
+ try {
+ syncTaskStartTime = props.getProperty("synchronizer.syncTask.startTimestamp",
+ SynchronizerConstants.DEFAULT_START_TIMESTAMP); // Default 05:00:00 UTC
+ Pattern pattern = Pattern.compile(SynchronizerConstants.TIMESTAMP24HOURS_PATTERN);
+ Matcher matcher = pattern.matcher(syncTaskStartTime);
+ if (!matcher.matches()) {
+ throw new Exception();
+ }
+
+ List<String> timestampVal = Arrays.asList(syncTaskStartTime.split(" "));
+
+ if (timestampVal.size() == SynchronizerConstants.COMPONENTS_IN_TIMESTAMP) {
+ // Need both time and timezone offset
+ syncTaskStartTimeTimeZone = timestampVal
+ .get(SynchronizerConstants.IDX_TIMEZONE_IN_TIMESTAMP).replaceAll("UTC", "GMT");
+
+ String time = timestampVal.get(SynchronizerConstants.IDX_TIME_IN_TIMESTAMP);
+ DateFormat format = new SimpleDateFormat("HH:mm:ss");
+ Date date = format.parse(time);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+
+ syncTaskStartTimeHr = calendar.get(Calendar.HOUR_OF_DAY);
+ syncTaskStartTimeMin = calendar.get(Calendar.MINUTE);
+ syncTaskStartTimeSec = calendar.get(Calendar.SECOND);
+ } else {
+ LOG.info(AaiUiMsgs.SYNC_START_TIME);
+ }
+ } catch (Exception exc) {
+ this.setConfigOkForPeriodicSync(false);
+ String message = "Invalid configuration for synchronizer parameter:"
+ + " 'synchronizer.syncTask.startTimestamp'";
+ LOG.error(AaiUiMsgs.SYNC_INVALID_CONFIG_PARAM, message);
+ }
+
+ scrollContextTimeToLiveInMinutes =
+ Integer.parseInt(props.getProperty("synchronizer.scrollContextTimeToLiveInMinutes", "5"));
+ numScrollContextItemsToRetrievePerRequest = Integer.parseInt(
+ props.getProperty("synchronizer.numScrollContextItemsToRetrievePerRequest", "5000"));
+
+ resolverProgressLogFrequencyInMs = Long
+ .parseLong(props.getProperty("synchronizer.resolver.progressLogFrequencyInMs", "60000"));
+ resolverQueueMonitorFrequencyInMs = Long
+ .parseLong(props.getProperty("synchronizer.resolver.queueMonitorFrequencyInMs", "1000"));
+
+ indexIntegrityValidatorEnabled = Boolean
+ .parseBoolean(props.getProperty("synchronizer.indexIntegrityValidator.enabled", "false"));
+ indexIntegrityValidatorFrequencyInMs = Long.parseLong(
+ props.getProperty("synchronizer.indexIntegrityValidatorFrequencyInMs", "300000"));
+
+ displayVerboseQueueManagerStats = Boolean
+ .parseBoolean(props.getProperty("synchronizer.resolver.displayVerboseQueueManagerStats"));
+
+ resourceNotFoundErrorsSupressed =
+ Boolean.parseBoolean(props.getProperty("synchronizer.suppressResourceNotFoundErrors"));
+
+ nodesOnlyModifierEnabled =
+ Boolean.parseBoolean(props.getProperty("synchronizer.applyNodesOnlyModifier"));
+
+ historicalEntitySummarizerEnabled = Boolean
+ .parseBoolean(props.getProperty("synchronizer.historicalEntitySummarizerEnabled", "true"));
+ historicalEntitySummarizedFrequencyInMinutes = Long.parseLong(
+ props.getProperty("synchronizer.historicalEntitySummarizedFrequencyInMinutes", "60"));
+
+ autosuggestSynchronizationEnabled = Boolean
+ .parseBoolean(props.getProperty("synchronizer.autosuggestSynchronizationEnabled", "true"));
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(AaiUiMsgs.DEBUG_GENERIC, this.toString());
+ }
+ }
+
+ public boolean isNodesOnlyModifierEnabled() {
+ return nodesOnlyModifierEnabled;
+ }
+
+ public void setNodesOnlyModifierEnabled(boolean nodesOnlyModifierEnabled) {
+ this.nodesOnlyModifierEnabled = nodesOnlyModifierEnabled;
+ }
+
+ public int getSyncTaskInitialDelayInMs() {
+ return syncTaskInitialDelayInMs;
+ }
+
+ public void setSyncTaskInitialDelayInMs(int syncTaskInitialDelayInMs) {
+ this.syncTaskInitialDelayInMs = syncTaskInitialDelayInMs;
+ }
+
+ public boolean isDisplayVerboseQueueManagerStats() {
+ return displayVerboseQueueManagerStats;
+ }
+
+ public void setDisplayVerboseQueueManagerStats(boolean displayVerboseQueueManagerStats) {
+ this.displayVerboseQueueManagerStats = displayVerboseQueueManagerStats;
+ }
+
+ public boolean isHistoricalEntitySummarizerEnabled() {
+ return historicalEntitySummarizerEnabled;
+ }
+
+ public void setHistoricalEntitySummarizerEnabled(boolean historicalEntitySummarizerEnabled) {
+ this.historicalEntitySummarizerEnabled = historicalEntitySummarizerEnabled;
+ }
+
+ public long getHistoricalEntitySummarizedFrequencyInMinutes() {
+ return historicalEntitySummarizedFrequencyInMinutes;
+ }
+
+ public void setHistoricalEntitySummarizedFrequencyInMinutes(
+ long historicalEntitySummarizedFrequencyInMinutes) {
+ this.historicalEntitySummarizedFrequencyInMinutes =
+ historicalEntitySummarizedFrequencyInMinutes;
+ }
+
+ private int syncTaskInitialDelayInMs;
+
+ private int syncTaskFrequencyInMs;
+
+ private int scrollContextTimeToLiveInMinutes;
+
+ private int numScrollContextItemsToRetrievePerRequest;
+
+ private long resolverProgressLogFrequencyInMs;
+
+ private long resolverQueueMonitorFrequencyInMs;
+
+ private boolean indexIntegrityValidatorEnabled;
+
+ private long indexIntegrityValidatorFrequencyInMs;
+
+ private int syncTaskFrequencyInDay;
+
+ private String syncTaskStartTime;
+
+ private int syncTaskStartTimeHr = 5; // for default sync start time
+
+ private int syncTaskStartTimeMin;
+
+ private int syncTaskStartTimeSec;
+
+ private String syncTaskStartTimeTimeZone;
+
+ private boolean displayVerboseQueueManagerStats;
+
+ private boolean resourceNotFoundErrorsSupressed;
+
+ private boolean nodesOnlyModifierEnabled;
+
+ private boolean historicalEntitySummarizerEnabled;
+
+ private boolean autosuggestSynchronizationEnabled;
+
+ private long historicalEntitySummarizedFrequencyInMinutes;
+
+
+ private boolean configOkForStartupSync = true;
+
+ private boolean configOkForPeriodicSync = true;
+
+ public boolean isResourceNotFoundErrorsSupressed() {
+ return resourceNotFoundErrorsSupressed;
+ }
+
+ public void setResourceNotFoundErrorsSupressed(boolean resourceNotFoundErrorsSupressed) {
+ this.resourceNotFoundErrorsSupressed = resourceNotFoundErrorsSupressed;
+ }
+
+ public int getScrollContextTimeToLiveInMinutes() {
+ return scrollContextTimeToLiveInMinutes;
+ }
+
+ public void setScrollContextTimeToLiveInMinutes(int scrollContextTimeToLiveInMinutes) {
+ this.scrollContextTimeToLiveInMinutes = scrollContextTimeToLiveInMinutes;
+ }
+
+ public int getNumScrollContextItemsToRetrievePerRequest() {
+ return numScrollContextItemsToRetrievePerRequest;
+ }
+
+ public void setNumScrollContextItemsToRetrievePerRequest(
+ int numScrollContextItemsToRetrievePerRequest) {
+ this.numScrollContextItemsToRetrievePerRequest = numScrollContextItemsToRetrievePerRequest;
+ }
+
+ public int getSyncTaskFrequencyInDay() {
+ return syncTaskFrequencyInDay;
+ }
+
+ public void setSyncTaskFrequencyInDay(int syncTaskFrequencyInDay) {
+ this.syncTaskFrequencyInDay = syncTaskFrequencyInDay;
+ }
+
+ public String getSyncTaskStartTime() {
+ return syncTaskStartTime;
+ }
+
+ public void setSyncTaskStartTime(String syncTaskStartTime) {
+ this.syncTaskStartTime = syncTaskStartTime;
+ }
+
+ public int getSyncTaskStartTimeHr() {
+ return syncTaskStartTimeHr;
+ }
+
+ public void setSyncTaskStartTimeHr(int syncTaskStartTimeHr) {
+ this.syncTaskStartTimeHr = syncTaskStartTimeHr;
+ }
+
+ public int getSyncTaskStartTimeMin() {
+ return syncTaskStartTimeMin;
+ }
+
+ public void setSyncTaskStartTimeMin(int syncTaskStartTimeMin) {
+ this.syncTaskStartTimeMin = syncTaskStartTimeMin;
+ }
+
+ public int getSyncTaskStartTimeSec() {
+ return syncTaskStartTimeSec;
+ }
+
+ public void setSyncTaskStartTimeSec(int syncTaskStartTimeSec) {
+ this.syncTaskStartTimeSec = syncTaskStartTimeSec;
+ }
+
+ public String getSyncTaskStartTimeTimeZone() {
+ return syncTaskStartTimeTimeZone;
+ }
+
+ public void setSyncTaskStartTimeTimeZone(String syncTaskStartTimeTimeZone) {
+ this.syncTaskStartTimeTimeZone = syncTaskStartTimeTimeZone;
+ }
+
+ public int getSyncTaskFrequencyInMs() {
+ return syncTaskFrequencyInMs;
+ }
+
+ public void setSyncTaskFrequencyInMs(int syncTaskFrequencyInMs) {
+ this.syncTaskFrequencyInMs = syncTaskFrequencyInMs;
+ }
+
+ public long getResolverProgressLogFrequencyInMs() {
+ return resolverProgressLogFrequencyInMs;
+ }
+
+ public void setResolverProgressLogFrequencyInMs(long resolverProgressLogFrequencyInMs) {
+ this.resolverProgressLogFrequencyInMs = resolverProgressLogFrequencyInMs;
+ }
+
+ public long getResolverQueueMonitorFrequencyInMs() {
+ return resolverQueueMonitorFrequencyInMs;
+ }
+
+ public void setResolverQueueMonitorFrequencyInMs(long resolverQueueMonitorFrequencyInMs) {
+ this.resolverQueueMonitorFrequencyInMs = resolverQueueMonitorFrequencyInMs;
+ }
+
+ public boolean isIndexIntegrityValidatorEnabled() {
+ return indexIntegrityValidatorEnabled;
+ }
+
+ public void setIndexIntegrityValidatorEnabled(boolean indexIntegrityValidatorEnabled) {
+ this.indexIntegrityValidatorEnabled = indexIntegrityValidatorEnabled;
+ }
+
+ public long getIndexIntegrityValidatorFrequencyInMs() {
+ return indexIntegrityValidatorFrequencyInMs;
+ }
+
+ public void setIndexIntegrityValidatorFrequencyInMs(long indexIntegrityValidatorFrequencyInMs) {
+ this.indexIntegrityValidatorFrequencyInMs = indexIntegrityValidatorFrequencyInMs;
+ }
+
+ public boolean isConfigOkForStartupSync() {
+ return configOkForStartupSync;
+ }
+
+ public void setConfigOkForStartupSync(boolean configOkForStartupSync) {
+ this.configOkForStartupSync = configOkForStartupSync;
+ }
+
+ public boolean isConfigOkForPeriodicSync() {
+ return configOkForPeriodicSync;
+ }
+
+ public void setConfigOkForPeriodicSync(boolean configOkForPeriodicSync) {
+ this.configOkForPeriodicSync = configOkForPeriodicSync;
+ }
+
+ public boolean isConfigDisabledForInitialSync() {
+ return syncTaskInitialDelayInMs == SynchronizerConstants.DELAY_NO_STARTUP_SYNC_IN_MS;
+ }
+
+ public boolean isAutosuggestSynchronizationEnabled() {
+ return autosuggestSynchronizationEnabled;
+ }
+
+ public void setAutosuggestSynchronizationEnabled(boolean autosuggestSynchronizationEnabled) {
+ this.autosuggestSynchronizationEnabled = autosuggestSynchronizationEnabled;
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return "SynchronizerConfiguration [syncTaskInitialDelayInMs=" + syncTaskInitialDelayInMs
+ + ", syncTaskFrequencyInMs=" + syncTaskFrequencyInMs + ", scrollContextTimeToLiveInMinutes="
+ + scrollContextTimeToLiveInMinutes + ", numScrollContextItemsToRetrievePerRequest="
+ + numScrollContextItemsToRetrievePerRequest + ", resolverProgressLogFrequencyInMs="
+ + resolverProgressLogFrequencyInMs + ", resolverQueueMonitorFrequencyInMs="
+ + resolverQueueMonitorFrequencyInMs + ", indexIntegrityValidatorEnabled="
+ + indexIntegrityValidatorEnabled + ", indexIntegrityValidatorFrequencyInMs="
+ + indexIntegrityValidatorFrequencyInMs + ", ssyncTaskFrequencyInDay="
+ + syncTaskFrequencyInDay + ", syncTaskStartTime=" + syncTaskStartTime
+ + ", syncTaskStartTimeHr=" + syncTaskStartTimeHr + ", syncTaskStartTimeMin="
+ + syncTaskStartTimeMin + ", syncTaskStartTimeSec=" + syncTaskStartTimeSec
+ + ", syncTaskStartTimeTimeZone=" + syncTaskStartTimeTimeZone
+ + ", displayVerboseQueueManagerStats=" + displayVerboseQueueManagerStats
+ + ", resourceNotFoundErrorsSupressed=" + resourceNotFoundErrorsSupressed
+ + ", nodesOnlyModifierEnabled=" + nodesOnlyModifierEnabled + ", configOKForStartupSync="
+ + configOkForStartupSync + ", configOKForPeriodicSync=" + configOkForPeriodicSync
+ + ", autosuggestSynchronizationEnabled=" + autosuggestSynchronizationEnabled + "]";
+ }
+
+}