EMMA Coverage Report (generated Sun Feb 05 10:43:15 CET 2012)
[all classes][javax.measure.converter]

COVERAGE SUMMARY FOR SOURCE FILE [MultiplyConverter.java]

nameclass, %method, %block, %line, %
MultiplyConverter.java0%   (0/1)0%   (0/7)0%   (0/85)0%   (0/21)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class MultiplyConverter0%   (0/1)0%   (0/7)0%   (0/85)0%   (0/21)
MultiplyConverter (double): void 0%   (0/1)0%   (0/17)0%   (0/5)
concatenate (UnitConverter): UnitConverter 0%   (0/1)0%   (0/36)0%   (0/9)
convert (double): double 0%   (0/1)0%   (0/5)0%   (0/1)
getFactor (): double 0%   (0/1)0%   (0/3)0%   (0/1)
inverse (): UnitConverter 0%   (0/1)0%   (0/8)0%   (0/1)
isLinear (): boolean 0%   (0/1)0%   (0/2)0%   (0/1)
valueOf (double): UnitConverter 0%   (0/1)0%   (0/14)0%   (0/3)

1/*
2 * JScience - Java(TM) Tools and Libraries for the Advancement of Sciences.
3 * Copyright (C) 2006 - JScience (http://jscience.org/)
4 * All rights reserved.
5 * 
6 * Permission to use, copy, modify, and distribute this software is
7 * freely granted, provided that this notice is preserved.
8 */
9package javax.measure.converter;
10 
11/**
12 * <p> This class represents a converter multiplying numeric values by a 
13 *     constant scaling factor (approximated as a <code>double</code>). 
14 *     For exact scaling conversions {@link RationalConverter} is preferred.</p>
15 *      
16 * <p> Instances of this class are immutable.</p>
17 *
18 * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
19 * @version 3.1, April 22, 2006
20 */
21public final class MultiplyConverter extends UnitConverter {
22 
23    /**
24     * Holds the scale factor.
25     */
26    private final double _factor;
27 
28    /**
29     * Creates a multiply converter with the specified scale factor.
30     *
31     * @param  factor the scale factor.
32     * @throws IllegalArgumentException if offset is one (or close to one).
33     */
34    public MultiplyConverter(double factor) {
35        if ((float)factor == 1.0)
36            throw new IllegalArgumentException("Identity converter not allowed");
37        _factor = factor;
38    }
39 
40    /**
41     * Returns the scale factor.
42     *
43     * @return the scale factor.
44     */
45    public double getFactor() {
46        return _factor;
47    }
48 
49    @Override
50    public UnitConverter inverse() {
51        return new MultiplyConverter(1.0 / _factor);
52    }
53 
54    @Override
55    public double convert(double amount) {
56        return _factor * amount;
57    }
58 
59    @Override
60    public boolean isLinear() {
61        return true;
62    }
63 
64    @Override
65    public UnitConverter concatenate(UnitConverter converter) {
66        if (converter instanceof MultiplyConverter) {
67            double factor = _factor * ((MultiplyConverter) converter)._factor;
68            return valueOf(factor);
69        } else if (converter instanceof RationalConverter) {
70            double factor = _factor
71                    * ((RationalConverter) converter).getDividend()
72                    / ((RationalConverter) converter).getDivisor();
73            return valueOf(factor);
74        } else {
75            return super.concatenate(converter);
76        }
77    }
78 
79    private static UnitConverter valueOf(double factor) {
80        float asFloat = (float) factor;
81        return asFloat == 1.0f ? UnitConverter.IDENTITY
82                : new MultiplyConverter(factor);
83    }
84 
85    private static final long serialVersionUID = 1L;
86}

[all classes][javax.measure.converter]
EMMA 2.0.9414 (unsupported private build) (C) Vladimir Roubtsov