diff options
Diffstat (limited to 'common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java')
-rw-r--r-- | common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java | 182 |
1 files changed, 97 insertions, 85 deletions
diff --git a/common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java b/common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java index d31f8227dc..9e991e8dcb 100644 --- a/common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java +++ b/common-app-api/src/main/java/org/openecomp/sdc/common/datastructure/ESTimeBasedEvent.java @@ -7,9 +7,9 @@ * 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. @@ -24,97 +24,109 @@ import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.Date; +import java.util.Formatter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import java.util.TimeZone; /** * Extending this class enforces the objects of implementing classes to have a * timestamp, so that like in logstash, we can derive the index name for those * object from the timestamp. - * - * @author paharoni * + * @author paharoni */ public class ESTimeBasedEvent { - protected SimpleDateFormat simpleDateFormat; - protected static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z"; - protected String timestamp; - protected Map<String, Object> fields = new HashMap<>(); - - public ESTimeBasedEvent() { - simpleDateFormat = new SimpleDateFormat(dateFormatPattern); - simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - this.timestamp = simpleDateFormat.format(new Date()); - fields.put(AuditingFieldsKey.AUDIT_TIMESTAMP.getDisplayName(), this.timestamp); - - } - - public static ESTimeBasedEvent createEventFromJson(String jsonString) throws JSONException { - - ESTimeBasedEvent event = new ESTimeBasedEvent(); - JSONObject gsonObj; - gsonObj = new JSONObject(jsonString); - Iterator keys = gsonObj.keys(); - - while (keys.hasNext()) { - String key = (String) keys.next(); - event.fields.put(key, gsonObj.get(key)); - if (key.equals(AuditingFieldsKey.AUDIT_TIMESTAMP.getDisplayName())) { - event.timestamp = (String) gsonObj.get(key); - } - } - return event; - } - - public String calculateYearIndexSuffix() { - return timestamp.substring(0, 4); - } - - public String calculateMonthIndexSuffix() { - return timestamp.substring(0, 7); - } - - public String calculateDayIndexSuffix() { - return timestamp.substring(0, 10); - } - - public String calculateHourIndexSuffix() { - return new StringBuilder().append(timestamp.substring(0, 10)).append("-").append(timestamp.substring(11, 13)) - .toString(); - } - - public String calculateMinuteIndexSuffix() { - return new StringBuilder().append(timestamp.substring(0, 10)).append("-").append(timestamp.substring(11, 13)) - .append("-").append(timestamp.substring(14, 16)).toString(); - } - - protected String getFormattedString(String template, Object... params) { - String res = null; - StringBuilder sb = new StringBuilder(); - Formatter formatter = new Formatter(sb, Locale.US); - try { - formatter.format(template, params); - res = formatter.toString(); - } finally { - formatter.close(); - } - return res; - } - - public String getTimestamp() { - return timestamp; - } - - public void setTimestamp(String timestamp) { - this.timestamp = timestamp; - } - - public Map<String, Object> getFields() { - return fields; - } - - public void setFields(Map<String, Object> fields) { - this.fields = fields; - } + private static final int TIMESTAMP_YEAR_SUBSTRING = 4; + private static final int TIMESTAMP_MONTH_SUBSTRING = 7; + private static final int TIMESTAMP_DAY_SUBSTRING = 10; + private static final int TIMESTAMP_HOURS_START = 11; + private static final int TIMESTAMP_HOURS_END = 13; + private static final int TIMESTAMP_MINUTES_START = 14; + private static final int TIMESTAMP_MINUTES_END = 16; + + protected SimpleDateFormat simpleDateFormat; + protected static String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z"; + protected String timestamp; + protected Map<String, Object> fields = new HashMap<>(); + + public ESTimeBasedEvent() { + simpleDateFormat = new SimpleDateFormat(dateFormatPattern); + simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); + this.timestamp = simpleDateFormat.format(new Date()); + fields.put(AuditingFieldsKey.AUDIT_TIMESTAMP.getDisplayName(), this.timestamp); + + } + + public static ESTimeBasedEvent createEventFromJson(String jsonString) throws JSONException { + + ESTimeBasedEvent event = new ESTimeBasedEvent(); + JSONObject gsonObj; + gsonObj = new JSONObject(jsonString); + Iterator keys = gsonObj.keys(); + + while (keys.hasNext()) { + String key = (String) keys.next(); + event.fields.put(key, gsonObj.get(key)); + if (key.equals(AuditingFieldsKey.AUDIT_TIMESTAMP.getDisplayName())) { + event.timestamp = (String) gsonObj.get(key); + } + } + return event; + } + + public String calculateYearIndexSuffix() { + return timestamp.substring(0, TIMESTAMP_YEAR_SUBSTRING); + } + + public String calculateMonthIndexSuffix() { + return timestamp.substring(0, TIMESTAMP_MONTH_SUBSTRING); + } + + public String calculateDayIndexSuffix() { + return timestamp.substring(0, TIMESTAMP_DAY_SUBSTRING); + } + + public String calculateHourIndexSuffix() { + return calculateBaseIndexSuffix().toString(); + } + + public String calculateMinuteIndexSuffix() { + return calculateBaseIndexSuffix().append("-").append(timestamp, TIMESTAMP_MINUTES_START, TIMESTAMP_MINUTES_END).toString(); + } + + private StringBuilder calculateBaseIndexSuffix() { + return new StringBuilder().append(timestamp, 0, TIMESTAMP_DAY_SUBSTRING).append("-").append(timestamp, TIMESTAMP_HOURS_START, TIMESTAMP_HOURS_END); + } + + protected String getFormattedString(String template, Object... params) { + String res; + StringBuilder sb = new StringBuilder(); + try (Formatter formatter = new Formatter(sb, Locale.US)) { + formatter.format(template, params); + res = formatter.toString(); + } + return res; + } + + public String getTimestamp() { + return timestamp; + } + + public void setTimestamp(String timestamp) { + this.timestamp = timestamp; + } + + public Map<String, Object> getFields() { + return fields; + } + + public void setFields(Map<String, Object> fields) { + this.fields = fields; + } } |