2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
8 package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
\r
10 import java.util.ArrayList;
\r
11 import java.util.List;
\r
13 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
\r
14 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
\r
15 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
\r
16 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
\r
17 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
\r
19 public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements
\r
20 GeneratedTOBuilder {
\r
22 private GeneratedTransferObject extendsType;
\r
23 private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
\r
24 private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();
\r
25 private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();
\r
26 private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();
\r
27 private boolean isUnionType = false;
\r
29 public GeneratedTOBuilderImpl(String packageName, String name) {
\r
30 super(packageName, name);
\r
35 public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
\r
36 if (genTransObj == null) {
\r
37 throw new IllegalArgumentException("Generated Transfer Object cannot be null!");
\r
39 extendsType = genTransObj;
\r
44 * Add new Method Signature definition for Generated Type Builder and
\r
45 * returns Method Signature Builder for specifying all Method parameters. <br>
\r
46 * Name of Method cannot be <code>null</code>, if it is <code>null</code>
\r
47 * the method SHOULD throw {@link IllegalArgumentException} <br>
\r
48 * By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as
\r
49 * {@link MethodSignatureBuilder#setAbstract(boolean)},
\r
50 * {TypeMemberBuilder#setFinal(boolean)} and
\r
51 * {TypeMemberBuilder#setAccessModifier(boolean)}
\r
55 * @return <code>new</code> instance of Method Signature Builder.
\r
58 public MethodSignatureBuilder addMethod(String name) {
\r
59 final MethodSignatureBuilder builder = super.addMethod(name);
\r
60 builder.setAbstract(false);
\r
65 public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {
\r
66 equalsProperties.add(property);
\r
71 public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {
\r
72 hashProperties.add(property);
\r
77 public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {
\r
78 toStringProperties.add(property);
\r
83 protected GeneratedTOBuilder thisInstance() {
\r
88 public GeneratedTransferObject toInstance() {
\r
89 return new GeneratedTransferObjectImpl(this);
\r
93 public String toString() {
\r
94 StringBuilder builder = new StringBuilder();
\r
95 builder.append("GeneratedTransferObject [packageName=");
\r
96 builder.append(getPackageName());
\r
97 builder.append(", name=");
\r
98 builder.append(getName());
\r
99 builder.append(", comment=");
\r
100 builder.append(getComment());
\r
101 builder.append(", constants=");
\r
102 builder.append(getConstants());
\r
103 builder.append(", enumerations=");
\r
104 builder.append(getEnumerations());
\r
105 builder.append(", properties=");
\r
106 builder.append(properties);
\r
107 builder.append(", equalsProperties=");
\r
108 builder.append(equalsProperties);
\r
109 builder.append(", hashCodeProperties=");
\r
110 builder.append(hashProperties);
\r
111 builder.append(", stringProperties=");
\r
112 builder.append(toStringProperties);
\r
113 builder.append(", annotations=");
\r
114 builder.append(getAnnotations());
\r
115 builder.append(", methods=");
\r
116 builder.append(getMethodDefinitions());
\r
117 builder.append("]");
\r
118 return builder.toString();
\r
122 public void setIsUnion(boolean isUnion) {
\r
123 this.isUnionType = isUnion;
\r
126 private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements
\r
127 GeneratedTransferObject {
\r
129 private final List<GeneratedProperty> equalsProperties;
\r
130 private final List<GeneratedProperty> hashCodeProperties;
\r
131 private final List<GeneratedProperty> stringProperties;
\r
132 private final GeneratedTransferObject extendsType;
\r
133 private final boolean isUnionType;
\r
135 public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {
\r
137 this.extendsType = builder.extendsType;
\r
138 this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);
\r
139 this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);
\r
140 this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);
\r
141 this.isUnionType = builder.isUnionType;
\r
145 public boolean isUnionType() {
\r
146 return isUnionType;
\r
150 public GeneratedTransferObject getSuperType() {
\r
151 return extendsType;
\r
155 public List<GeneratedProperty> getEqualsIdentifiers() {
\r
156 return equalsProperties;
\r
160 public List<GeneratedProperty> getHashCodeIdentifiers() {
\r
161 return hashCodeProperties;
\r
165 public List<GeneratedProperty> getToStringIdentifiers() {
\r
166 return stringProperties;
\r
170 public String toString() {
\r
171 StringBuilder builder = new StringBuilder();
\r
172 builder.append("GeneratedTransferObject [packageName=");
\r
173 builder.append(getPackageName());
\r
174 builder.append(", name=");
\r
175 builder.append(getName());
\r
176 builder.append(", comment=");
\r
177 builder.append(", annotations=");
\r
178 builder.append(getAnnotations());
\r
179 builder.append(getComment());
\r
180 builder.append(", extends=");
\r
181 builder.append(getSuperType());
\r
182 builder.append(", implements=");
\r
183 builder.append(getImplements());
\r
184 builder.append(", enclosedTypes=");
\r
185 builder.append(getEnclosedTypes());
\r
186 builder.append(", constants=");
\r
187 builder.append(getConstantDefinitions());
\r
188 builder.append(", enumerations=");
\r
189 builder.append(getEnumerations());
\r
190 builder.append(", properties=");
\r
191 builder.append(getProperties());
\r
192 builder.append(", equalsProperties=");
\r
193 builder.append(equalsProperties);
\r
194 builder.append(", hashCodeProperties=");
\r
195 builder.append(hashCodeProperties);
\r
196 builder.append(", stringProperties=");
\r
197 builder.append(stringProperties);
\r
198 builder.append(", methods=");
\r
199 builder.append(getMethodDefinitions());
\r
200 builder.append("]");
\r
201 return builder.toString();
\r