[ONOS-4302] RPC translator implementation

Change-Id: I457f12a2b0edaadee5ff888e0297b40854d53096
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 0ecaaa1..c793cd6 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -18,6 +18,8 @@
 
 import org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax;
 
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCaptialCase;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
 import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
@@ -40,6 +42,7 @@
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_OF;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_PARAM;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_RPC;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
@@ -49,6 +52,8 @@
 import static org.onosproject.yangutils.utils.UtilConstants.OF;
 import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE_INFO_JAVADOC;
 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.RPC_OUTPUT_STRING;
 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
 import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
@@ -100,6 +105,11 @@
         GETTER_METHOD,
 
         /**
+         * For rpc.
+         */
+        RPC_INTERFACE,
+
+        /**
          * For setters.
          */
         SETTER_METHOD,
@@ -125,9 +135,9 @@
         CONSTRUCTOR,
 
         /**
-         * For union's from method.
+         * For from method.
          */
-        UNION_FROM_METHOD,
+        FROM_METHOD,
 
         /**
          * For type constructor.
@@ -160,42 +170,60 @@
      */
     public static String getJavaDoc(JavaDocType type, String name, boolean isList) {
 
-        name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name, null));
-        String javaDoc;
-        if (type.equals(JavaDocType.IMPL_CLASS)) {
-            javaDoc = generateForImplClass(name);
-        } else if (type.equals(JavaDocType.BUILDER_CLASS)) {
-            javaDoc = generateForBuilderClass(name);
-        } else if (type.equals(JavaDocType.INTERFACE)) {
-            javaDoc = generateForInterface(name);
-        } else if (type.equals(JavaDocType.BUILDER_INTERFACE)) {
-            javaDoc = generateForBuilderInterface(name);
-        } else if (type.equals(JavaDocType.PACKAGE_INFO)) {
-            javaDoc = generateForPackage(name);
-        } else if (type.equals(JavaDocType.GETTER_METHOD)) {
-            javaDoc = generateForGetters(name, isList);
-        } else if (type.equals(JavaDocType.TYPE_DEF_SETTER_METHOD)) {
-            javaDoc = generateForTypeDefSetter(name);
-        } else if (type.equals(JavaDocType.SETTER_METHOD)) {
-            javaDoc = generateForSetters(name, isList);
-        } else if (type.equals(JavaDocType.OF_METHOD)) {
-            javaDoc = generateForOf(name);
-        } else if (type.equals(JavaDocType.DEFAULT_CONSTRUCTOR)) {
-            javaDoc = generateForDefaultConstructors(name);
-        } else if (type.equals(JavaDocType.BUILD_METHOD)) {
-            javaDoc = generateForBuild(name);
-        } else if (type.equals(JavaDocType.TYPE_CONSTRUCTOR)) {
-            javaDoc = generateForTypeConstructor(name);
-        } else if (type.equals(JavaDocType.UNION_FROM_METHOD)) {
-            javaDoc = generateForUnionFrom(name);
-        } else if (type.equals(JavaDocType.ENUM_CLASS)) {
-            javaDoc = generateForEnum(name);
-        } else if (type.equals(JavaDocType.ENUM_ATTRIBUTE)) {
-            javaDoc = generateForEnumAttr(name);
-        } else {
-            javaDoc = generateForConstructors(name);
+        name = JavaIdentifierSyntax.getSmallCase(getCamelCase(name, null));
+        switch (type) {
+            case IMPL_CLASS: {
+                return generateForImplClass(name);
+            }
+            case BUILDER_CLASS: {
+                return generateForBuilderClass(name);
+            }
+            case INTERFACE: {
+                return generateForInterface(name);
+            }
+            case BUILDER_INTERFACE: {
+                return generateForBuilderInterface(name);
+            }
+            case PACKAGE_INFO: {
+                return generateForPackage(name);
+            }
+            case GETTER_METHOD: {
+                return generateForGetters(name, isList);
+            }
+            case TYPE_DEF_SETTER_METHOD: {
+                return generateForTypeDefSetter(name);
+            }
+            case SETTER_METHOD: {
+                return generateForSetters(name, isList);
+            }
+            case OF_METHOD: {
+                return generateForOf(name);
+            }
+            case DEFAULT_CONSTRUCTOR: {
+                return generateForDefaultConstructors(name);
+            }
+            case BUILD_METHOD: {
+                return generateForBuild(name);
+            }
+            case TYPE_CONSTRUCTOR: {
+                return generateForTypeConstructor(name);
+            }
+            case FROM_METHOD: {
+                return generateForFromString(name);
+            }
+            case ENUM_CLASS: {
+                return generateForEnum(name);
+            }
+            case ENUM_ATTRIBUTE: {
+                return generateForEnumAttr(name);
+            }
+            case RPC_INTERFACE: {
+                return generateForRpcInterface(name);
+            }
+            default: {
+                return generateForConstructors(name);
+            }
         }
-        return javaDoc;
     }
 
     /**
@@ -210,6 +238,62 @@
     }
 
     /**
+     * Generates javaDocs for rpc method.
+     *
+     * @param rpcName    name of the rpc
+     * @param inputName  name of input
+     * @param outputName name of output
+     * @return javaDocs of rpc method
+     */
+    public static String generateJavaDocForRpc(String rpcName, String inputName, String outputName) {
+        rpcName = getCamelCase(rpcName, null);
+        inputName = getCaptialCase(inputName);
+        outputName = getCaptialCase(outputName);
+
+        return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_RPC
+                + rpcName + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK
+                + getInputString(inputName, rpcName) + getOutputString(outputName, rpcName) + FOUR_SPACE_INDENTATION
+                + JAVA_DOC_END_LINE;
+    }
+
+    /**
+     * Returns output string of rpc.
+     *
+     * @param outputName name of output
+     * @param rpcName    name of rpc
+     * @return javaDocs for output string of rpc
+     */
+    private static String getOutputString(String outputName, String rpcName) {
+        return FOUR_SPACE_INDENTATION + JAVA_DOC_RETURN + outputName + SPACE + RPC_OUTPUT_STRING + rpcName + NEW_LINE;
+    }
+
+    /**
+     * Returns input string of rpc.
+     *
+     * @param inputName name of input
+     * @param rpcName   name of rpc
+     * @return javaDocs for input string of rpc
+     */
+    private static String getInputString(String inputName, String rpcName) {
+        if (inputName.equals("")) {
+            return null;
+        } else {
+            return FOUR_SPACE_INDENTATION + JAVA_DOC_PARAM + inputName + SPACE + RPC_INPUT_STRING + rpcName + NEW_LINE;
+        }
+    }
+
+    /**
+     * Generates javaDoc for the interface.
+     *
+     * @param interfaceName interface name
+     * @return javaDocs
+     */
+    private static String generateForRpcInterface(String interfaceName) {
+        return NEW_LINE + JAVA_DOC_FIRST_LINE + INTERFACE_JAVA_DOC + interfaceName + PERIOD + NEW_LINE
+                + JAVA_DOC_END_LINE;
+    }
+
+    /**
      * Generates javaDocs for getter method.
      *
      * @param attribute attribute
@@ -275,7 +359,7 @@
      * @param attribute attribute
      * @return javaDocs
      */
-    private static String generateForUnionFrom(String attribute) {
+    private static String generateForFromString(String attribute) {
 
         return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_OF
                 + attribute + SPACE + FROM_STRING_METHOD_NAME + SPACE + INPUT + SPACE + STRING_DATA_TYPE + PERIOD