[ONOS-4073] YANG enum translator implementation.
Change-Id: I129eaec0c8f81c674a994a579650f18499340052
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index db3ff8f..4b9d7b5 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -53,9 +53,24 @@
public static final String BUILDER_INTERFACE_JAVA_DOC = " * Builder for ";
/**
+ * JavaDocs for enum class.
+ */
+ public static final String ENUM_CLASS_JAVADOC = " * Represents ENUM data of ";
+
+ /**
+ * JavaDocs for enum attribute.
+ */
+ public static final String ENUM_ATTRIBUTE_JAVADOC = " * Represents ";
+
+ /**
* JavaDocs for package info class.
*/
- public static final String PACKAGE_INFO_JAVADOC = " * Implementation of YANG file ";
+ public static final String PACKAGE_INFO_JAVADOC = " * Implementation of YANG node ";
+
+ /**
+ * JavaDocs for package info class.
+ */
+ public static final String PACKAGE_INFO_JAVADOC_OF_CHILD = "'s children nodes";
/**
* JavaDocs's first line.
@@ -283,6 +298,11 @@
public static final String VALUE = "value";
/**
+ * Static attribute for enumValue syntax.
+ */
+ public static final String ENUM_VALUE = "enumValue";
+
+ /**
* Static attribute for suffix s.
*/
public static final String SUFFIX_S = "s";
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
index 0a385ac..5833de2 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/CopyrightHeader.java
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.Calendar;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
@@ -33,6 +34,8 @@
private static final int EOF = -1;
private static final String COPYRIGHT_HEADER_FILE = "CopyrightHeader.txt";
+ private static final String COPYRIGHTS_FIRST_LINE = "/*\n * Copyright " + Calendar.getInstance().get(Calendar.YEAR)
+ + "-present Open Networking Laboratory\n";
private static final String TEMP_FILE = "temp.txt";
private static ClassLoader classLoader = CopyrightHeader.class.getClassLoader();
@@ -82,6 +85,7 @@
OutputStream out = new FileOutputStream(temp);
int index;
+ out.write(COPYRIGHTS_FIRST_LINE.getBytes());
while ((index = stream.read()) != EOF) {
out.write(index);
}
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 a1cae8e..0ecaaa1 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
@@ -22,6 +22,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS_JAVA_DOC;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE_JAVA_DOC;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_OBJECT;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM_ATTRIBUTE_JAVADOC;
+import static org.onosproject.yangutils.utils.UtilConstants.ENUM_CLASS_JAVADOC;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
@@ -135,7 +137,17 @@
/**
* For build.
*/
- BUILD_METHOD
+ BUILD_METHOD,
+
+ /**
+ * For enum.
+ */
+ ENUM_CLASS,
+
+ /**
+ * For enum's attributes.
+ */
+ ENUM_ATTRIBUTE
}
/**
@@ -176,6 +188,10 @@
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);
}
@@ -183,7 +199,18 @@
}
/**
- * Generate javaDocs for getter method.
+ * Generates javaDocs for enum's attributes.
+ *
+ * @param name attribute name
+ * @return javaDocs
+ */
+ private static String generateForEnumAttr(String name) {
+ return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + ENUM_ATTRIBUTE_JAVADOC
+ + name + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE;
+ }
+
+ /**
+ * Generates javaDocs for getter method.
*
* @param attribute attribute
* @param isList is list attribute
@@ -272,20 +299,7 @@
}
/**
- * Generates javaDocs for typedef constructor.
- *
- * @param attribute attribute
- * @return javaDocs
- */
- private static String generateForTypeDefConstructor(String attribute) {
- return (NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
- + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
- + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
- + FOUR_SPACE_INDENTATION + JAVA_DOC_END_LINE);
- }
-
- /**
- * Generate javaDocs for the impl class.
+ * Generates javaDocs for the impl class.
*
* @param className class name
* @return javaDocs
@@ -295,7 +309,18 @@
}
/**
- * Generate javaDocs for the builder class.
+ * Generates javaDocs for enum.
+ *
+ * @param className enum class name
+ * @return javaDocs
+ */
+ private static String generateForEnum(String className) {
+ return NEW_LINE + NEW_LINE + JAVA_DOC_FIRST_LINE + ENUM_CLASS_JAVADOC + className + PERIOD + NEW_LINE
+ + JAVA_DOC_END_LINE;
+ }
+
+ /**
+ * Generates javaDocs for the builder class.
*
* @param className class name
* @return javaDocs
@@ -306,7 +331,7 @@
}
/**
- * Generate javaDoc for the interface.
+ * Generates javaDoc for the interface.
*
* @param interfaceName interface name
* @return javaDocs
@@ -317,7 +342,7 @@
}
/**
- * Generate javaDoc for the builder interface.
+ * Generates javaDoc for the builder interface.
*
* @param builderforName builder for name
* @return javaDocs
@@ -328,7 +353,7 @@
}
/**
- * Generate javaDocs for package-info.
+ * Generates javaDocs for package-info.
*
* @param packageName package name
* @return javaDocs
@@ -338,7 +363,7 @@
}
/**
- * Generate javaDocs for default constructor.
+ * Generates javaDocs for default constructor.
*
* @param className class name
* @return javaDocs
@@ -349,7 +374,7 @@
}
/**
- * Generate javaDocs for constructor with parameters.
+ * Generates javaDocs for constructor with parameters.
*
* @param className class name
* @return javaDocs
@@ -363,7 +388,7 @@
}
/**
- * Generate javaDocs for build.
+ * Generates javaDocs for build.
*
* @param buildName builder name
* @return javaDocs
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index c15d580..baf6929 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -44,6 +44,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.appendFileContents;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.PACKAGE_INFO;
import static org.slf4j.LoggerFactory.getLogger;
@@ -96,7 +97,7 @@
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(CopyrightHeader.getCopyrightHeader());
- bufferedWriter.write(JavaDocGen.getJavaDoc(PACKAGE_INFO, classInfo, false));
+ bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, false));
bufferedWriter.write(PACKAGE + SPACE + pack + SEMI_COLAN);
bufferedWriter.close();