From 161df8a94bb3b0c34ed16fd4fdba078bd1eeef9a Mon Sep 17 00:00:00 2001 From: Patrick Brady Date: Wed, 13 Dec 2017 11:14:21 -0800 Subject: Second part of onap rename This is the second commit of the rename. The folder structure is renamed for appc-adapters and appc-config in this commit. Change-Id: Iaa2b8c937ff1ca1b5d1178128961fb115ee65d9b Signed-off-by: Patrick Brady Issue-ID: APPC-13 --- .../sdnc/config/generator/tool/CheckDataTool.java | 84 +++++++++++ .../onap/sdnc/config/generator/tool/Constants.java | 32 +++++ .../generator/tool/CustomJsonNodeFactory.java | 32 +++++ .../sdnc/config/generator/tool/CustomTextNode.java | 50 +++++++ .../sdnc/config/generator/tool/DbServiceUtil.java | 75 ++++++++++ .../sdnc/config/generator/tool/EscapeUtils.java | 102 +++++++++++++ .../onap/sdnc/config/generator/tool/JSONTool.java | 157 +++++++++++++++++++++ .../sdnc/config/generator/tool/LogParserTool.java | 94 ++++++++++++ .../onap/sdnc/config/generator/tool/MergeTool.java | 109 ++++++++++++++ 9 files changed, 735 insertions(+) create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CheckDataTool.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/Constants.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomJsonNodeFactory.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomTextNode.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/DbServiceUtil.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/EscapeUtils.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/JSONTool.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/LogParserTool.java create mode 100644 appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/MergeTool.java (limited to 'appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool') diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CheckDataTool.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CheckDataTool.java new file mode 100644 index 000000000..316e821df --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CheckDataTool.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import java.io.StringReader; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.openecomp.sdnc.config.generator.ConfigGeneratorConstant; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +public class CheckDataTool { + + public static String checkData(String data){ + boolean isJSON = isJSON(data); + if(isJSON){ + return ConfigGeneratorConstant.DATA_TYPE_JSON; + } + + boolean isXML = isXML(data); + if(isXML){ + return ConfigGeneratorConstant.DATA_TYPE_XML; + } + + return ConfigGeneratorConstant.DATA_TYPE_TEXT; + } + + public static boolean isJSON(String data) { + try { + new JSONObject(data); + } catch (JSONException ex) { + try { + new JSONArray(data); + } catch (JSONException ex1) { + return false; + } + } + return true; + + // try { + // final ObjectMapper mapper = new ObjectMapper(); + // mapper.readTree(data); + // return true; + // } catch (IOException e) { + // return false; + // } + } + + public static boolean isXML(String data) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(new InputSource(new StringReader(data))); + return true; + } catch (Exception ex) { + return false; + } + + } + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/Constants.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/Constants.java new file mode 100644 index 000000000..d8af571e8 --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/Constants.java @@ -0,0 +1,32 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +public class Constants +{ + + public static final String DBLIB_SERVICE = "org.openecomp.sdnc.sli.resource.dblib.DBResourceManager"; + public static final String DEVICE_AUTHENTICATION="DEVICE_AUTHENTICATION"; + public static final String SCHEMA_SDNCTL="SDNCTL"; + + public static final String APPC_CONFIG_DIR="/opt/app/bvc/properties"; + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomJsonNodeFactory.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomJsonNodeFactory.java new file mode 100644 index 000000000..5820cea7a --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomJsonNodeFactory.java @@ -0,0 +1,32 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.TextNode; + +public class CustomJsonNodeFactory extends JsonNodeFactory { + + public TextNode textNode(String text) { + return new CustomTextNode(text); + } + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomTextNode.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomTextNode.java new file mode 100644 index 000000000..93e252a6d --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/CustomTextNode.java @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + + +import com.fasterxml.jackson.core.io.CharTypes; +import com.fasterxml.jackson.databind.node.TextNode; + +public class CustomTextNode extends TextNode{ + + public CustomTextNode(String v) { + super(v); + } + + @Override + public String toString() + { + int len = textValue().length(); + len = len + 2 + (len >> 4); + StringBuilder sb = new StringBuilder(len); + appendQuoted(sb, textValue()); + return sb.toString(); + } + + protected static void appendQuoted(StringBuilder sb, String content) + { + // sb.append('"'); + CharTypes.appendQuoted(sb, content); + // sb.append('"'); + } + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/DbServiceUtil.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/DbServiceUtil.java new file mode 100644 index 000000000..c8340816e --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/DbServiceUtil.java @@ -0,0 +1,75 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import java.io.File; +import java.net.URL; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Properties; + +import javax.sql.rowset.CachedRowSet; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.onap.ccsdk.sli.core.dblib.DBResourceManager; +import org.onap.ccsdk.sli.core.dblib.DbLibService; + +public class DbServiceUtil +{ + private static final Logger log = LoggerFactory + .getLogger(DbServiceUtil.class); + + private static Properties props; + private static DBResourceManager jdbcDataSource = null; + + + public static boolean updateDB(String tableName, ArrayList inputArgs, String scema, String whereClause, String setCluase) throws SQLException + { + String updatePasswordString = "update " + tableName + " set " + setCluase + " where " + whereClause ; + boolean result = jdbcDataSource.writeData(updatePasswordString, inputArgs,Constants.SCHEMA_SDNCTL); + return result; + } + + + public static CachedRowSet getData(String tableName, ArrayList argList, String schema, String getselectData, String getDataClasue ) throws SQLException + { + String selectQuery = "select " + getselectData + "from " + tableName + " where " + getDataClasue ; + CachedRowSet data = jdbcDataSource.getData(selectQuery, argList, schema); + return data; + } + + + public static DBResourceManager initDbLibService() throws Exception + { + props = new Properties(); + File file = new File("/opt/app/bvc/properties/dblib.properties"); + URL propURL = file.toURI().toURL(); + props.load(propURL.openStream()); + jdbcDataSource = new DBResourceManager(props); + return jdbcDataSource; + + } + + + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/EscapeUtils.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/EscapeUtils.java new file mode 100644 index 000000000..36afe76ae --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/EscapeUtils.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import org.apache.commons.lang3.StringUtils; + +public class EscapeUtils { + + public EscapeUtils() { + // TODO Auto-generated constructor stub + } + + public static String escapeSql(String str) { + if (str == null) { + return null; + } + String searchList[] = new String[]{"'","\\"}; + String replacementList[] = new String[]{ "''","\\\\"}; + return StringUtils.replaceEach(str,searchList, replacementList); + } + + public static String unescapeSql(String str) { + if (str == null) { + return null; + } + + String searchList[] = new String[] {"''"}; + String replacementList[] = new String[] {"'"}; + return StringUtils.replaceEach(str, searchList, replacementList); + } + + + // For Generic Purpose + public static String escapeSQL(String s) { + if (s == null) { + return null; + } + + int length = s.length(); + int newLength = length; + for (int i = 0; i < length; i++) { + char c = s.charAt(i); + switch (c) { + case '\\': + case '\"': + case '\'': + case '\0': { + newLength += 1; + } + break; + } + } + if (length == newLength) { + // nothing to escape in the string + return s; + } + StringBuffer sb = new StringBuffer(newLength); + for (int i = 0; i < length; i++) { + char c = s.charAt(i); + switch (c) { + case '\\': { + sb.append("\\\\"); + } + break; + case '\"': { + sb.append("\\\""); + } + break; + case '\'': { + sb.append("\\\'"); + } + break; + case '\0': { + sb.append("\\0"); + } + break; + default: { + sb.append(c); + } + } + } + return sb.toString(); + } +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/JSONTool.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/JSONTool.java new file mode 100644 index 000000000..63fd7006e --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/JSONTool.java @@ -0,0 +1,157 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + + + +public class JSONTool { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(JSONTool.class); + + public static Map convertToProperties(String s) throws JSONException { + return convertToProperties(s, null); + } + + public static Map convertToProperties(String s,List blockKeys) throws JSONException { + JSONObject json = new JSONObject(s); + Map mm = new HashMap(); + + Map wm = new HashMap(); + Iterator ii = json.keys(); + while (ii.hasNext()) { + String key1 = ii.next(); + wm.put(key1, json.get(key1)); + + + } + + while (!wm.isEmpty()) + for (String key : new ArrayList<>(wm.keySet())) { + Object o = wm.get(key); + wm.remove(key); + + + if(blockKeys != null && blockKeys.contains(key) && o != null){ + //log.info("Adding JSON Block Keys : " + key + "=" + o.toString()); + mm.put("block_" +key,o.toString()); + } + + if (o instanceof Boolean || o instanceof Number || o instanceof String) { + mm.put(key, o.toString()); + //log.info("Added property: " + key + ": " + o.toString()); + } + + else if (o instanceof JSONObject) { + JSONObject jo = (JSONObject) o; + Iterator i = jo.keys(); + while (i.hasNext()) { + String key1 = i.next(); + wm.put(key + "." + key1, jo.get(key1)); + } + } + + else if (o instanceof JSONArray) { + JSONArray ja = (JSONArray) o; + mm.put("size_"+key, String.valueOf(ja.length())); + + //log.info("Added property: " + key + "_length" + ": " + String.valueOf(ja.length())); + + for (int i = 0; i < ja.length(); i++) + wm.put(key + '[' + i + ']', ja.get(i)); + } + } + + return mm; + } + + /* + public static Map convertToProperties1(String s,List blockKeys) throws Exception { + ObjectMapper objectMapper = new ObjectMapper(); + + JsonNode rootNode = objectMapper.readTree(s); + + Map mm = new HashMap(); + + Map wm = new HashMap(); + Iterator ii = rootNode.fieldNames(); + while (ii.hasNext()) { + String key1 = ii.next(); + wm.put(key1, rootNode.get(key1)); + + + } + + while (!wm.isEmpty()) + for (String key : new ArrayList<>(wm.keySet())) { + Object o = wm.get(key); + wm.remove(key); + + + if(blockKeys != null && blockKeys.contains(key) && o != null){ + //log.info("Adding JSON Block Keys : " + key + "=" + o.toString()); + mm.put("block_" +key,o.toString()); + } + + if (o instanceof Boolean || o instanceof Number || o instanceof String) { + mm.put(key, o.toString()); + //log.info("Added property: " + key + ": " + o.toString()); + } + + else if (o instanceof JSONObject) { + JSONObject jo = (JSONObject) o; + Iterator i = jo.keys(); + while (i.hasNext()) { + String key1 = i.next(); + wm.put(key + "." + key1, jo.get(key1)); + } + } + + else if (o instanceof JSONArray) { + JSONArray ja = (JSONArray) o; + mm.put("size_"+key, String.valueOf(ja.length())); + + //log.info("Added property: " + key + "_length" + ": " + String.valueOf(ja.length())); + + for (int i = 0; i < ja.length(); i++) + wm.put(key + '[' + i + ']', ja.get(i)); + } + } + + return mm; + } +*/ + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/LogParserTool.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/LogParserTool.java new file mode 100644 index 000000000..54823bc17 --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/LogParserTool.java @@ -0,0 +1,94 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class LogParserTool { + private static final EELFLogger log = EELFManager.getInstance().getLogger(JSONTool.class); + + private String[] singleLines; + private List recentErrors = new ArrayList ();; + private Date todaysDate = new Date(); + private SimpleDateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + private final int minMilli = 60000; + private final int IN_TIME = 0; + private final int NOT_IN_TIME = 1; + private final int NO_DATE = 2; + + public String parseErrorLog(String data){ + singleLines = data.split("\\r?\\n"); + try { + getNearestDates(); + + } catch (Exception e) { + e.printStackTrace(); + } + if(recentErrors.size() == 0){ + recentErrors.clear(); + return "Did not find the string 'Starting orchestration of file backed up to /var/opt/MetaSwitch/orch/orch_conf.json' in the log file with timestamp within the last 5 minutes"; + }else if(recentErrors.size() == 1){ + recentErrors.clear(); + return "Did not find the string ‘Error parsing orchestration file’ in the log file with timestamp within the last 5 minutes"; + }else{ + String error = recentErrors.get(0); + recentErrors.clear(); + return "Error: "+ error.substring(error.indexOf("Error parsing orchestration file:")+34); + } + } + + public void getNearestDates() throws ParseException{ + int result; + for( int i = singleLines.length-1; i >= 0 ; i--){ + if(singleLines[i].contains("Starting orchestration of file backed up to") || singleLines[i].contains("Error parsing orchestration file:")){ + result = checkDateTime(singleLines[i]); + if( result == IN_TIME) + recentErrors.add(singleLines[i]); + else if(result == NOT_IN_TIME){ + return; + } + } + } + } + + private int checkDateTime(String line){ + Date newDate; + try { + newDate = dFormat.parse(line.substring(0, 19)); + if((todaysDate.getTime() - newDate.getTime()) <= 5*minMilli){ + return IN_TIME; + }else + return NOT_IN_TIME; + } catch (ParseException e) { + e.printStackTrace(); + return NO_DATE; + } + } + + +} diff --git a/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/MergeTool.java b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/MergeTool.java new file mode 100644 index 000000000..0958deebb --- /dev/null +++ b/appc-config/appc-config-generator/provider/src/main/java/org/onap/sdnc/config/generator/tool/MergeTool.java @@ -0,0 +1,109 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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========================================================= + */ + +package org.openecomp.sdnc.config.generator.tool; + +import java.io.IOException; +import java.io.StringWriter; +import java.util.Iterator; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.apache.velocity.app.VelocityEngine; +import org.apache.velocity.runtime.RuntimeConstants; +import org.apache.velocity.runtime.resource.loader.StringResourceLoader; +import org.apache.velocity.runtime.resource.util.StringResourceRepository; +import org.openecomp.sdnc.config.generator.ConfigGeneratorConstant; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + + +public class MergeTool { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(MergeTool.class); + + public static String mergeMap2TemplateData(String template, Map< String, String> dataMap ){ + log.info("MergeMap2TemplateData Template :"+ template + " Maps :"+ dataMap); + StringWriter writer = new StringWriter(); + VelocityEngine ve = new VelocityEngine(); + ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "string"); + ve.addProperty("string.resource.loader.class", StringResourceLoader.class.getName()); + ve.addProperty("string.resource.loader.repository.static", "false"); + ve.init(); + + StringResourceRepository repo = (StringResourceRepository)ve.getApplicationAttribute(StringResourceLoader.REPOSITORY_NAME_DEFAULT); + repo.putStringResource("TemplateResource", template); + + Template t = ve.getTemplate("TemplateResource"); + VelocityContext context = new VelocityContext(); + Iterator> entries = dataMap.entrySet().iterator(); + while (entries.hasNext()) { + Map.Entry entry = entries.next(); + context.put(entry.getKey(), entry.getValue()); + } + t.merge(context, writer); + return writer.toString(); + } + + + public static String mergeJson2TemplateData(String template, String jsonData, String templateType, String doPrettyOutput) throws JsonParseException, JsonMappingException, IOException{ + String mergedData = template; + if( StringUtils.isNotBlank(template) && StringUtils.isNotBlank(jsonData)){ + Velocity.init(); + + ObjectMapper mapper = new ObjectMapper(); + CustomJsonNodeFactory f = new CustomJsonNodeFactory(); + mapper.setNodeFactory(f); + + JsonNode jsonObj = mapper.readValue(jsonData, JsonNode.class); + + VelocityContext context = new VelocityContext(); + Iterator ii = jsonObj.fieldNames(); + while (ii.hasNext()) { + String key = ii.next(); + context.put(key, jsonObj.get(key)); + } + + StringWriter writer = new StringWriter(); + Velocity.evaluate(context, writer, "TemplateData", template); + writer.flush(); + mergedData = writer.toString(); + + if(StringUtils.isNotBlank(templateType) && StringUtils.isNotBlank(doPrettyOutput) + && ConfigGeneratorConstant.Y.equalsIgnoreCase(doPrettyOutput) + && ( ConfigGeneratorConstant.DATA_TYPE_JSON.equalsIgnoreCase(templateType) + || ConfigGeneratorConstant.DATA_TYPE_XML.equalsIgnoreCase(templateType)) ){ + // Perform Prettying + + } + } + return mergedData; + + } + +} -- cgit 1.2.3-korg