package org.opendaylight.controller.binding.generator.util;
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.model.api.SchemaNode;
-import org.opendaylight.controller.yang.model.api.SchemaPath;
+import org.opendaylight.controller.yang.model.api.*;
+
+import java.util.*;
public class BindingGeneratorUtil {
- private static final String[] SET_VALUES = new String[] { "abstract",
+ private static final String[] SET_VALUES = new String[]{"abstract",
"assert", "boolean", "break", "byte", "case", "catch", "char",
"class", "const", "continue", "default", "double", "do", "else",
"enum", "extends", "false", "final", "finally", "float", "for",
"interface", "long", "native", "new", "null", "package", "private",
"protected", "public", "return", "short", "static", "strictfp",
"super", "switch", "synchronized", "this", "throw", "throws",
- "transient", "true", "try", "void", "volatile", "while" };
-
- private static Calendar calendar = new GregorianCalendar();
+ "transient", "true", "try", "void", "volatile", "while"};
- private BindingGeneratorUtil() {
- }
+ private BindingGeneratorUtil() {}
public static final Set<String> JAVA_RESERVED_WORDS = new HashSet<String>(
Arrays.asList(SET_VALUES));
}
return packageName;
}
-
+
public static String validateParameterName(final String parameterName) {
if (parameterName != null) {
if (JAVA_RESERVED_WORDS.contains(parameterName)) {
}
return parameterName;
}
-
+
public static GeneratedTOBuilder schemaNodeToTransferObjectBuilder(
- final String basePackageName, final SchemaNode schemaNode, final String transObjectName) {
- if (basePackageName != null && schemaNode != null && transObjectName != null) {
- final String packageName = packageNameForGeneratedType(basePackageName,
- schemaNode.getPath());
-
- if (packageName != null) {
- final String genTOName = BindingGeneratorUtil
- .parseToClassName(transObjectName);
- final GeneratedTOBuilder newType = new GeneratedTOBuilderImpl(
- packageName, genTOName);
-
- return newType;
- }
+ final String packageName, final SchemaNode schemaNode,
+ final String transObjectName) {
+ if (packageName != null && schemaNode != null
+ && transObjectName != null) {
+
+ final String genTOName = BindingGeneratorUtil
+ .parseToClassName(transObjectName);
+ final GeneratedTOBuilder newType = new GeneratedTOBuilderImpl(
+ packageName, genTOName);
+
+ return newType;
+
}
return null;
}
public static String moduleNamespaceToPackageName(
- final URI moduleNamespace, final String yangVersion) {
+ final Module module) {
final StringBuilder packageNameBuilder = new StringBuilder();
+ final Calendar calendar = Calendar.getInstance();
+ if (module.getRevision() == null) {
+ throw new IllegalArgumentException("Module " + module.getName()
+ + " does not specify revision date!");
+ }
packageNameBuilder.append("org.opendaylight.yang.gen.v");
- packageNameBuilder.append(yangVersion);
- packageNameBuilder.append(".rev");
- packageNameBuilder.append(calendar.get(Calendar.YEAR));
- packageNameBuilder.append((calendar.get(Calendar.MONTH) + 1));
- packageNameBuilder.append(calendar.get(Calendar.DAY_OF_MONTH));
+ packageNameBuilder.append(module.getYangVersion());
packageNameBuilder.append(".");
- String namespace = moduleNamespace.toString();
+ String namespace = module.getNamespace().toString();
namespace = namespace.replace("://", ".");
namespace = namespace.replace("/", ".");
namespace = namespace.replace(":", ".");
namespace = namespace.replace("=", ".");
packageNameBuilder.append(namespace);
+ calendar.setTime(module.getRevision());
+ packageNameBuilder.append(".rev");
+ packageNameBuilder.append(calendar.get(Calendar.YEAR));
+ packageNameBuilder.append((calendar.get(Calendar.MONTH) + 1));
+ packageNameBuilder.append(calendar.get(Calendar.DAY_OF_MONTH));
- return packageNameBuilder.toString();
+ return validateJavaPackage(packageNameBuilder.toString());
}
public static String packageNameForGeneratedType(
}
return null;
}
-
+
public static String parseToClassName(String token) {
token = token.replace(".", "");
String correctStr = parseToCamelCase(token);
correctStr = first + correctStr.substring(1);
return correctStr;
}
-
+
public static String parseToValidParamName(final String token) {
final String validToken = token.replace(".", "");
String correctStr = parseToCamelCase(validToken);
correctStr = first + correctStr.substring(1);
return validateParameterName(correctStr);
}
-
+
private static String parseToCamelCase(String token) {
if (token == null) {
throw new NullPointerException("Name can not be null");
correctStr = replaceWithCamelCase(correctStr, '_');
return correctStr;
}
-
+
private static String replaceWithCamelCase(String text, char removalChar) {
StringBuilder sb = new StringBuilder(text);
String toBeRemoved = String.valueOf(removalChar);