View Javadoc

1   /**
2    * Copyright 2005-2012 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.kew.api.document.attribute;
17  
18  import javax.xml.bind.annotation.XmlAccessType;
19  import javax.xml.bind.annotation.XmlAccessorType;
20  import javax.xml.bind.annotation.XmlElement;
21  import javax.xml.bind.annotation.XmlRootElement;
22  import javax.xml.bind.annotation.XmlType;
23  import java.math.BigInteger;
24  
25  /**
26   * A document attribute which contains integer data.  Construct instances of {@code DocumentAttributeInteger} using
27   * it's builder or the {@link DocumentAttributeFactory}.
28   *
29   * @author Kuali Rice Team (rice.collab@kuali.org)
30   */
31  @XmlRootElement(name = DocumentAttributeInteger.Constants.ROOT_ELEMENT_NAME)
32  @XmlAccessorType(XmlAccessType.NONE)
33  @XmlType(name = DocumentAttributeInteger.Constants.TYPE_NAME, propOrder = {
34      DocumentAttributeInteger.Elements.VALUE
35  })
36  public final class DocumentAttributeInteger extends DocumentAttribute {
37  
38      @XmlElement(name = Elements.VALUE, required = false)
39      private final BigInteger value;
40  
41      @SuppressWarnings("unused")
42      private DocumentAttributeInteger() {
43          this.value = null;
44      }
45  
46      private DocumentAttributeInteger(Builder builder) {
47          super(builder.getName());
48          this.value = builder.getValue();
49      }
50  
51      @Override
52      public BigInteger getValue() {
53          return value;
54      }
55  
56      @Override
57      public DocumentAttributeDataType getDataType() {
58          return DocumentAttributeDataType.INTEGER;
59      }
60  
61      /**
62       * A builder implementation which allows for construction of a {@code DocumentAttributeInteger}.
63       */
64      public static final class Builder extends AbstractBuilder<BigInteger> {
65  
66          private Builder(String name) {
67              super(name);
68          }
69  
70          /**
71           * Create a builder for the document attribute using the given attribute name.
72           *
73           * @param name the name of the document attribute which should be built by this builder, should never be a
74           * null or blank value
75           * @return a builder instance initialized with the given attribute name
76           */
77          public static Builder create(String name) {
78              return new Builder(name);
79          }
80  
81          @Override
82          public DocumentAttributeDataType getDataType() {
83              return DocumentAttributeDataType.INTEGER;
84          }
85  
86          @Override
87          public DocumentAttributeInteger build() {
88              return new DocumentAttributeInteger(this);
89          }
90  
91      }
92  
93      /**
94       * Defines some internal constants used on this class.
95       */
96      static class Constants {
97          final static String ROOT_ELEMENT_NAME = "documentAttributeInteger";
98          final static String TYPE_NAME = "DocumentAttributeIntegerType";
99      }
100 
101     /**
102      * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML.
103      */
104     static class Elements {
105         final static String VALUE = "value";
106     }
107 
108 }