Remove binding spec2
[mdsal.git] / binding2 / mdsal-binding2-java-api-generator / src / main / java / org / opendaylight / mdsal / binding / javav2 / java / api / generator / util / JavaCodePrettyPrint.java
diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/JavaCodePrettyPrint.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/util/JavaCodePrettyPrint.java
deleted file mode 100644 (file)
index d0fb2e8..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.mdsal.binding.javav2.java.api.generator.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.annotation.RegEx;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * Pretty-print utility for generated Java code.
- */
-public final class JavaCodePrettyPrint {
-
-    // JDoc
-    private static final String JDOC_START = "/**";
-    private static final String JDOC_PART = " *";
-    private static final String JDOC_END = "*/";
-
-    // Comments
-    private static final String COMMENTS = "//";
-
-    // Body
-    private static final char START_BODY = '{';
-    private static final char END_BODY = '}';
-
-    // Whitespaces
-    @RegEx
-    private static final String NEW_LINE_REGEX = "\\r?\\n";
-    @RegEx
-    private static final String WS_REGEX = "\\s+";
-    private static final char SPACE = ' ';
-    private static final char NEW_LINE = '\n';
-
-    // Indention
-    private static final int INDENT = 4;
-
-    // Specific keywords
-    private static final String PACKAGE = "package";
-    private static final String IMPORT = "import";
-
-    // Line
-    private static final char END_LINE = ';';
-    private static final char AT = '@';
-
-    private JavaCodePrettyPrint() {
-        throw new UnsupportedOperationException("Util class");
-    }
-
-    /**
-     * Pretty-print generated Java code.
-     *
-     * @param unformedJavaFile
-     *            - unformed Java file from generator
-     * @return formed Java file
-     */
-    public static String perform(final String unformedJavaFile) {
-        final StringBuilder sb = new StringBuilder();
-        String[] splittedByNewLine = unformedJavaFile.split(NEW_LINE_REGEX);
-        // remove excessive whitespaces
-        splittedByNewLine = phaseOne(splittedByNewLine);
-        // merge or divide lines which need it && setup base new lines at the
-        // end of lines
-        splittedByNewLine = phaseTwo(splittedByNewLine);
-        // fix indents
-        splittedByNewLine = phaseThree(splittedByNewLine);
-
-        for (final String line : splittedByNewLine) {
-            sb.append(line);
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Set up indents.
-     *
-     * @param splittedByNewLine
-     *            - cleaned and merged/divided lines
-     * @return fixed intents in lines
-     */
-    private static String[] phaseThree(final String[] splittedByNewLine) {
-        int indentCount = 0;
-        final List<String> lines = new ArrayList<>();
-        for (int i = 0; i < splittedByNewLine.length; i++) {
-            final StringBuilder sb = new StringBuilder();
-            indentCount = lineIndent(sb, indentCount, splittedByNewLine[i]);
-            sb.append(splittedByNewLine[i]);
-            if ((splittedByNewLine[i].contains(String.valueOf(END_BODY))
-                    || splittedByNewLine[i].contains(String.valueOf(END_LINE))) && indentCount == 1) {
-                sb.append(NEW_LINE);
-            }
-            lines.add(sb.toString());
-        }
-
-        return lines.toArray(new String[lines.size()]);
-    }
-
-    private static int lineIndent(final StringBuilder sb, final int indentCount, final String line) {
-        int newIndentCount = indentCount;
-        if (line.contains(String.valueOf(END_BODY)) && !line.startsWith(JDOC_PART)) {
-            newIndentCount--;
-        }
-        for (int i = 0; i < (newIndentCount * INDENT); i++) {
-            sb.append(SPACE);
-        }
-
-        if (line.contains(String.valueOf(START_BODY)) && !line.startsWith(JDOC_PART)) {
-            newIndentCount++;
-        }
-
-        return newIndentCount;
-    }
-
-    /**
-     * Join or split lines if necessary.
-     *
-     * @param splittedByNewLine
-     *            - cleaned lines from whitespaces around them
-     * @return fixed lines
-     */
-    private static String[] phaseTwo(final String[] splittedByNewLine) {
-        final List<String> fixedLines = new ArrayList<>();
-
-        // prepare package part
-        if (splittedByNewLine[0].startsWith(PACKAGE)) {
-            fixedLines.add(new StringBuilder(splittedByNewLine[0]).append(NEW_LINE).append(NEW_LINE).toString());
-        }
-
-        // prepare imports
-        int importsEndAt;
-        if (splittedByNewLine[1].startsWith(IMPORT)) {
-            importsEndAt = 1;
-            for (int i = 1; i < splittedByNewLine.length - 1; i++) {
-                if (!splittedByNewLine[i + 1].startsWith(IMPORT)) {
-                    fixedLines.add(new StringBuilder(
-                        splittedByNewLine[i]).append(NEW_LINE).append(NEW_LINE).toString());
-                    importsEndAt = i;
-                    break;
-                } else {
-                    fixedLines.add(new StringBuilder(splittedByNewLine[i]).append(NEW_LINE).toString());
-                }
-            }
-        } else {
-            importsEndAt = 0;
-        }
-
-        // prepare class
-        StringBuilder sbLineClass = new StringBuilder();
-        int classStartEnd = 0;
-        for (int i = importsEndAt + 1; i < splittedByNewLine.length; i++) {
-            i = appendJDoc(splittedByNewLine, fixedLines, i);
-            if (!splittedByNewLine[i].contains(String.valueOf(START_BODY))) {
-                sbLineClass.append(splittedByNewLine[i]).append(SPACE);
-            } else {
-                fixedLines.add(sbLineClass.append(splittedByNewLine[i]).append(NEW_LINE).append(NEW_LINE).toString());
-                classStartEnd = i + 1;
-                break;
-            }
-        }
-
-        for (int i = classStartEnd; i < splittedByNewLine.length; i++) {
-            i = appendJDoc(splittedByNewLine, fixedLines, i);
-            if (!splittedByNewLine[i].startsWith(COMMENTS)
-                    && !splittedByNewLine[i].endsWith(String.valueOf(END_LINE))
-                    && !splittedByNewLine[i].endsWith(String.valueOf(START_BODY))
-                    && !splittedByNewLine[i].endsWith(String.valueOf(END_BODY))
-                    && !splittedByNewLine[i].startsWith(String.valueOf(AT))) {
-                sbLineClass = new StringBuilder();
-                for (int j = i; j < splittedByNewLine.length; j++) {
-                    if (!splittedByNewLine[j].contains(String.valueOf(START_BODY))
-                            && !splittedByNewLine[j].contains(String.valueOf(END_LINE))) {
-                        final String str = splittedByNewLine[j];
-                        sbLineClass.append(str).append(SPACE);
-                    } else {
-                        fixedLines.add(sbLineClass.append(splittedByNewLine[j]).append(NEW_LINE).toString());
-                        i = j;
-                        break;
-                    }
-                }
-                continue;
-            }
-            final String splStri = splittedByNewLine[i];
-            final String stringSB = String.valueOf(START_BODY);
-            final String stringEB = String.valueOf(END_BODY);
-            if (splStri.contains(stringSB) && splStri.endsWith(stringEB)) {
-                final StringBuilder sb = new StringBuilder();
-                for (int j = 0; j < splittedByNewLine[i].length(); j++) {
-                    if (splittedByNewLine[i].charAt(j) == END_BODY) {
-                        sb.append(NEW_LINE);
-                    }
-                    sb.append(splittedByNewLine[i].charAt(j));
-                    if (splittedByNewLine[i].charAt(j) == START_BODY) {
-                        sb.append(NEW_LINE);
-                    }
-                }
-                final String[] split = sb.toString().split(NEW_LINE_REGEX);
-                for (final String s : split) {
-                    fixedLines.add(new StringBuilder(s).append(NEW_LINE).toString());
-                }
-                continue;
-            }
-            fixedLines.add(new StringBuilder(splittedByNewLine[i]).append(NEW_LINE).toString());
-        }
-
-        return fixedLines.toArray(new String[fixedLines.size()]);
-    }
-
-    private static int appendJDoc(final String[] splittedByNewLine, final List<String> fixedLines, int cur) {
-        if (splittedByNewLine[cur].contains(JDOC_START)) {
-            fixedLines.add(new StringBuilder(splittedByNewLine[cur]).append(NEW_LINE).toString());
-            for (int next = cur + 1; next < splittedByNewLine.length - 1; next++) {
-                fixedLines.add(
-                    new StringBuilder().append(SPACE).append(splittedByNewLine[next]).append(NEW_LINE).toString());
-                if (splittedByNewLine[next].contains(JDOC_END)) {
-                    cur = next + 1;
-                    break;
-                }
-            }
-        }
-        return cur;
-    }
-
-    /**
-     * Remove empty lines and whitespaces adjacent lines.
-     *
-     * @param splittedByNewLine
-     *            - lines with whitespaces around them
-     * @return cleaned lines from whitespaces
-     */
-    private static String[] phaseOne(final String[] splittedByNewLine) {
-        final List<String> linesWithoutWhitespaces = new ArrayList<>();
-        for (final String line : splittedByNewLine) {
-            if (!StringUtils.isBlank(line)) {
-                int lineStart = 0;
-                for (int i = 0; i < line.length(); i++) {
-                    if (StringUtils.isWhitespace(String.valueOf(line.charAt(i)))) {
-                        lineStart++;
-                    } else {
-                        break;
-                    }
-                }
-                int lineEnd = line.length() - 1;
-                while (StringUtils.isWhitespace(String.valueOf(line.charAt(lineEnd)))) {
-                    lineEnd--;
-                }
-                linesWithoutWhitespaces.add(line.substring(lineStart, lineEnd + 1));
-            }
-        }
-        return linesWithoutWhitespaces.toArray(new String[linesWithoutWhitespaces.size()]);
-    }
-}