Added constructors to builder classes based on implemented interfaces from uses nodes.
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / BaseTemplate.xtend
index bd40c888174ad7e2990423670fb791dffef201cc..4d28de3b1a49ada2140783a93133b18751797fce 100644 (file)
@@ -6,6 +6,7 @@ import java.util.Map
 import org.opendaylight.yangtools.sal.binding.model.api.Type
 import org.opendaylight.yangtools.binding.generator.util.Types
 import com.google.common.base.Splitter
+import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature
 
 abstract class BaseTemplate {
     
@@ -23,31 +24,50 @@ abstract class BaseTemplate {
     
     def packageDefinition () '''package «type.packageName»;'''
 
+
+    protected def getFullyQualifiedName() {
+        return type.fullyQualifiedName
+    }
     
     final public def generate() {
     val _body = body()
     '''
     «packageDefinition»
     «imports»
-    
+
     «_body»
     '''.toString
     }
     protected def imports()  ''' 
         «IF !importMap.empty»
             «FOR entry : importMap.entrySet»
-                import «entry.value».«entry.key»;
+                «IF entry.value != fullyQualifiedName»
+                    import «entry.value».«entry.key»;
+                «ENDIF»
             «ENDFOR»
         «ENDIF»
-        
+
     '''
-    
+
     protected abstract def CharSequence body();
 
     // Helper patterns
-    
+
     final protected def fieldName(GeneratedProperty property) '''_«property.name»'''
-    
+
+
+    final protected def propertyNameFromGetter(MethodSignature getter) {
+        var int prefix;
+        if (getter.name.startsWith("is")) {
+            prefix = 2
+        } else if (getter.name.startsWith("get")) {
+            prefix = 3
+        } else {
+            throw new IllegalArgumentException("Not a getter")
+        }
+        return getter.name.substring(prefix).toFirstLower;
+    }
+
     /**
      * Template method which generates the getter method for <code>field</code>
      * 
@@ -62,7 +82,7 @@ abstract class BaseTemplate {
         }
     '''
     }
-    
+
     final protected def getterMethodName(GeneratedProperty field) {
         val prefix = if(field.returnType.equals(Types.BOOLEAN)) "is" else "get"
         return '''«prefix»«field.name.toFirstUpper»'''