X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2Futil%2FStringUtil.java;fp=opendaylight%2Fconfig%2Fyang-jmx-generator-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fplugin%2Futil%2FStringUtil.java;h=265aea10c59f8f858fb036b5fb97216ccc404a35;hb=cd0a18d48f5e8b6ff208b6633e05ee003979218e;hp=0000000000000000000000000000000000000000;hpb=ef6bd770f1366f84fdbc7ab19fa649953b36197b;p=controller.git diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java new file mode 100644 index 0000000000..265aea10c5 --- /dev/null +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/util/StringUtil.java @@ -0,0 +1,101 @@ +package org.opendaylight.controller.config.yangjmxgenerator.plugin.util; + +import com.google.common.base.Joiner; +import com.google.common.base.Optional; +import com.google.common.base.Splitter; +import com.google.common.base.Strings; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.opendaylight.controller.config.yangjmxgenerator.plugin.java.FullyQualifiedName; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.regex.Pattern; + +public class StringUtil { + private static final Logger logger = LoggerFactory.getLogger(StringUtils.class); + + /** + * @param list of strings to be joined by ',' + * @param prefix e.g. 'extends' or 'implements' + */ + public static String prefixAndJoin(List list, String prefix) { + if (list.isEmpty()) { + return ""; + } + Joiner joiner = Joiner.on(","); + return " " + prefix + " " + joiner.join(list); + } + + public static String addAsterixAtEachLineStart(String input) { + String s = Pattern.compile("^", Pattern.MULTILINE).matcher(input).replaceAll("* "); + // remove trailing spaces + s = Pattern.compile("\\s+$", Pattern.MULTILINE).matcher(s).replaceAll(""); + s = ensureEndsWithSingleNewLine(s); + return s; + } + + private static String ensureEndsWithSingleNewLine(String s) { + // .split Only trailing empty strings are skipped. + String[] split = s.split("\n"); + s = Joiner.on("\n").join(split); + s = s + "\n"; + return s; + } + + public static String writeComment(String input, boolean isJavadoc) { + StringBuilder content = new StringBuilder(); + content.append("/*"); + if (isJavadoc) { + content.append("*"); + } + content.append("\n"); + + content.append(addAsterixAtEachLineStart(input)); + content.append("*/\n"); + return content.toString(); + } + + + public static Optional loadCopyright() { + try (InputStream in = StringUtil.class.getResourceAsStream("/copyright.txt")) { + if (in != null) { + return Optional.of(IOUtils.toString(in)); + } + } catch (IOException e) { + logger.warn("Cannot load copyright.txt", e); + } + return Optional.absent(); + } + + public static String formatJavaSource(String input) { + Iterable split = Splitter.on("\n").trimResults().split(input); + + int basicIndent = 4; + StringBuilder sb = new StringBuilder(); + int intends = 0, empty = 0; + for (String line : split) { + intends -= StringUtils.countMatches(line, "}"); + if (intends < 0) { + intends = 0; + } + if (line.isEmpty() == false) { + sb.append(Strings.repeat(" ", basicIndent * intends)); + sb.append(line); + sb.append("\n"); + empty = 0; + } else { + empty++; // one empty line is allowed + if (empty < 2) { + sb.append("\n"); + } + } + intends += StringUtils.countMatches(line, "{"); + } + return ensureEndsWithSingleNewLine(sb.toString()); + } + +}