Merge branch 'master' of ../controller
[yangtools.git] / yang / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / type / DecimalTypeDefinition.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.yangtools.yang.model.api.type;
9
10 import java.math.BigDecimal;
11 import java.util.Objects;
12
13 /**
14  * Contains methods for getting data from the YANG <code>type</code> substatement for <code>decimal64</code> built-in
15  * type.
16  */
17 public interface DecimalTypeDefinition extends RangeRestrictedTypeDefinition<DecimalTypeDefinition, BigDecimal> {
18     /**
19      * Returns integer between 1 and 18 inclusively.
20      *
21      * <p>
22      * The "fraction-digits" statement controls the size of the minimum
23      * difference between values of a decimal64 type, by restricting the value
24      * space to numbers that are expressible as "i x 10^-n" where n is the
25      * fraction-digits argument.
26      *
27      * @return number of fraction digits
28      */
29     int getFractionDigits();
30
31     static int hashCode(final DecimalTypeDefinition type) {
32         return Objects.hash(type.getPath(), type.getUnknownSchemaNodes(), type.getBaseType(),
33             type.getUnits().orElse(null), type.getDefaultValue().orElse(null), type.getFractionDigits(),
34             type.getRangeConstraint().orElse(null));
35     }
36
37     static boolean equals(final DecimalTypeDefinition type, final Object obj) {
38         if (type == obj) {
39             return true;
40         }
41
42         final DecimalTypeDefinition other = TypeDefinitions.castIfEquals(DecimalTypeDefinition.class, type, obj);
43         return other != null && type.getFractionDigits() == other.getFractionDigits()
44                 && type.getRangeConstraint().equals(other.getRangeConstraint());
45     }
46
47     static String toString(final DecimalTypeDefinition type) {
48         return TypeDefinitions.toStringHelper(type).add("fractionDigits", type.getFractionDigits()).toString();
49     }
50 }