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 org.opendaylight.yangtools.sal.binding.model.api.*;
\r
11 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.*;
\r
13 import java.util.ArrayList;
\r
14 import java.util.List;
\r
16 public final class GeneratedTOBuilderImpl extends AbstractGeneratedTypeBuilder<GeneratedTOBuilder> implements GeneratedTOBuilder {
\r
18 private GeneratedTransferObject extendsType;
\r
19 private final List<GeneratedPropertyBuilder> properties = new ArrayList<>();
\r
20 private final List<GeneratedPropertyBuilder> equalsProperties = new ArrayList<>();
\r
21 private final List<GeneratedPropertyBuilder> hashProperties = new ArrayList<>();
\r
22 private final List<GeneratedPropertyBuilder> toStringProperties = new ArrayList<>();
\r
23 private boolean isUnionType = false;
\r
25 public GeneratedTOBuilderImpl(String packageName, String name) {
\r
26 super(packageName, name);
\r
31 public GeneratedTOBuilder setExtendsType(final GeneratedTransferObject genTransObj) {
\r
32 if (genTransObj == null) {
\r
33 throw new IllegalArgumentException("Generated Transfer Object cannot be null!");
\r
35 extendsType = genTransObj;
\r
42 * Add new Method Signature definition for Generated Type Builder and
\r
43 * returns Method Signature Builder for specifying all Method parameters. <br>
\r
44 * Name of Method cannot be <code>null</code>, if it is <code>null</code>
\r
45 * the method SHOULD throw {@link IllegalArgumentException} <br>
\r
46 * By <i>Default</i> the MethodSignatureBuilder SHOULD be pre-set as
\r
47 * {@link MethodSignatureBuilder#setAbstract(false)},
\r
48 * {@link MethodSignatureBuilder#setFinal(false)} and
\r
49 * {@link MethodSignatureBuilder#setAccessModifier(PUBLIC)}
\r
53 * @return <code>new</code> instance of Method Signature Builder.
\r
56 public MethodSignatureBuilder addMethod(String name) {
\r
57 final MethodSignatureBuilder builder = super.addMethod(name);
\r
58 builder.setAbstract(false);
\r
63 public GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property) {
\r
64 equalsProperties.add(property);
\r
69 public GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property) {
\r
70 hashProperties.add(property);
\r
75 public GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property) {
\r
76 toStringProperties.add(property);
\r
81 protected GeneratedTOBuilder thisInstance() {
\r
86 public GeneratedTransferObject toInstance() {
\r
87 return new GeneratedTransferObjectImpl(this);
\r
91 public String toString() {
\r
92 StringBuilder builder = new StringBuilder();
\r
93 builder.append("GeneratedTransferObject [packageName=");
\r
94 builder.append(getPackageName());
\r
95 builder.append(", name=");
\r
96 builder.append(getName());
\r
97 builder.append(", comment=");
\r
98 builder.append(getComment());
\r
99 builder.append(", constants=");
\r
100 builder.append(getConstants());
\r
101 builder.append(", enumerations=");
\r
102 builder.append(getEnumerations());
\r
103 builder.append(", properties=");
\r
104 builder.append(properties);
\r
105 builder.append(", equalsProperties=");
\r
106 builder.append(equalsProperties);
\r
107 builder.append(", hashCodeProperties=");
\r
108 builder.append(hashProperties);
\r
109 builder.append(", stringProperties=");
\r
110 builder.append(toStringProperties);
\r
111 builder.append(", annotations=");
\r
112 builder.append(getAnnotations());
\r
113 builder.append(", methods=");
\r
114 builder.append(getMethodDefinitions());
\r
115 builder.append("]");
\r
116 return builder.toString();
\r
120 public void setIsUnion(boolean isUnion) {
\r
121 this.isUnionType = isUnion;
\r
124 private static final class GeneratedTransferObjectImpl extends AbstractGeneratedType implements
\r
125 GeneratedTransferObject {
\r
127 private final List<GeneratedProperty> equalsProperties;
\r
128 private final List<GeneratedProperty> hashCodeProperties;
\r
129 private final List<GeneratedProperty> stringProperties;
\r
130 private final GeneratedTransferObject extendsType;
\r
131 private final boolean isUnionType;
\r
133 public GeneratedTransferObjectImpl(GeneratedTOBuilderImpl builder) {
\r
135 this.extendsType = builder.extendsType;
\r
136 this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties);
\r
137 this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties);
\r
138 this.stringProperties = toUnmodifiableProperties(builder.toStringProperties);
\r
139 this.isUnionType = builder.isUnionType;
\r
143 public boolean isUnionType() {
\r
144 return isUnionType;
\r
147 public GeneratedTransferObject getSuperType() {
\r
148 return extendsType;
\r
152 public List<GeneratedProperty> getEqualsIdentifiers() {
\r
153 return equalsProperties;
\r
157 public List<GeneratedProperty> getHashCodeIdentifiers() {
\r
158 return hashCodeProperties;
\r
162 public List<GeneratedProperty> getToStringIdentifiers() {
\r
163 return stringProperties;
\r
167 public String toString() {
\r
168 StringBuilder builder = new StringBuilder();
\r
169 builder.append("GeneratedTransferObject [packageName=");
\r
170 builder.append(getPackageName());
\r
171 builder.append(", name=");
\r
172 builder.append(getName());
\r
173 builder.append(", comment=");
\r
174 builder.append(", annotations=");
\r
175 builder.append(getAnnotations());
\r
176 builder.append(getComment());
\r
177 builder.append(", extends=");
\r
178 builder.append(getSuperType());
\r
179 builder.append(", implements=");
\r
180 builder.append(getImplements());
\r
181 builder.append(", enclosedTypes=");
\r
182 builder.append(getEnclosedTypes());
\r
183 builder.append(", constants=");
\r
184 builder.append(getConstantDefinitions());
\r
185 builder.append(", enumerations=");
\r
186 builder.append(getEnumerations());
\r
187 builder.append(", properties=");
\r
188 builder.append(getProperties());
\r
189 builder.append(", equalsProperties=");
\r
190 builder.append(equalsProperties);
\r
191 builder.append(", hashCodeProperties=");
\r
192 builder.append(hashCodeProperties);
\r
193 builder.append(", stringProperties=");
\r
194 builder.append(stringProperties);
\r
195 builder.append(", methods=");
\r
196 builder.append(getMethodDefinitions());
\r
197 builder.append("]");
\r
198 return builder.toString();
\r