Initial opendaylight infrastructure commit!!
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-model-util / src / main / java / org / opendaylight / controller / model / util / Decimal64.java
1 /*\r
2   * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3   *\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
7   */\r
8 package org.opendaylight.controller.model.util;\r
9 \r
10 import java.math.BigDecimal;\r
11 import java.util.ArrayList;\r
12 import java.util.Collections;\r
13 import java.util.List;\r
14 \r
15 import org.opendaylight.controller.model.api.type.DecimalTypeDefinition;\r
16 import org.opendaylight.controller.model.api.type.RangeConstraint;\r
17 import org.opendaylight.controller.yang.common.QName;\r
18 import org.opendaylight.controller.yang.model.api.ExtensionDefinition;\r
19 import org.opendaylight.controller.yang.model.api.SchemaPath;\r
20 import org.opendaylight.controller.yang.model.api.Status;\r
21 \r
22 public class Decimal64 implements DecimalTypeDefinition {\r
23 \r
24     private final QName name = BaseTypes.constructQName("decimal64");\r
25     private final SchemaPath path;\r
26     private String units = "";\r
27     private BigDecimal defaultValue = null;\r
28 \r
29     private final String description = "The decimal64 type represents a subset of the real numbers, which can "\r
30             + "be represented by decimal numerals.  The value space of decimal64 is the set of numbers that can "\r
31             + "be obtained by multiplying a 64-bit signed integer by a negative power of ten, i.e., expressible as "\r
32             + "'i x 10^-n' where i is an integer64 and n is an integer between 1 and 18, inclusively.";\r
33 \r
34     private final String reference = "https://tools.ietf.org/html/rfc6020#section-9.3";\r
35 \r
36     private final List<RangeConstraint> rangeStatements;\r
37     private final Integer fractionDigits;\r
38 \r
39     public Decimal64(final Integer fractionDigits) {\r
40         super();\r
41         this.fractionDigits = fractionDigits;\r
42         rangeStatements = new ArrayList<RangeConstraint>();\r
43         this.path = BaseTypes.schemaPath(name);\r
44     }\r
45 \r
46     public Decimal64(final List<RangeConstraint> rangeStatements,\r
47             Integer fractionDigits) {\r
48         super();\r
49         this.rangeStatements = rangeStatements;\r
50         this.fractionDigits = fractionDigits;\r
51         this.path = BaseTypes.schemaPath(name);\r
52     }\r
53 \r
54     public Decimal64(final String units, final BigDecimal defaultValue,\r
55             final List<RangeConstraint> rangeStatements,\r
56             final Integer fractionDigits) {\r
57         super();\r
58         this.units = units;\r
59         this.defaultValue = defaultValue;\r
60         this.rangeStatements = rangeStatements;\r
61         this.fractionDigits = fractionDigits;\r
62         this.path = BaseTypes.schemaPath(name);\r
63     }\r
64 \r
65     @Override\r
66     public DecimalTypeDefinition getBaseType() {\r
67         return this;\r
68     }\r
69 \r
70     @Override\r
71     public String getUnits() {\r
72         return units;\r
73     }\r
74 \r
75     @Override\r
76     public Object getDefaultValue() {\r
77         return defaultValue;\r
78     }\r
79 \r
80     @Override\r
81     public QName getQName() {\r
82         return name;\r
83     }\r
84 \r
85     @Override\r
86     public SchemaPath getPath() {\r
87         return path;\r
88     }\r
89 \r
90     @Override\r
91     public String getDescription() {\r
92         return description;\r
93     }\r
94 \r
95     @Override\r
96     public String getReference() {\r
97         return reference;\r
98     }\r
99 \r
100     @Override\r
101     public Status getStatus() {\r
102         return Status.CURRENT;\r
103     }\r
104 \r
105     @Override\r
106     public List<ExtensionDefinition> getExtensionSchemaNodes() {\r
107         return Collections.emptyList();\r
108     }\r
109 \r
110     @Override\r
111     public List<RangeConstraint> getRangeStatements() {\r
112         return rangeStatements;\r
113     }\r
114 \r
115     @Override\r
116     public Integer getFractionDigits() {\r
117         return fractionDigits;\r
118     }\r
119 \r
120     @Override\r
121     public String toString() {\r
122         return Decimal64.class.getSimpleName() + "[qname=" + name\r
123                 + ", fractionDigits=" + fractionDigits + "]";\r
124     }\r
125 }\r