-package org.opendaylight.yangtools.binding.generator.util;
-
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
-import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-
-public final class BindingGeneratorUtil {
-
- 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", "goto", "if", "implements", "import", "instanceof", "int",
- "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 BindingGeneratorUtil() {
- }
-
- public static final Set<String> JAVA_RESERVED_WORDS = new HashSet<String>(Arrays.asList(SET_VALUES));
-
- public static String validateJavaPackage(final String packageName) {
- if (packageName != null) {
- final String[] packNameParts = packageName.split("\\.");
- if (packNameParts != null) {
- final StringBuilder builder = new StringBuilder();
- for (int i = 0; i < packNameParts.length; ++i) {
- final String packNamePart = packNameParts[i];
- if (Character.isDigit(packNamePart.charAt(0))) {
- packNameParts[i] = "_" + packNamePart;
- } else if (JAVA_RESERVED_WORDS.contains(packNamePart)) {
- packNameParts[i] = "_" + packNamePart;
- }
- if (i > 0) {
- builder.append(".");
- }
- builder.append(packNameParts[i]);
- }
- return builder.toString();
- }
- }
- return packageName;
- }
-
- public static String validateParameterName(final String parameterName) {
- if (parameterName != null) {
- if (JAVA_RESERVED_WORDS.contains(parameterName)) {
- return "_" + parameterName;
- }
- }
- return parameterName;
- }
-
- public static GeneratedTOBuilder schemaNodeToTransferObjectBuilder(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 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(module.getYangVersion());
- packageNameBuilder.append(".");
-
- String namespace = module.getNamespace().toString();
- namespace = namespace.replace("://", ".");
- namespace = namespace.replace("/", ".");
- namespace = namespace.replace(":", ".");
- namespace = namespace.replace("-", ".");
- namespace = namespace.replace("@", ".");
- namespace = namespace.replace("$", ".");
- namespace = namespace.replace("#", ".");
- namespace = namespace.replace("'", ".");
- namespace = namespace.replace("*", ".");
- 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 validateJavaPackage(packageNameBuilder.toString());
- }
-
- public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath) {
- if (basePackageName == null) {
- throw new IllegalArgumentException("Base Package Name cannot be NULL!");
- }
- if (schemaPath == null) {
- throw new IllegalArgumentException("Schema Path cannot be NULL!");
- }
-
- final StringBuilder builder = new StringBuilder();
- builder.append(basePackageName);
- final List<QName> pathToNode = schemaPath.getPath();
- final int traversalSteps = (pathToNode.size() - 1);
- for (int i = 0; i < traversalSteps; ++i) {
- builder.append(".");
- String nodeLocalName = pathToNode.get(i).getLocalName();
-
- nodeLocalName = nodeLocalName.replace(":", ".");
- nodeLocalName = nodeLocalName.replace("-", ".");
- builder.append(nodeLocalName);
- }
- return validateJavaPackage(builder.toString());
- }
-
- public static String packageNameForTypeDefinition(final String basePackageName,
- final TypeDefinition<?> typeDefinition) {
- if (basePackageName == null) {
- throw new IllegalArgumentException("Base Package Name cannot be NULL!");
- }
- if (typeDefinition == null) {
- throw new IllegalArgumentException("Type Definition reference cannot be NULL!");
- }
-
- final StringBuilder builder = new StringBuilder();
- builder.append(basePackageName);
- return validateJavaPackage(builder.toString());
- }
-
- public static String parseToClassName(String token) {
- token = token.replace(".", "");
- String correctStr = parseToCamelCase(token);
-
- // make first char upper-case
- char first = Character.toUpperCase(correctStr.charAt(0));
- correctStr = first + correctStr.substring(1);
- return correctStr;
- }
-
- public static String parseToValidParamName(final String token) {
- final String validToken = token.replace(".", "");
- String correctStr = parseToCamelCase(validToken);
-
- // make first char lower-case
- char first = Character.toLowerCase(correctStr.charAt(0));
- correctStr = first + correctStr.substring(1);
- return validateParameterName(correctStr);
- }
-
- public static String convertToCapitalLetters(final String token) {
- String convertedStr = token.replace(" ", "_");
- convertedStr = convertedStr.replace(".", "_");
- convertedStr = convertedStr.toUpperCase();
- return convertedStr;
- }
-
- private static String parseToCamelCase(String token) {
- if (token == null) {
- throw new NullPointerException("Name can not be null");
- }
-
- String correctStr = token.trim();
- if (correctStr.length() == 0) {
- throw new IllegalArgumentException("Name can not be emty");
- }
-
- correctStr = replaceWithCamelCase(correctStr, ' ');
- correctStr = replaceWithCamelCase(correctStr, '-');
- correctStr = replaceWithCamelCase(correctStr, '_');
- return correctStr;
- }
-
- private static String replaceWithCamelCase(String text, char removalChar) {
- StringBuilder sb = new StringBuilder(text);
- String toBeRemoved = String.valueOf(removalChar);
-
- int toBeRemovedPos = sb.indexOf(toBeRemoved);
- while (toBeRemovedPos != -1) {
- sb.replace(toBeRemovedPos, toBeRemovedPos + 1, "");
- // check if 'toBeRemoved' character is not the only character in
- // 'text'
- if (sb.length() == 0) {
- throw new IllegalArgumentException("Name can not be '" + toBeRemoved + "'");
- }
- String replacement = String.valueOf(sb.charAt(toBeRemovedPos)).toUpperCase();
- sb.setCharAt(toBeRemovedPos, replacement.charAt(0));
- toBeRemovedPos = sb.indexOf(toBeRemoved);
- }
- return sb.toString();
- }
-}
+package org.opendaylight.yangtools.binding.generator.util;\r
+\r
+import java.util.Arrays;\r
+import java.util.Calendar;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;\r
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.model.api.Module;\r
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;\r
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;\r
+\r
+public final class BindingGeneratorUtil {\r
+\r
+ private static final String[] SET_VALUES = new String[] { "abstract", "assert", "boolean", "break", "byte", "case",\r
+ "catch", "char", "class", "const", "continue", "default", "double", "do", "else", "enum", "extends",\r
+ "false", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int",\r
+ "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return",\r
+ "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient",\r
+ "true", "try", "void", "volatile", "while" };\r
+\r
+ private BindingGeneratorUtil() {\r
+ }\r
+\r
+ public static final Set<String> JAVA_RESERVED_WORDS = new HashSet<String>(Arrays.asList(SET_VALUES));\r
+\r
+ public static String validateJavaPackage(final String packageName) {\r
+ if (packageName != null) {\r
+ final String[] packNameParts = packageName.split("\\.");\r
+ if (packNameParts != null) {\r
+ final StringBuilder builder = new StringBuilder();\r
+ for (int i = 0; i < packNameParts.length; ++i) {\r
+ final String packNamePart = packNameParts[i];\r
+ if (Character.isDigit(packNamePart.charAt(0))) {\r
+ packNameParts[i] = "_" + packNamePart;\r
+ } else if (JAVA_RESERVED_WORDS.contains(packNamePart)) {\r
+ packNameParts[i] = "_" + packNamePart;\r
+ }\r
+ if (i > 0) {\r
+ builder.append(".");\r
+ }\r
+ builder.append(packNameParts[i]);\r
+ }\r
+ return builder.toString();\r
+ }\r
+ }\r
+ return packageName;\r
+ }\r
+\r
+ public static String validateParameterName(final String parameterName) {\r
+ if (parameterName != null) {\r
+ if (JAVA_RESERVED_WORDS.contains(parameterName)) {\r
+ return "_" + parameterName;\r
+ }\r
+ }\r
+ return parameterName;\r
+ }\r
+\r
+ public static GeneratedTOBuilder schemaNodeToTransferObjectBuilder(final String packageName,\r
+ final SchemaNode schemaNode, final String transObjectName) {\r
+ if (packageName != null && schemaNode != null && transObjectName != null) {\r
+\r
+ final String genTOName = BindingGeneratorUtil.parseToClassName(transObjectName);\r
+ final GeneratedTOBuilder newType = new GeneratedTOBuilderImpl(packageName, genTOName);\r
+\r
+ return newType;\r
+\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public static String moduleNamespaceToPackageName(final Module module) {\r
+ final StringBuilder packageNameBuilder = new StringBuilder();\r
+\r
+ final Calendar calendar = Calendar.getInstance();\r
+ if (module.getRevision() == null) {\r
+ throw new IllegalArgumentException("Module " + module.getName() + " does not specify revision date!");\r
+ }\r
+ packageNameBuilder.append("org.opendaylight.yang.gen.v");\r
+ packageNameBuilder.append(module.getYangVersion());\r
+ packageNameBuilder.append(".");\r
+\r
+ String namespace = module.getNamespace().toString();\r
+ namespace = namespace.replace("://", ".");\r
+ namespace = namespace.replace("/", ".");\r
+ namespace = namespace.replace(":", ".");\r
+ namespace = namespace.replace("-", ".");\r
+ namespace = namespace.replace("@", ".");\r
+ namespace = namespace.replace("$", ".");\r
+ namespace = namespace.replace("#", ".");\r
+ namespace = namespace.replace("'", ".");\r
+ namespace = namespace.replace("*", ".");\r
+ namespace = namespace.replace("+", ".");\r
+ namespace = namespace.replace(",", ".");\r
+ namespace = namespace.replace(";", ".");\r
+ namespace = namespace.replace("=", ".");\r
+\r
+ packageNameBuilder.append(namespace);\r
+ calendar.setTime(module.getRevision());\r
+ packageNameBuilder.append(".rev");\r
+ packageNameBuilder.append(calendar.get(Calendar.YEAR));\r
+ packageNameBuilder.append((calendar.get(Calendar.MONTH) + 1));\r
+ packageNameBuilder.append(calendar.get(Calendar.DAY_OF_MONTH));\r
+\r
+ return validateJavaPackage(packageNameBuilder.toString());\r
+ }\r
+\r
+ public static String packageNameForGeneratedType(final String basePackageName, final SchemaPath schemaPath) {\r
+ if (basePackageName == null) {\r
+ throw new IllegalArgumentException("Base Package Name cannot be NULL!");\r
+ }\r
+ if (schemaPath == null) {\r
+ throw new IllegalArgumentException("Schema Path cannot be NULL!");\r
+ }\r
+\r
+ final StringBuilder builder = new StringBuilder();\r
+ builder.append(basePackageName);\r
+ final List<QName> pathToNode = schemaPath.getPath();\r
+ final int traversalSteps = (pathToNode.size() - 1);\r
+ for (int i = 0; i < traversalSteps; ++i) {\r
+ builder.append(".");\r
+ String nodeLocalName = pathToNode.get(i).getLocalName();\r
+\r
+ nodeLocalName = nodeLocalName.replace(":", ".");\r
+ nodeLocalName = nodeLocalName.replace("-", ".");\r
+ builder.append(nodeLocalName);\r
+ }\r
+ return validateJavaPackage(builder.toString());\r
+ }\r
+\r
+ public static String packageNameForTypeDefinition(final String basePackageName,\r
+ final TypeDefinition<?> typeDefinition) {\r
+ if (basePackageName == null) {\r
+ throw new IllegalArgumentException("Base Package Name cannot be NULL!");\r
+ }\r
+ if (typeDefinition == null) {\r
+ throw new IllegalArgumentException("Type Definition reference cannot be NULL!");\r
+ }\r
+\r
+ final StringBuilder builder = new StringBuilder();\r
+ builder.append(basePackageName);\r
+ return validateJavaPackage(builder.toString());\r
+ }\r
+\r
+ public static String parseToClassName(String token) {\r
+ token = token.replace(".", "");\r
+ String correctStr = parseToCamelCase(token);\r
+\r
+ // make first char upper-case\r
+ char first = Character.toUpperCase(correctStr.charAt(0));\r
+ if(first >= '0' && first <= '9') {\r
+ \r
+ correctStr = "_" + correctStr;\r
+ } else {\r
+ correctStr = first + correctStr.substring(1);\r
+ }\r
+ return correctStr;\r
+ }\r
+\r
+ public static String parseToValidParamName(final String token) {\r
+ final String validToken = token.replace(".", "");\r
+ String correctStr = parseToCamelCase(validToken);\r
+\r
+ // make first char lower-case\r
+ char first = Character.toLowerCase(correctStr.charAt(0));\r
+ correctStr = first + correctStr.substring(1);\r
+ return validateParameterName(correctStr);\r
+ }\r
+\r
+ public static String convertToCapitalLetters(final String token) {\r
+ String convertedStr = token.replace(" ", "_");\r
+ convertedStr = convertedStr.replace(".", "_");\r
+ convertedStr = convertedStr.toUpperCase();\r
+ return convertedStr;\r
+ }\r
+\r
+ private static String parseToCamelCase(String token) {\r
+ if (token == null) {\r
+ throw new NullPointerException("Name can not be null");\r
+ }\r
+\r
+ String correctStr = token.trim();\r
+ if (correctStr.length() == 0) {\r
+ throw new IllegalArgumentException("Name can not be emty");\r
+ }\r
+\r
+ correctStr = replaceWithCamelCase(correctStr, ' ');\r
+ correctStr = replaceWithCamelCase(correctStr, '-');\r
+ correctStr = replaceWithCamelCase(correctStr, '_');\r
+ return correctStr;\r
+ }\r
+\r
+ private static String replaceWithCamelCase(String text, char removalChar) {\r
+ StringBuilder sb = new StringBuilder(text);\r
+ String toBeRemoved = String.valueOf(removalChar);\r
+\r
+ int toBeRemovedPos = sb.indexOf(toBeRemoved);\r
+ while (toBeRemovedPos != -1) {\r
+ sb.replace(toBeRemovedPos, toBeRemovedPos + 1, "");\r
+ // check if 'toBeRemoved' character is not the only character in\r
+ // 'text'\r
+ if (sb.length() == 0) {\r
+ throw new IllegalArgumentException("Name can not be '" + toBeRemoved + "'");\r
+ }\r
+ String replacement = String.valueOf(sb.charAt(toBeRemovedPos)).toUpperCase();\r
+ sb.setCharAt(toBeRemovedPos, replacement.charAt(0));\r
+ toBeRemovedPos = sb.indexOf(toBeRemoved);\r
+ }\r
+ return sb.toString();\r
+ }\r
+}\r