X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fbinding-generator-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fbinding%2Fgenerator%2Futil%2FBindingGeneratorUtil.java;h=a394edd906bc50de5f71d8a09eb54b393b3c42d4;hp=1e16a05def2789ae9fde0b24f236ed94e2aaecba;hb=a954bf75193626833a2bd8b7395514a8b1aec032;hpb=071db48e47fa3dd83da3933f1b35c3ca0d42f550 diff --git a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java index 1e16a05def..a394edd906 100644 --- a/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java +++ b/opendaylight/sal/yang-prototype/code-generator/binding-generator-util/src/main/java/org/opendaylight/controller/binding/generator/util/BindingGeneratorUtil.java @@ -1,38 +1,28 @@ 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 java.util.*; 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.Module; import org.opendaylight.controller.yang.model.api.SchemaNode; import org.opendaylight.controller.yang.model.api.SchemaPath; +import org.opendaylight.controller.yang.model.api.TypeDefinition; -public class BindingGeneratorUtil { +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 static Calendar calendar = new GregorianCalendar(); + 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 JAVA_RESERVED_WORDS = new HashSet( - Arrays.asList(SET_VALUES)); + public static final Set JAVA_RESERVED_WORDS = new HashSet(Arrays.asList(SET_VALUES)); public static String validateJavaPackage(final String packageName) { if (packageName != null) { @@ -53,7 +43,7 @@ public class BindingGeneratorUtil { } return packageName; } - + public static String validateParameterName(final String parameterName) { if (parameterName != null) { if (JAVA_RESERVED_WORDS.contains(parameterName)) { @@ -62,38 +52,32 @@ public class BindingGeneratorUtil { } 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; - } + + 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 URI moduleNamespace, final String yangVersion) { + 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(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(":", "."); @@ -109,30 +93,52 @@ public class BindingGeneratorUtil { 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( - final String basePackageName, final SchemaPath schemaPath) { + 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); - if ((schemaPath != null) && (schemaPath.getPath() != null)) { - final List 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()); + final List 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 null; + 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); @@ -142,7 +148,7 @@ public class BindingGeneratorUtil { correctStr = first + correctStr.substring(1); return correctStr; } - + public static String parseToValidParamName(final String token) { final String validToken = token.replace(".", ""); String correctStr = parseToCamelCase(validToken); @@ -152,7 +158,14 @@ public class BindingGeneratorUtil { 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"); @@ -168,7 +181,7 @@ public class BindingGeneratorUtil { correctStr = replaceWithCamelCase(correctStr, '_'); return correctStr; } - + private static String replaceWithCamelCase(String text, char removalChar) { StringBuilder sb = new StringBuilder(text); String toBeRemoved = String.valueOf(removalChar); @@ -179,11 +192,9 @@ public class BindingGeneratorUtil { // check if 'toBeRemoved' character is not the only character in // 'text' if (sb.length() == 0) { - throw new IllegalArgumentException("Name can not be '" - + toBeRemoved + "'"); + throw new IllegalArgumentException("Name can not be '" + toBeRemoved + "'"); } - String replacement = String.valueOf(sb.charAt(toBeRemovedPos)) - .toUpperCase(); + String replacement = String.valueOf(sb.charAt(toBeRemovedPos)).toUpperCase(); sb.setCharAt(toBeRemovedPos, replacement.charAt(0)); toBeRemovedPos = sb.indexOf(toBeRemoved); }