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 {
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>
*
}
'''
}
-
+
final protected def getterMethodName(GeneratedProperty field) {
val prefix = if(field.returnType.equals(Types.BOOLEAN)) "is" else "get"
return '''«prefix»«field.name.toFirstUpper»'''
/**
* Template method which generates JAVA comments.
*
- * @param string with the comment for whole JAVA class
+ * @param comment string with the comment for whole JAVA class
* @return string with comment in JAVA format
*/
def protected CharSequence asJavadoc(String comment) {