/** * Copyright (C) 2019 Adrien Hopkins * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package unitConverter.unit; import unitConverter.dimension.UnitDimension; /** * A unit that is equal to a certain number multiplied by its base. * * @author Adrien Hopkins * @since 2019-01-25 */ public class LinearUnit extends AbstractUnit { /** * The value of one of this unit in this unit's base unit * * @since 2018-12-22 */ private final double conversionFactor; /** * * Creates the {@code LinearUnit}. * * @param base * unit's base * @param conversionFactor * value of one of this unit in its base * @since 2018-12-23 */ LinearUnit(final BaseUnit base, final double conversionFactor) { super(base); this.conversionFactor = conversionFactor; } /** * Creates the {@code LinearUnit} as a base unit. * * @param dimension * dimension measured by unit * @param system * system unit is part of * @since 2019-01-25 */ LinearUnit(final UnitDimension dimension, final UnitSystem system, final double conversionFactor) { super(dimension, system); this.conversionFactor = conversionFactor; } @Override public double convertFromBase(final double value) { return value / this.getConversionFactor(); } @Override public double convertToBase(final double value) { return value * this.getConversionFactor(); } /** * @return conversionFactor * @since 2019-01-25 */ public final double getConversionFactor() { return this.conversionFactor; } @Override public String toString() { return super.toString() + String.format(" (equal to %s * base)", this.getConversionFactor()); } }