Enable checkstyle in mdsal-binding-generator-api
[mdsal.git] / binding / mdsal-binding-generator-api / src / main / java / org / opendaylight / mdsal / binding / model / api / type / builder / GeneratedTOBuilder.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.binding.model.api.type.builder;
9
10 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
11 import org.opendaylight.mdsal.binding.model.api.Restrictions;
12 import org.opendaylight.yangtools.concepts.Builder;
13 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
14
15 /**
16  * Generated Transfer Object Builder is interface that contains methods to build
17  * and instantiate Generated Transfer Object definition.
18  *
19  * @see GeneratedTransferObject
20  */
21 public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase<GeneratedTOBuilder>,
22         Builder<GeneratedTransferObject> {
23
24     /**
25      * Add Generated Transfer Object from which will be extended current Generated Transfer Object.<br>
26      * By definition Java does not allow multiple inheritance, hence if there is already a definition
27      * of an Generated Transfer Object the extending object will be overwritten by lastly added Generated Transfer
28      * Object.<br>
29      * If Generated Transfer Object is <code>null</code> the method SHOULD throw {@link IllegalArgumentException}
30      *
31      * @param genTransObj Generated Transfer Object
32      * @return This instance of builder
33      */
34     GeneratedTOBuilder setExtendsType(GeneratedTransferObject genTransObj);
35
36     /**
37      * Add Property that will be part of <code>equals</code> definition. <br>
38      * If Generated Property Builder is <code>null</code> the method SHOULD
39      * throw {@link IllegalArgumentException}
40      *
41      * @param property Generated Property Builder
42      * @return This instance of builder
43      */
44     GeneratedTOBuilder addEqualsIdentity(GeneratedPropertyBuilder property);
45
46     /**
47      * Add Property that will be part of <code>hashCode</code> definition. <br>
48      * If Generated Property Builder is <code>null</code> the method SHOULD
49      * throw {@link IllegalArgumentException}
50      *
51      * @param property Generated Property Builder
52      * @return This instance of builder
53      */
54     GeneratedTOBuilder addHashIdentity(GeneratedPropertyBuilder property);
55
56     /**
57      * Add Property that will be part of <code>toString</code> definition. <br>
58      * If Generated Property Builder is <code>null</code> the method SHOULD
59      * throw {@link IllegalArgumentException}
60      *
61      * @param property Generated Property Builder
62      * @return This instance of builder
63      */
64     GeneratedTOBuilder addToStringProperty(GeneratedPropertyBuilder property);
65
66     void setRestrictions(Restrictions restrictions);
67
68     /**
69      * Returns instance of <code>GeneratedTransferObject</code> which data are build from the data of this builder.
70      *
71      * @return generated transfer object instance
72      */
73     @Override
74     GeneratedTransferObject build();
75
76     void setTypedef(boolean isTypedef);
77
78     /**
79      * Sets the base type for Java representation of YANG typedef.
80      *
81      * @param typeDef Type Definition
82      */
83     void setBaseType(TypeDefinition<?> typeDef);
84
85     boolean isUnion();
86
87     /**
88      * Sets the union flag.
89      *
90      * @param isUnion true if the result is a union type.
91      */
92     void setIsUnion(boolean isUnion);
93
94     void setIsUnionBuilder(boolean isUnionTypeBuilder);
95
96     void setSUID(GeneratedPropertyBuilder suid);
97 }