+
+ private GeneratedType moduleToDataType(final Module module) {
+ if (module != null) {
+ final Set<TypeDefinition<?>> typeDefinitions = module
+ .getTypeDefinitions();
+ final GeneratedTypeBuilder moduleDataTypeBuilder = moduleTypeBuilder(
+ module, "Data");
+
+ if (moduleDataTypeBuilder != null) {
+ if (typeDefinitions != null) {
+ for (final TypeDefinition<?> typedef : typeDefinitions) {
+ if (isDerivedFromEnumerationType(typedef)) {
+ final EnumTypeDefinition enumBaseType = enumTypeDefFromExtendedType(typedef);
+ resolveEnumFromTypeDefinition(enumBaseType, typedef
+ .getQName().getLocalName(),
+ moduleDataTypeBuilder);
+ }
+ }
+ }
+
+ final Set<DataSchemaNode> dataNodes = module.getChildNodes();
+ resolveTypesFromDataSchemaNode(moduleDataTypeBuilder, dataNodes);
+ return moduleDataTypeBuilder.toInstance();
+ }
+ }
+ return null;
+ }
+
+ private boolean isDerivedFromEnumerationType(
+ final TypeDefinition<?> typeDefinition) {
+ if (typeDefinition != null) {
+ if (typeDefinition.getBaseType() instanceof EnumTypeDefinition) {
+ return true;
+ } else if (typeDefinition.getBaseType() instanceof ExtendedType) {
+ return isDerivedFromEnumerationType(typeDefinition
+ .getBaseType());
+ }
+ }
+ return false;
+ }
+
+ private EnumTypeDefinition enumTypeDefFromExtendedType(
+ final TypeDefinition<?> typeDefinition) {
+ if (typeDefinition != null) {
+ if (typeDefinition.getBaseType() instanceof EnumTypeDefinition) {
+ return (EnumTypeDefinition) typeDefinition.getBaseType();
+ } else if (typeDefinition.getBaseType() instanceof ExtendedType) {
+ return enumTypeDefFromExtendedType(typeDefinition.getBaseType());
+ }
+ }
+ return null;
+ }
+
+ private EnumBuilder resolveEnumFromTypeDefinition(
+ final EnumTypeDefinition enumTypeDef, final String enumName,
+ final GeneratedTypeBuilder typeBuilder) {
+ if ((enumTypeDef != null) && (typeBuilder != null)
+ && (enumTypeDef.getQName() != null)
+ && (enumTypeDef.getQName().getLocalName() != null)) {
+
+ final String enumerationName = CodeGeneratorHelper
+ .parseToClassName(enumName);
+ final EnumBuilder enumBuilder = typeBuilder
+ .addEnumeration(enumerationName);
+
+ if (enumBuilder != null) {
+ final List<EnumPair> enums = enumTypeDef.getValues();
+ if (enums != null) {
+ int listIndex = 0;
+ for (final EnumPair enumPair : enums) {
+ if (enumPair != null) {
+ final String enumPairName = CodeGeneratorHelper
+ .parseToClassName(enumPair.getName());
+ Integer enumPairValue = enumPair.getValue();
+
+ if (enumPairValue == null) {
+ enumPairValue = listIndex;
+ }
+ enumBuilder.addValue(enumPairName, enumPairValue);
+ listIndex++;
+ }
+ }
+ }
+ return enumBuilder;
+ }
+ }
+ return null;
+ }
+
+ private GeneratedTypeBuilder moduleTypeBuilder(final Module module,
+ final String postfix) {
+ if (module != null) {
+ String packageName = resolveBasePackageName(module.getNamespace(),
+ module.getYangVersion());
+ final String moduleName = CodeGeneratorHelper
+ .parseToClassName(module.getName()) + postfix;
+
+ if (packageName != null) {
+ packageName = validatePackage(packageName);
+ return new GeneratedTypeBuilderImpl(packageName, moduleName);
+ }
+ }
+ return null;
+ }
+
+ private GeneratedType rpcMethodsToGenType(final Module module) {
+ if (module != null) {
+ final Set<RpcDefinition> rpcDefinitions = module.getRpcs();
+
+ if ((rpcDefinitions != null) && !rpcDefinitions.isEmpty()) {
+ final GeneratedTypeBuilder rpcTypeBuilder = moduleTypeBuilder(
+ module, "Rpc");
+
+ for (final RpcDefinition rpc : rpcDefinitions) {
+ if (rpc != null) {
+
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private GeneratedType notifycationsToGenType(final Module module) {
+ if (module != null) {
+ final Set<NotificationDefinition> notifications = module
+ .getNotifications();
+
+ if ((notifications != null) && !notifications.isEmpty()) {
+ final GeneratedTypeBuilder notifyTypeBuilder = moduleTypeBuilder(
+ module, "Notification");
+
+ for (final NotificationDefinition notification : notifications) {
+ if (notification != null) {
+
+ }
+ }
+ }
+ }
+ return null;
+ }
+