diff options
Diffstat (limited to 'mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base')
3 files changed, 492 insertions, 304 deletions
diff --git a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintHelperService.java b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintHelperService.java index 1f6b4f8..db15360 100644 --- a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintHelperService.java +++ b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintHelperService.java @@ -23,7 +23,6 @@ package org.onap.blueprintgenerator.service.base; - import org.onap.blueprintgenerator.constants.Constants; import org.springframework.stereotype.Service; @@ -31,88 +30,184 @@ import java.util.LinkedHashMap; /** * @author : Ravi Mantena - * @date 10/16/2020 - * Application: DCAE/ONAP - Blueprint Generator - * Common Module: Used by both ONAp and DCAE Blueprint Applications - * Service: For Common Functions used across + * @date 10/16/2020 Application: DCAE/ONAP - Blueprint Generator Common Module: Used by both ONAp + * and DCAE Blueprint Applications Service: An interface for Common Functions used across Blueprint */ - @Service public class BlueprintHelperService { - - public LinkedHashMap<String, Object> createInputValue(String type, String description, Object defaultValue) { - LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); - inputMap.put("type", type); - inputMap.put("description", description); - inputMap.put("default", defaultValue); - return inputMap; - } - - public LinkedHashMap<String, Object> createInputValue(String type, String description) { - LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); - inputMap.put("type", type); - inputMap.put("description", description); - return inputMap; - } - - public LinkedHashMap<String, Object> createInputValue(String type, Object defaultValue) { - LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); - inputMap.put("type", type); - inputMap.put("default", defaultValue); - return inputMap; - } - - public LinkedHashMap<String, Object> createIntegerInput(String description, Object defaultValue){ - return createInputValue(Constants.INTEGER_TYPE, description, defaultValue); - } - - public LinkedHashMap<String, Object> createIntegerInput(String description){ - return createInputValue(Constants.INTEGER_TYPE, description); - } - - public LinkedHashMap<String, Object> createIntegerInput(Object defaultValue){ - return createInputValue(Constants.INTEGER_TYPE, defaultValue); - } - - public LinkedHashMap<String, Object> createBooleanInput(String description, Object defaultValue){ - return createInputValue(Constants.BOOLEAN_TYPE, description, defaultValue); - } - - public LinkedHashMap<String, Object> createBooleanInput(String description){ - return createInputValue(Constants.BOOLEAN_TYPE, description); - } - - public LinkedHashMap<String, Object> createBooleanInput(Object defaultValue){ - return createInputValue(Constants.BOOLEAN_TYPE, defaultValue); - } - - public LinkedHashMap<String, Object> createStringInput(String description, Object defaultValue){ - return createInputValue(Constants.STRING_TYPE, description, defaultValue); - } - -/* public LinkedHashMap<String, Object> createStringInput(String description){ + /** + * creates Input value by contatinating Type, Description and Default value + * + * @param type Input Type + * @param description Description + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createInputValue( + String type, String description, Object defaultValue) { + LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); + inputMap.put("type", type); + inputMap.put("description", description); + inputMap.put("default", defaultValue); + return inputMap; + } + + /** + * creates Input value by contatinating Type and Description + * + * @param type Input Type + * @param description Description + * @return + */ + public LinkedHashMap<String, Object> createInputValue(String type, String description) { + LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); + inputMap.put("type", type); + inputMap.put("description", description); + return inputMap; + } + + /** + * creates Input value by contatinating Type and Default value + * + * @param type Input Type + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createInputValue(String type, Object defaultValue) { + LinkedHashMap<String, Object> inputMap = new LinkedHashMap<>(); + inputMap.put("type", type); + inputMap.put("default", defaultValue); + return inputMap; + } + + /** + * creates Input value by contatinating Description and Default value + * + * @param description Description + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createIntegerInput(String description, + Object defaultValue) { + return createInputValue(Constants.INTEGER_TYPE, description, defaultValue); + } + + /** + * creates Integer Input value for given Description + * + * @param description Description + * @return + */ + public LinkedHashMap<String, Object> createIntegerInput(String description) { + return createInputValue(Constants.INTEGER_TYPE, description); + } + + /** + * creates Integer Input value for given Default value + * + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createIntegerInput(Object defaultValue) { + return createInputValue(Constants.INTEGER_TYPE, defaultValue); + } + + /** + * creates Integer Input value for given Description and Default value + * + * @param description Description + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createBooleanInput(String description, + Object defaultValue) { + return createInputValue(Constants.BOOLEAN_TYPE, description, defaultValue); + } + + /** + * creates Boolean Input value for given Description + * + * @param description Description + * @return + */ + public LinkedHashMap<String, Object> createBooleanInput(String description) { + return createInputValue(Constants.BOOLEAN_TYPE, description); + } + + /** + * creates Boolean Input value for given Default value + * + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createBooleanInput(Object defaultValue) { + return createInputValue(Constants.BOOLEAN_TYPE, defaultValue); + } + + /** + * creates String Input value for given Default value + * @param description Description + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createStringInput(String description, + Object defaultValue) { + return createInputValue(Constants.STRING_TYPE, description, defaultValue); + } + + /* public LinkedHashMap<String, Object> createStringInput(String description){ return createInputValue(Constants.STRING_TYPE, description); }*/ - public LinkedHashMap<String, Object> createStringInput(Object defaultValue){ - return createInputValue(Constants.STRING_TYPE, defaultValue); - } - - public String joinUnderscore(String firstValue, String secondValue){ - return firstValue + "_" + secondValue; - } - - public boolean isDataRouterType(String type) { - return type.equals(Constants.DATA_ROUTER) || type.equals(Constants.DATAROUTER_VALUE); - } - - public boolean isMessageRouterType(String type) { - return type.equals(Constants.MESSAGE_ROUTER) || type.equals(Constants.MESSAGEROUTER_VALUE); - } - - public String getNamePrefix(String name) { - return name.isEmpty() ? "" : name + "_"; - } - + /** + * creates String Input value for given Default value + * + * @param defaultValue Default value of Type + * @return + */ + public LinkedHashMap<String, Object> createStringInput(Object defaultValue) { + return createInputValue(Constants.STRING_TYPE, defaultValue); + } + + /** + * Concatenates String Input values with Underscore + * + * @param firstValue Value + * @param secondValue Value + * @return + */ + public String joinUnderscore(String firstValue, String secondValue) { + return firstValue + "_" + secondValue; + } + + /** + * Returns if the type is Data Router or not + * + * @param type Input Type + * @return + */ + public boolean isDataRouterType(String type) { + return type.equals(Constants.DATA_ROUTER) || type.equals(Constants.DATAROUTER_VALUE); + } + + /** + * Returns if the type is Message Router or not + * + * @param type Input Type + * @return + */ + public boolean isMessageRouterType(String type) { + return type.equals(Constants.MESSAGE_ROUTER) || type.equals(Constants.MESSAGEROUTER_VALUE); + } + + /** + * Returns name with underscore for empty input + * + * @param name Name + * @return + */ + public String getNamePrefix(String name) { + return name.isEmpty() ? "" : name + "_"; + } } diff --git a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintService.java b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintService.java index 83c43cf..7dd05f2 100644 --- a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintService.java +++ b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/BlueprintService.java @@ -23,6 +23,8 @@ package org.onap.blueprintgenerator.service.base; +import java.io.FileReader; +import java.nio.file.Paths; import org.onap.blueprintgenerator.model.base.Blueprint; import org.onap.blueprintgenerator.model.common.Input; import org.onap.blueprintgenerator.model.componentspec.base.ComponentSpec; @@ -33,7 +35,6 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; - import java.io.File; import java.io.IOException; import java.io.FileWriter; @@ -42,116 +43,176 @@ import java.io.PrintWriter; import java.util.LinkedHashMap; import java.util.Map; import java.util.regex.Pattern; +import java.util.Date; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; /** * @author : Ravi Mantena - * @date 10/16/2020 - * Application: DCAE/ONAP - Blueprint Generator - * Common Module: Used by both ONAp and DCAE Blueprint Applications - * Service: For Adding Quotes and Converting Blueprint to Yaml/String + * @date 10/16/2020 Application: DCAE/ONAP - Blueprint Generator Common Module: Used by both ONAp + * and DCAE Blueprint Applications Service: For Adding Quotes and Converting Blueprint to + * Yaml/String */ - @Service public abstract class BlueprintService { - @Autowired - protected FixesService fixesService; - - @Qualifier("objectMapper") - @Autowired - protected ObjectMapper objectMapper; - - @Qualifier("yamlObjectMapper") - @Autowired - protected ObjectMapper yamlObjectMapper; - - public void blueprintToYaml(ComponentSpec cs, Blueprint blueprint, Input input) { - String bluePrintName = input.getBluePrintName(); - String outputPath = input.getOutputPath(); - String comment = "# " + input.getComment() + '\n'; - - try { - File outputFile; - String name = StringUtils.isEmpty(bluePrintName) ? cs.getSelf().getName() : bluePrintName; - if(name.contains(".")) { - name = name.replaceAll(Pattern.quote("."), "_"); - } - if(name.contains(" ")) { - name = name.replaceAll(" ", ""); - } - String file = name + ".yaml"; - outputFile = new File(outputPath, file); - outputFile.getParentFile().mkdirs(); - try { - outputFile.createNewFile(); - } catch (IOException e) { - throw new RuntimeException(e); + @Autowired + protected FixesService fixesService; + + @Qualifier("objectMapper") + @Autowired + protected ObjectMapper objectMapper; + + @Qualifier("yamlObjectMapper") + @Autowired + protected ObjectMapper yamlObjectMapper; + + /** + * Convertes blueprint to Yaml for given ComponentSpec, Blueprint and input + * + * @param cs ComponentSpec + * @param blueprint Blueprint + * @param input Input + * @return + */ + public void blueprintToYaml(ComponentSpec cs, Blueprint blueprint, Input input) { + String bluePrintName = input.getBluePrintName(); + String outputPath = input.getOutputPath(); + String comment = "# " + input.getComment() + '\n'; + + try { + File outputFile; + String name = + StringUtils.isEmpty(bluePrintName) ? cs.getSelf().getName() : bluePrintName; + if (name.contains(".")) { + name = name.replaceAll(Pattern.quote("."), "_"); + } + if (name.contains(" ")) { + name = name.replaceAll(" ", ""); + } + String file = name + ".yaml"; + outputFile = new File(outputPath, file); + outputFile.getParentFile().mkdirs(); + try { + outputFile.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + String appVersion = ""; + try { + MavenXpp3Reader reader = new MavenXpp3Reader(); + Model model = reader.read(new FileReader("pom.xml")); + appVersion = "#bpgen_application_version: " + model.getVersion() + '\n'; + } catch (Exception e) { + e.printStackTrace(); + } + + String version = "#blueprint_version: " + cs.getSelf().getVersion() + '\n'; + String description = "#description: " + cs.getSelf().getDescription() + '\n'; + String date = "#blueprint_created_date: " + new Date() + '\n'; + + BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile, false)); + writer.write(description); + writer.write(version); + writer.write(date); + writer.write(appVersion); + + if (isBpTypeMatches(input)) { + writer.write(comment); + } + + writer.close(); + + PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outputFile, true))); + yamlObjectMapper.writeValue(out, blueprint); + out.close(); + + if (isBpTypeMatches(input)) { + fixesService.fixDcaeSingleQuotes(outputFile); + } else { + fixesService.fixOnapSingleQuotes(outputFile); + } + + // new Yaml().load(new FileInputStream(outputFile)); + + System.out.println("Blueprint is created with valid YAML Format"); + } catch (Exception ex) { + throw new RuntimeException( + "Unable to generate YAML file from Blueprint or the generated YAML is not valid", + ex); + } } - String version = "#blueprint_version: " + cs.getSelf().getVersion() + '\n'; - String description = "#description: " + cs.getSelf().getDescription() + '\n'; - - BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile, false)); - writer.write(description); - writer.write(version); - - if(input.getBpType().equals("dti") || input.getBpType().equals("m") || input.getBpType().equals("k")) - writer.write(comment); - - writer.close(); - - PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outputFile, true))); - yamlObjectMapper.writeValue(out, blueprint); - out.close(); - - if(input.getBpType().equals("dti") || input.getBpType().equals("m") || input.getBpType().equals("k")) - fixesService.fixDcaeSingleQuotes(outputFile); - else - fixesService.fixOnapSingleQuotes(outputFile); - - //new Yaml().load(new FileInputStream(outputFile)); - - System.out.println("Blueprint is created with valid YAML Format"); - } catch (Exception ex) { - throw new RuntimeException("Unable to generate YAML file from Blueprint or the generated YAML is not valid", ex); + /** + * Add quotes for given input + * + * @param inputs Inputs + * @return + */ + public Map<String, LinkedHashMap<String, Object>> addQuotes( + Map<String, LinkedHashMap<String, Object>> inputs) { + + inputs.forEach( + (key, value) -> { + if (value.get("type") != null) { + if (value.get("type").equals("string") + && value.get("default") != null + && !key.contains("policies")) { + value.replace("default", "'" + value.get("default").toString() + "'"); + } else if (value.get("type").equals("map") || value.get("type") + .equals("list")) { + // Commented the Code as we need to read the object as is for Map and List. If the + // List object is to be converted to string uncomment the below code. + /* if(inputs.get(s).get("type").equals("list")) { + String temp = inputs.get(s).get("default").toString(); + inputs.get(s).replace("default", temp); + }*/ + inputs.get(key).remove("type"); + } + } + }); + + return inputs; } - } - - // Used for DCAE - public Map<String, LinkedHashMap<String, Object>> addQuotes(Map<String, LinkedHashMap<String, Object>> inputs) { - - inputs.forEach((key,value) -> { - if(value.get("type") != null){ - if (value.get("type").equals("string") && value.get("default") != null && !key.contains("policies")){ - value.replace("default", "'" + value.get("default").toString() + "'"); - } else if (value.get("type").equals("map") || value.get("type").equals("list")) { - // Commented the Code as we need to read the object as is for Map and List. If the List object is to be converted to string uncomment the below code. - /* if(inputs.get(s).get("type").equals("list")) { - String temp = inputs.get(s).get("default").toString(); - inputs.get(s).replace("default", temp); - }*/ - inputs.get(key).remove("type"); - } - } - }); - - return inputs; - } - public String blueprintToString(ComponentSpec componentSpec, Blueprint blueprint, Input input) { - String ret = ""; - try { - ret = yamlObjectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(blueprint); - } catch (JsonProcessingException e) { - e.printStackTrace(); + /** + * Converts Blueprint to String format + * + * @param componentSpec ComponentSpec + * @param blueprint Blueprint + * @param input Input + * @return + */ + public String blueprintToString(ComponentSpec componentSpec, Blueprint blueprint, Input input) { + String ret = ""; + try { + ret = yamlObjectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(blueprint); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + if (isBpTypeMatches(input)) { + ret = + "# " + + componentSpec.getSelf().getDescription() + + "\n" + + "# " + + componentSpec.getSelf().getVersion() + + "\n" + + "# " + + input.getComment() + + "\n" + + ret; + ret = fixesService.fixStringQuotes(ret); + } else { + ret = fixesService.applyFixes(ret); + } + return ret; } - if(input.getBpType().equals("dti") || input.getBpType().equals("m") || input.getBpType().equals("k")){ - ret = "# " + componentSpec.getSelf().getDescription() + "\n" + "# " + componentSpec.getSelf().getVersion() + "\n" + "# " + input.getComment() + "\n" + ret; - ret = fixesService.fixStringQuotes(ret); - }else - ret = fixesService.applyFixes(ret); - return ret; - } - + private boolean isBpTypeMatches(Input input) { + return input.getBpType().equals("dti") + || input.getBpType().equals("m") + || input.getBpType().equals("k"); + } } diff --git a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/FixesService.java b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/FixesService.java index d848cac..4c6debc 100644 --- a/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/FixesService.java +++ b/mod/bpgenerator/common/src/main/java/org/onap/blueprintgenerator/service/base/FixesService.java @@ -26,7 +26,6 @@ package org.onap.blueprintgenerator.service.base; import org.onap.blueprintgenerator.exception.FixesException; import org.springframework.stereotype.Service; - import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; @@ -38,133 +37,166 @@ import java.util.List; /** * @author : Ravi Mantena - * @date 10/16/2020 - * Application: DCAE/ONAP - Blueprint Generator - * Common Module: Used by both ONAp and DCAE Blueprint Applications - * Service: For Blueprint Quotes Fixes + * @date 10/16/2020 Application: DCAE/ONAP - Blueprint Generator Common Module: Used by both ONAp + * and DCAE Blueprint Applications Service: For Blueprint Quotes Fixes */ - @Service public class FixesService { - public void fixDcaeSingleQuotes(File file) { - List<String> lines = new ArrayList<>(); - try { - FileReader fr = new FileReader(file); - BufferedReader br = new BufferedReader(fr); - for (String line = br.readLine(); line != null; line = br.readLine()){ - if(line.contains("'")) { - line = line.replaceAll("'\\{", "{"); - line = line.replaceAll("}'", "}"); - line = line.replaceAll("'\\[", "["); - line = line.replaceAll("]'", "]"); - line = line.replaceAll("'''''", "'"); - line = line.replaceAll("'''", "'"); - line = line.replaceAll("'''", ""); - line = line.replaceAll("''\\{", "'{"); - line = line.replaceAll("}''", "}'"); - line = line.replaceAll("''\\[", "'["); - line = line.replaceAll("]''", "]'"); - line = line.replaceAll("\"''", "'"); - line = line.replaceAll("''\"", "'"); - } - if(line.contains("get_input") || line.contains("get_secret") || line.contains("envs")) - line = line.replaceAll("'", ""); - - lines.add(line); - } - - fr.close(); - br.close(); - - FileWriter fw = new FileWriter(file); - PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); - for(String s: lines) { - out.println(); - out.write(s); - out.flush(); - } - out.close(); - fw.close(); - } catch (Exception e) { - throw new FixesException("Unable to Fix Single Quotes in Final DCAE Blueprint", e); - } - } - - public String fixStringQuotes(String string) { - String sLines[] = string.split("\n"); - String ret = ""; - for(String line: sLines) { - if(line.contains("get_input") || line.contains("get_secret") || ((line.contains("concat") || line.contains("default: ") || line.contains("description") || line.contains("dmaap") || line.contains(".\"'")) && line.contains("'"))) - line = line.replaceAll("'", ""); - - if(line.contains("'")) { - line = line.replaceAll("'\\{", "{"); - line = line.replaceAll("}'", "}"); - line = line.replaceAll("'\\[", "["); - line = line.replaceAll("]'", "]"); - line = line.replaceAll("'''''", "'"); - line = line.replaceAll("'''", "'"); - line = line.replaceAll("'''", ""); - line = line.replaceAll("''\\{", "'{"); - line = line.replaceAll("}''", "}'"); - line = line.replaceAll("''\\[", "'["); - line = line.replaceAll("]''", "]'"); - line = line.replaceAll("\"''", "'"); - line = line.replaceAll("''\"", "'"); - } - ret = ret + "\n" + line; - } - return ret; - } - - public void fixOnapSingleQuotes(File file) { - List<String> lines = new ArrayList<>(); - try { - FileReader fr = new FileReader(file); - BufferedReader br = new BufferedReader(fr); - for (String line = br.readLine(); line != null; line = br.readLine()){ - if(line.contains("'")) { - line = line.replace("'", ""); - } - if(line.contains("\"\"") && (line.contains("m") || line.contains("M"))) { - line = line.replaceAll("\"\"", "\""); - } - lines.add(line); - - } - fr.close(); - br.close(); - FileWriter fw = new FileWriter(file); - PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); - for(String s: lines) { - out.println(); - out.write(s); - out.flush(); - } - - out.close(); - fw.close(); - - } catch (Exception e) { - throw new FixesException("Unable to Fix Single Quotes in final ONAP Blueprint", e); - } - } - - private String ensureNoSingleQuotes(String line) { - if ((line.contains("concat") || line.contains("default: ") || line.contains("description") || line.contains("dmaap") || line.contains(".\"'")) && line.contains("'")) - return line.replace("'", ""); - else - return line; - } - - public String applyFixes(String bp) { - List<String> lines = new ArrayList<>(); - String[] linesPre = bp.split("\n"); - for (String line : linesPre) { - lines.add(ensureNoSingleQuotes(line)); - } - return String.join("\n", lines); - } - + /** + * Interface to fix Single Quotes in the generated Blueprint + * + * @param file File + * @return + */ + public void fixDcaeSingleQuotes(File file) { + List<String> lines = new ArrayList<>(); + try { + FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr); + for (String line = br.readLine(); line != null; line = br.readLine()) { + if (line.contains("'")) { + line = processLine(line); + } + if (line.contains("get_input") || line.contains("get_secret") || line + .contains("envs")) { + line = line.replaceAll("'", ""); + } + + lines.add(line); + } + + fr.close(); + br.close(); + + FileWriter fw = new FileWriter(file); + PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); + for (String s : lines) { + out.println(); + out.write(s); + out.flush(); + } + out.close(); + fw.close(); + } catch (Exception e) { + throw new FixesException("Unable to Fix Single Quotes in Final DCAE Blueprint", e); + } + } + + /** + * Interface to fix String Quotes in the generated Blueprint + * + * @param string String + * @return + */ + public String fixStringQuotes(String string) { + String sLines[] = string.split("\n"); + String ret = ""; + for (String line : sLines) { + if (line.contains("get_input") + || line.contains("get_secret") + || ((line.contains("concat") + || line.contains("default: ") + || line.contains("description") + || line.contains("dmaap") + || line.contains(".\"'")) + && line.contains("'"))) { + line = line.replaceAll("'", ""); + } + + if (line.contains("'")) { + line = processLine(line); + } + ret = ret + "\n" + line; + } + return ret; + } + + /** + * Interface to fix Single Quotes in the generated ONAP Blueprint + * + * @param file File + * @return + */ + public void fixOnapSingleQuotes(File file) { + List<String> lines = new ArrayList<>(); + try { + FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr); + for (String line = br.readLine(); line != null; line = br.readLine()) { + if (line.contains("'")) { + line = line.replace("'", ""); + } + if (line.contains("\"\"") && (line.contains("m") || line.contains("M"))) { + line = line.replaceAll("\"\"", "\""); + } + lines.add(line); + } + fr.close(); + br.close(); + FileWriter fw = new FileWriter(file); + PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); + for (String s : lines) { + out.println(); + out.write(s); + out.flush(); + } + + out.close(); + fw.close(); + + } catch (Exception e) { + throw new FixesException("Unable to Fix Single Quotes in final ONAP Blueprint", e); + } + } + + /** + * Interface to fix Single Quotes for given line + * + * @param line Line + * @return + */ + private String ensureNoSingleQuotes(String line) { + if ((line.contains("concat") + || line.contains("default: ") + || line.contains("description") + || line.contains("dmaap") + || line.contains(".\"'")) + && line.contains("'")) { + return line.replace("'", ""); + } else { + return line; + } + } + + /** + * Interface to Applt fixes for Quotes + * + * @param bp Blueprint + * @return + */ + public String applyFixes(String bp) { + List<String> lines = new ArrayList<>(); + String[] linesPre = bp.split("\n"); + for (String line : linesPre) { + lines.add(ensureNoSingleQuotes(line)); + } + return String.join("\n", lines); + } + + private String processLine(String line) { + return line.replaceAll("'\\{", "{") + .replaceAll("}'", "}") + .replaceAll("'\\[", "[") + .replaceAll("]'", "]") + .replaceAll("'''''", "'") + .replaceAll("'''", "'") + .replaceAll("'''", "") + .replaceAll("''\\{", "'{") + .replaceAll("}''", "}'") + .replaceAll("''\\[", "'[") + .replaceAll("]''", "]'") + .replaceAll("\"''", "'") + .replaceAll("''\"", "'"); + } } |