1 9 package javax.measure.converters; 10 11 12 21 public final class AddConverter extends UnitConverter { 22 23 26 private final double _offset; 27 28 34 public AddConverter(double offset) { 35 if ((float)offset == 0.0) 36 throw new IllegalArgumentException ("Identity converter not allowed"); 37 _offset = offset; 38 } 39 40 45 public double getOffset() { 46 return _offset; 47 } 48 49 @Override 50 public UnitConverter inverse() { 51 return new AddConverter(- _offset); 52 } 53 54 @Override 55 public double convert(double amount) { 56 return amount + _offset; 57 } 58 59 @Override 60 public boolean isLinear() { 61 return false; 62 } 63 64 @Override 65 public boolean equals(Object obj) { 66 if (!(obj instanceof AddConverter)) return false; 67 AddConverter ac = (AddConverter) obj; 68 return (float)_offset == (float) ac._offset; 69 } 70 71 @Override 72 public int hashCode() { 73 int h = Float.floatToIntBits((float)_offset); 74 h += ~(h << 9); 75 h ^= (h >>> 14); 76 h += (h << 4); 77 return h ^ (h >>> 10); 78 } 79 80 @Override 81 public UnitConverter concatenate(UnitConverter converter) { 82 if (converter instanceof AddConverter) { 83 double offset = _offset + ((AddConverter)converter)._offset; 84 return valueOf(offset); 85 } else { 86 return super.concatenate(converter); 87 } 88 } 89 90 private static UnitConverter valueOf(double offset) { 91 float asFloat = (float) offset; 92 return asFloat == 0.0f ? UnitConverter.IDENTITY : new AddConverter(offset); 93 } 94 95 private static final long serialVersionUID = 1L; 96 } | Popular Tags |