EMMA Coverage Report (generated Tue Oct 28 00:01:11 GMT 2008)
[all classes][org.joda.time.field]

COVERAGE SUMMARY FOR SOURCE FILE [ScaledDurationField.java]

nameclass, %method, %block, %line, %
ScaledDurationField.java100% (1/1)100% (17/17)100% (212/212)100% (36/36)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ScaledDurationField100% (1/1)100% (17/17)100% (212/212)100% (36/36)
ScaledDurationField (DurationField, DurationFieldType, int): void 100% (1/1)100% (18/18)100% (5/5)
add (long, int): long 100% (1/1)100% (13/13)100% (2/2)
add (long, long): long 100% (1/1)100% (11/11)100% (2/2)
equals (Object): boolean 100% (1/1)100% (33/33)100% (6/6)
getDifference (long, long): int 100% (1/1)100% (9/9)100% (1/1)
getDifferenceAsLong (long, long): long 100% (1/1)100% (10/10)100% (1/1)
getMillis (int): long 100% (1/1)100% (12/12)100% (2/2)
getMillis (int, long): long 100% (1/1)100% (13/13)100% (2/2)
getMillis (long): long 100% (1/1)100% (10/10)100% (2/2)
getMillis (long, long): long 100% (1/1)100% (11/11)100% (2/2)
getScalar (): int 100% (1/1)100% (3/3)100% (1/1)
getUnitMillis (): long 100% (1/1)100% (8/8)100% (1/1)
getValue (long): int 100% (1/1)100% (8/8)100% (1/1)
getValue (long, long): int 100% (1/1)100% (9/9)100% (1/1)
getValueAsLong (long): long 100% (1/1)100% (9/9)100% (1/1)
getValueAsLong (long, long): long 100% (1/1)100% (10/10)100% (1/1)
hashCode (): int 100% (1/1)100% (25/25)100% (5/5)

1/*
2 *  Copyright 2001-2005 Stephen Colebourne
3 *
4 *  Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0
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 */
16package org.joda.time.field;
17 
18import org.joda.time.DurationField;
19import org.joda.time.DurationFieldType;
20 
21/**
22 * Scales a DurationField such that it's unit millis becomes larger in
23 * magnitude.
24 * <p>
25 * ScaledDurationField is thread-safe and immutable.
26 *
27 * @see PreciseDurationField
28 *
29 * @author Brian S O'Neill
30 * @since 1.0
31 */
32public class ScaledDurationField extends DecoratedDurationField {
33 
34    private static final long serialVersionUID = -3205227092378684157L;
35 
36    private final int iScalar;
37 
38    /**
39     * Constructor
40     * 
41     * @param field  the field to wrap, like "year()".
42     * @param type  the type this field will actually use
43     * @param scalar  scalar, such as 100 years in a century
44     * @throws IllegalArgumentException if scalar is zero or one.
45     */
46    public ScaledDurationField(DurationField field, DurationFieldType type, int scalar) {
47        super(field, type);
48        if (scalar == 0 || scalar == 1) {
49            throw new IllegalArgumentException("The scalar must not be 0 or 1");
50        }
51        iScalar = scalar;
52    }
53 
54    public int getValue(long duration) {
55        return getWrappedField().getValue(duration) / iScalar;
56    }
57 
58    public long getValueAsLong(long duration) {
59        return getWrappedField().getValueAsLong(duration) / iScalar;
60    }
61 
62    public int getValue(long duration, long instant) {
63        return getWrappedField().getValue(duration, instant) / iScalar;
64    }
65 
66    public long getValueAsLong(long duration, long instant) {
67        return getWrappedField().getValueAsLong(duration, instant) / iScalar;
68    }
69 
70    public long getMillis(int value) {
71        long scaled = ((long) value) * ((long) iScalar);
72        return getWrappedField().getMillis(scaled);
73    }
74 
75    public long getMillis(long value) {
76        long scaled = FieldUtils.safeMultiply(value, iScalar);
77        return getWrappedField().getMillis(scaled);
78    }
79 
80    public long getMillis(int value, long instant) {
81        long scaled = ((long) value) * ((long) iScalar);
82        return getWrappedField().getMillis(scaled, instant);
83    }
84 
85    public long getMillis(long value, long instant) {
86        long scaled = FieldUtils.safeMultiply(value, iScalar);
87        return getWrappedField().getMillis(scaled, instant);
88    }
89 
90    public long add(long instant, int value) {
91        long scaled = ((long) value) * ((long) iScalar);
92        return getWrappedField().add(instant, scaled);
93    }
94 
95    public long add(long instant, long value) {
96        long scaled = FieldUtils.safeMultiply(value, iScalar);
97        return getWrappedField().add(instant, scaled);
98    }
99 
100    public int getDifference(long minuendInstant, long subtrahendInstant) {
101        return getWrappedField().getDifference(minuendInstant, subtrahendInstant) / iScalar;
102    }
103 
104    public long getDifferenceAsLong(long minuendInstant, long subtrahendInstant) {
105        return getWrappedField().getDifferenceAsLong(minuendInstant, subtrahendInstant) / iScalar;
106    }
107 
108    public long getUnitMillis() {
109        return getWrappedField().getUnitMillis() * iScalar;
110    }
111 
112    //-----------------------------------------------------------------------
113    /**
114     * Returns the scalar applied, in the field's units.
115     * 
116     * @return the scalar
117     */
118    public int getScalar() {
119        return iScalar;
120    }
121 
122    /**
123     * Compares this duration field to another.
124     * Two fields are equal if of the same type and duration.
125     * 
126     * @param obj  the object to compare to
127     * @return if equal
128     */
129    public boolean equals(Object obj) {
130        if (this == obj) {
131            return true;
132        } else if (obj instanceof ScaledDurationField) {
133            ScaledDurationField other = (ScaledDurationField) obj;
134            return (getWrappedField().equals(other.getWrappedField())) &&
135                   (getType() == other.getType()) &&
136                   (iScalar == other.iScalar);
137        }
138        return false;
139    }
140 
141    /**
142     * Gets a hash code for this instance.
143     * 
144     * @return a suitable hashcode
145     */
146    public int hashCode() {
147        long scalar = iScalar;
148        int hash = (int) (scalar ^ (scalar >>> 32));
149        hash += getType().hashCode();
150        hash += getWrappedField().hashCode();
151        return hash;
152    }
153 
154}

[all classes][org.joda.time.field]
EMMA 2.0.5312 (C) Vladimir Roubtsov