import static org.opendaylight.controller.sal.java.api.generator.Constants.SC;
import static org.opendaylight.controller.sal.java.api.generator.Constants.STATIC;
import static org.opendaylight.controller.sal.java.api.generator.Constants.TAB;
+import static org.opendaylight.controller.sal.java.api.generator.Constants.EXTENDS;
+import static org.opendaylight.controller.sal.java.api.generator.Constants.IMPLEMENTS;
+import java.util.ArrayList;
import java.util.List;
import org.opendaylight.controller.sal.binding.model.api.AnnotationType;
builder.append(NL);
builder.append(NL);
createComment(builder, genType.getComment(), indent);
-
+
if (!genType.getAnnotations().isEmpty()) {
final List<AnnotationType> annotations = genType.getAnnotations();
appendAnnotations(builder, annotations);
builder.append(NL);
}
- builder.append(PUBLIC + GAP + type + GAP + genType.getName() + GAP
- + LCB);
+ builder.append(PUBLIC + GAP + type + GAP + genType.getName() + GAP);
+
+ final List<GeneratedType> genImplements = genType.getImplements();
+ if (genType instanceof GeneratedTransferObject) {
+ GeneratedTransferObject genTO = (GeneratedTransferObject) genType;
+
+ if (genTO.getExtends() != null) {
+ builder.append(EXTENDS + GAP);
+ builder.append(genTO.getExtends() + GAP);
+ }
+ }
+ if (!genImplements.isEmpty()) {
+ if (genType instanceof GeneratedTransferObject) {
+ builder.append(IMPLEMENTS + GAP);
+ } else {
+ builder.append(EXTENDS + GAP);
+ }
+ builder.append(genImplements.get(0).getPackageName()
+ + "." + genImplements.get(0).getName());
+ for (int i = 1; i < genImplements.size(); ++i) {
+ builder.append(", ");
+ builder.append(genImplements.get(i).getPackageName()
+ + "." + genImplements.get(i).getName());
+ }
+ }
+
+ builder.append(GAP + LCB);
return builder.toString();
}
- private static StringBuilder appendAnnotations(final StringBuilder builder, final List<AnnotationType> annotations) {
+ private static StringBuilder appendAnnotations(final StringBuilder builder,
+ final List<AnnotationType> annotations) {
if ((builder != null) && (annotations != null)) {
for (final AnnotationType annotation : annotations) {
builder.append("@");
createComment(builder, comment, indent);
builder.append(NL);
builder.append(indent);
-
+
if (!method.getAnnotations().isEmpty()) {
final List<AnnotationType> annotations = method.getAnnotations();
appendAnnotations(builder, annotations);
builder.append(NL);
}
-
+
builder.append(indent + getExplicitType(type) + GAP + name);
builder.append(LB);
for (int i = 0; i < parameters.size(); i++) {
final List<GeneratedProperty> properties = genTransferObject
.getProperties();
+ final List<GeneratedProperty> ctorParams = new ArrayList<GeneratedProperty>();
+ for (final GeneratedProperty property : properties) {
+ if (property.isReadOnly()) {
+ ctorParams.add(property);
+ }
+ }
+
builder.append(indent);
builder.append(PUBLIC);
builder.append(GAP);
builder.append(genTransferObject.getName());
builder.append(LB);
-
- boolean first = true;
- if (properties != null) {
- for (final GeneratedProperty property : properties) {
- if (first) {
- builder.append(getExplicitType(property.getReturnType()));
- builder.append(" ");
- builder.append(property.getName());
- first = false;
- } else {
- builder.append(", ");
- builder.append(getExplicitType(property.getReturnType()));
- builder.append(builder.append(" "));
- builder.append(property.getName());
- }
+
+ if (!ctorParams.isEmpty()) {
+ builder.append(getExplicitType(ctorParams.get(0).getReturnType()));
+ builder.append(" ");
+ builder.append(ctorParams.get(0).getName());
+ for (int i = 1; i < ctorParams.size(); ++i) {
+ final GeneratedProperty param = ctorParams.get(i);
+ builder.append(", ");
+ builder.append(getExplicitType(param.getReturnType()));
+ builder.append(GAP);
+ builder.append(param.getName());
}
}
-
- builder.append(RB);
- builder.append(GAP);
- builder.append(LCB);
- builder.append(NL);
- builder.append(indent);
- builder.append(TAB);
- builder.append("super();");
- builder.append(NL);
-
- if (properties != null) {
- for (final GeneratedProperty property : properties) {
+ builder.append(RB + GAP + LCB + NL + indent + TAB + "super();" + NL);
+ if (!ctorParams.isEmpty()) {
+ for (final GeneratedProperty property : ctorParams) {
builder.append(indent);
builder.append(TAB);
builder.append("this.");
builder.append(NL);
}
}
-
builder.append(indent);
builder.append(RCB);
-
return builder.toString();
}
builder.append(indent + RCB);
return builder.toString();
}
+
+ public static String createSetter(final GeneratedProperty property,
+ final String indent) {
+ final StringBuilder builder = new StringBuilder();
+
+ final Type type = property.getReturnType();
+ final String varName = property.getName();
+ final char first = Character.toUpperCase(varName.charAt(0));
+ final String methodName = "set" + first + varName.substring(1);
+
+ builder.append(indent + PUBLIC + GAP + "void" + GAP
+ + methodName);
+ builder.append(LB + getExplicitType(type) + GAP + varName + RB + LCB + NL);
+ String currentIndent = indent + TAB;
+ builder.append(currentIndent + "this." + varName + " = " + varName + SC + NL);
+ builder.append(indent + RCB);
+ return builder.toString();
+ }
public static String createHashCode(
final List<GeneratedProperty> properties, final String indent) {
builder.append(indent + "public int hashCode() {" + NL);
builder.append(indent + TAB + "final int prime = 31;" + NL);
builder.append(indent + TAB + "int result = 1;" + NL);
-
+
for (GeneratedProperty property : properties) {
String fieldName = property.getName();
builder.append(indent + TAB + "result = prime * result + (("