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.Restrictions;
\r
16 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
\r
17 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
\r
18 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
\r
20 public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements
\r
21 GeneratedTOBuilder {
\r
23 private GeneratedTransferObject extendsType;
\r
24 private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
\r
25 private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();
\r
26 private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();
\r
27 private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();
\r
28 private boolean isUnionType = false;
\r
29 private Restrictions restrictions;
\r
30 private GeneratedPropertyBuilder SUID;
\r
32 public GeneratedTOBuilderImpl(String packageName, String name) {
\r
33 super(packageName, name);
\r
38 public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
\r
39 if (genTransObj == null) {
\r
40 throw new IllegalArgumentException("Generated Transfer Object cannot be null!");
\r
42 extendsType = genTransObj;
\r
47 * Add new Method Signature definition for Generated Type Builder and
\r
48 * returns Method Signature Builder for specifying all Method parameters. <br>
\r
49 * Name of Method cannot be <code>null</code>, if it is <code>null</code>
\r
50 * the method SHOULD throw {@link IllegalArgumentException} <br>
\r
51 * By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as
\r
52 * {@link MethodSignatureBuilder#setAbstract(boolean)},
\r
53 * {TypeMemberBuilder#setFinal(boolean)} and
\r
54 * {TypeMemberBuilder#setAccessModifier(boolean)}
\r
58 * @return <code>new</code> instance of Method Signature Builder.
\r
61 public MethodSignatureBuilder addMethod(String name) {
\r
62 final MethodSignatureBuilder builder = super.addMethod(name);
\r
63 builder.setAbstract(false);
\r
68 public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {
\r
69 equalsProperties.add(property);
\r
74 public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {
\r
75 hashProperties.add(property);
\r
80 public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {
\r
81 toStringProperties.add(property);
\r
86 protected GeneratedTOBuilder thisInstance() {
\r
91 public void setRestrictions(Restrictions restrictions) {
\r
92 this.restrictions = restrictions;
\r
96 public void setSUID(GeneratedPropertyBuilder suid) {
\r
101 public GeneratedTransferObject toInstance() {
\r
102 return new GeneratedTransferObjectImpl(this);
\r
106 public String toString() {
\r
107 StringBuilder builder = new StringBuilder();
\r
108 builder.append("GeneratedTransferObject [packageName=");
\r
109 builder.append(getPackageName());
\r
110 builder.append(", name=");
\r
111 builder.append(getName());
\r
112 builder.append(", comment=");
\r
113 builder.append(getComment());
\r
114 builder.append(", constants=");
\r
115 builder.append(getConstants());
\r
116 builder.append(", enumerations=");
\r
117 builder.append(getEnumerations());
\r
118 builder.append(", properties=");
\r
119 builder.append(properties);
\r
120 builder.append(", equalsProperties=");
\r
121 builder.append(equalsProperties);
\r
122 builder.append(", hashCodeProperties=");
\r
123 builder.append(hashProperties);
\r
124 builder.append(", stringProperties=");
\r
125 builder.append(toStringProperties);
\r
126 builder.append(", annotations=");
\r
127 builder.append(getAnnotations());
\r
128 builder.append(", methods=");
\r
129 builder.append(getMethodDefinitions());
\r
130 builder.append("]");
\r
131 return builder.toString();
\r
135 public void setIsUnion(boolean isUnion) {
\r
136 this.isUnionType = isUnion;
\r
139 private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements
\r
140 GeneratedTransferObject {
\r
142 private final List<GeneratedProperty> equalsProperties;
\r
143 private final List<GeneratedProperty> hashCodeProperties;
\r
144 private final List<GeneratedProperty> stringProperties;
\r
145 private final GeneratedTransferObject extendsType;
\r
146 private final boolean isUnionType;
\r
147 private final Restrictions restrictions;
\r
148 private final GeneratedProperty SUID;
\r
150 public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {
\r
152 this.extendsType = builder.extendsType;
\r
153 this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);
\r
154 this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);
\r
155 this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);
\r
156 this.isUnionType = builder.isUnionType;
\r
157 this.restrictions = builder.restrictions;
\r
158 if (builder.SUID == null) {
\r
161 this.SUID = builder.SUID.toInstance(GeneratedTransferObjectImpl.this);
\r
166 public boolean isUnionType() {
\r
167 return isUnionType;
\r
171 public GeneratedTransferObject getSuperType() {
\r
172 return extendsType;
\r
176 public List<GeneratedProperty> getEqualsIdentifiers() {
\r
177 return equalsProperties;
\r
181 public List<GeneratedProperty> getHashCodeIdentifiers() {
\r
182 return hashCodeProperties;
\r
186 public List<GeneratedProperty> getToStringIdentifiers() {
\r
187 return stringProperties;
\r
191 public Restrictions getRestrictions() {
\r
192 return restrictions;
\r
196 public GeneratedProperty getSUID() {
\r
201 public String toString() {
\r
202 StringBuilder builder = new StringBuilder();
\r
203 builder.append("GeneratedTransferObject [packageName=");
\r
204 builder.append(getPackageName());
\r
205 builder.append(", name=");
\r
206 builder.append(getName());
\r
207 builder.append(", comment=");
\r
208 builder.append(", annotations=");
\r
209 builder.append(getAnnotations());
\r
210 builder.append(getComment());
\r
211 builder.append(", extends=");
\r
212 builder.append(getSuperType());
\r
213 builder.append(", implements=");
\r
214 builder.append(getImplements());
\r
215 builder.append(", enclosedTypes=");
\r
216 builder.append(getEnclosedTypes());
\r
217 builder.append(", constants=");
\r
218 builder.append(getConstantDefinitions());
\r
219 builder.append(", enumerations=");
\r
220 builder.append(getEnumerations());
\r
221 builder.append(", properties=");
\r
222 builder.append(getProperties());
\r
223 builder.append(", equalsProperties=");
\r
224 builder.append(equalsProperties);
\r
225 builder.append(", hashCodeProperties=");
\r
226 builder.append(hashCodeProperties);
\r
227 builder.append(", stringProperties=");
\r
228 builder.append(stringProperties);
\r
229 builder.append(", methods=");
\r
230 builder.append(getMethodDefinitions());
\r
231 builder.append("]");
\r
232 return builder.toString();
\r