/**
*
*/
package org.goko.core.common.measure.units;
import org.goko.core.common.measure.converter.UnitConverter;
import org.goko.core.common.measure.dimension.Dimension;
import org.goko.core.common.measure.quantity.Quantity;
/**
* @author PsyKo
* @date 3 f�vr. 2016
*/
public class ComposedUnit<Q extends Quantity<Q>, T extends Quantity<T>, U extends Quantity<U>> extends AbstractUnit<Q> {
private Unit<T> topUnit;
private Unit<U> bottomUnit;
public ComposedUnit(String symbol, Dimension<Q> dimension, Unit<T> topUnit, Unit<U> bottomUnit) {
super(symbol, dimension);
this.topUnit = topUnit;
this.bottomUnit = bottomUnit;
}
/** (inheritDoc)
* @see org.goko.core.common.measure.units.AbstractUnit#getReferenceUnit()
*/
@Override
protected Unit<Q> getReferenceUnit() {
return null;
}
/** (inheritDoc)
* @see org.goko.core.common.measure.units.Unit#getConverterToReferenceUnit()
*/
@Override
public UnitConverter getConverterToReferenceUnit() {
return bottomUnit.getConverterToReferenceUnit().inverse().then(topUnit.getConverterToReferenceUnit());
}
}