Clean Decimal64 up 35/26935/2
authorRobert Varga <rovarga@cisco.com>
Mon, 14 Sep 2015 10:10:48 +0000 (12:10 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 16 Sep 2015 14:19:14 +0000 (14:19 +0000)
Remove proxy fields
Share the default constraints

Change-Id: I3fa1fa735d583e032f3f77a03d0f22e039f65714
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/Decimal64.java

index 8b643568bafa25ed12cf5d5a0e09525f3c5317d0..7e8cb8f31ea1639aecbd9eee0dc1222ce86cc797 100644 (file)
@@ -7,11 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.model.util;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
 import java.math.BigDecimal;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-
+import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -19,8 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
 
-import com.google.common.base.Optional;
-
 /**
  * The <code>default</code> implementation of Decimal Type Definition interface.
  *
@@ -28,8 +27,6 @@ import com.google.common.base.Optional;
  * @see DecimalTypeDefinition
  */
 public final class Decimal64 implements DecimalTypeDefinition {
-    private static final QName NAME = BaseTypes.DECIMAL64_QNAME;
-    private final SchemaPath path;
     private static final String UNITS = "";
     private static final BigDecimal DEFAULT_VALUE = null;
 
@@ -39,10 +36,24 @@ public final class Decimal64 implements DecimalTypeDefinition {
             + "'i x 10^-n' where i is an integer64 and n is an integer between 1 and 18, inclusively.";
 
     private static final String REFERENCE = "https://tools.ietf.org/html/rfc6020#section-9.3";
+    private static final int MAX_NUMBER_OF_FRACTION_DIGITS = 18;
+
+    /**
+     * Immutable List with default definition of Range Statements.
+     */
+    private static final List<RangeConstraint> DEFAULT_RANGE_STATEMENTS;
+    static {
+        final BigDecimal min = new BigDecimal("-922337203685477580.8");
+        final BigDecimal max = new BigDecimal("922337203685477580.7");
+        final String rangeDescription = "Integer values between " + min + " and " + max + ", inclusively.";
+
+        DEFAULT_RANGE_STATEMENTS = ImmutableList.of(BaseConstraints.newRangeConstraint(min, max,
+            Optional.of(rangeDescription), Optional.of("https://tools.ietf.org/html/rfc6020#section-9.2.4")));
+    }
 
     private final List<RangeConstraint> rangeStatements;
     private final Integer fractionDigits;
-    private static final int MAX_NUMBER_OF_FRACTION_DIGITS = 18;
+    private final SchemaPath path;
 
     /**
      * Default Decimal64 Type Constructor. <br>
@@ -71,7 +82,7 @@ public final class Decimal64 implements DecimalTypeDefinition {
                     "The fraction digits outside of boundaries. Fraction digits MUST be integer between 1 and 18 inclusively");
         }
         this.fractionDigits = fractionDigits;
-        rangeStatements = defaultRangeStatements();
+        rangeStatements = DEFAULT_RANGE_STATEMENTS;
         this.path = path;
     }
 
@@ -79,21 +90,6 @@ public final class Decimal64 implements DecimalTypeDefinition {
         return new Decimal64(path, fractionDigits);
     }
 
-    /**
-     * Returns unmodifiable List with default definition of Range Statements.
-     *
-     * @return unmodifiable List with default definition of Range Statements.
-     */
-    private List<RangeConstraint> defaultRangeStatements() {
-        final List<RangeConstraint> rangeStmts = new ArrayList<RangeConstraint>();
-        final BigDecimal min = new BigDecimal("-922337203685477580.8");
-        final BigDecimal max = new BigDecimal("922337203685477580.7");
-        final String rangeDescription = "Integer values between " + min + " and " + max + ", inclusively.";
-        rangeStmts.add(BaseConstraints.newRangeConstraint(min, max, Optional.of(rangeDescription),
-                Optional.of("https://tools.ietf.org/html/rfc6020#section-9.2.4")));
-        return Collections.unmodifiableList(rangeStmts);
-    }
-
     @Override
     public DecimalTypeDefinition getBaseType() {
         return null;
@@ -111,7 +107,7 @@ public final class Decimal64 implements DecimalTypeDefinition {
 
     @Override
     public QName getQName() {
-        return NAME;
+        return BaseTypes.DECIMAL64_QNAME;
     }
 
     @Override
@@ -153,8 +149,8 @@ public final class Decimal64 implements DecimalTypeDefinition {
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((NAME == null) ? 0 : NAME.hashCode());
-        result = prime * result + ((path == null) ? 0 : path.hashCode());
+        result = prime * result + BaseTypes.DECIMAL64_QNAME.hashCode();
+        result = prime * result + Objects.hashCode(path);
         return result;
     }
 
@@ -182,6 +178,7 @@ public final class Decimal64 implements DecimalTypeDefinition {
 
     @Override
     public String toString() {
-        return Decimal64.class.getSimpleName() + "[qname=" + NAME + ", fractionDigits=" + fractionDigits + "]";
+        return Decimal64.class.getSimpleName() + "[qname=" + BaseTypes.DECIMAL64_QNAME + ", fractionDigits="
+                + fractionDigits + "]";
     }
 }