Já excluí a BrazilianMetrics. Estou a fim passar a borracha no pacote org.brazilutils.currency, que também só está servindo para confundir.
Pode me enviar os testes de unidade? Por e-mail mesmo.
Estava assim: [code]
public interface VelocityUnits {
Unit KILOMETER_PER_HOUR = new Unit("km/h", new BigDecimal(String.valueOf(1)));
Unit METER_PER_SECOND = new Unit("m/s", new BigDecimal(String.valueOf(0.27777)));
Unit MILES_PER_HOUR = new Unit("mi/h", new BigDecimal(String.valueOf(1.609)));
Unit NAUTIC_MILES_PER_HOUR = new Unit("nmi/h", new BigDecimal(String.valueOf(1.852)));
Unit BASE=KILOMETER_PER_HOUR;
}[/code]
[code]
public class Velocity implements UnitWithValue, VelocityUnits {
private static final long serialVersionUID = 211046785217178583L;
private Unit unit;
private transient BigDecimal value;
private final transient BigDecimal base;
public Velocity(BigDecimal value,Unit unit){
this.base = value.multiply(unit.getValueOnBaseUnit());
this.value = value;
this.unit = unit;
}
public UnitWithValue convertTo(
final Unit unit, final int scale, final int roundingmode) {
return new Area(
base.divide(unit.getValueOnBaseUnit(),scale,roundingmode),
unit);
}
public Unit getUnit(){
return unit;
}
public void setUnit(final Unit u) {
this.unit = u;
this.value = base.divide(unit.getValueOnBaseUnit());
}
public BigDecimal getValue(){
return value;
}
public String toString() {
return getValue().toString();
}
}[/code] Ficou assim: [code]
public class Velocity implements UnitWithValue {
private static final long serialVersionUID = 211046785217178583L;
public static final Unit KILOMETER_PER_HOUR = new Unit("km/h", new BigDecimal(String.valueOf(1)));
public static final Unit METER_PER_SECOND = new Unit("m/s", new BigDecimal(String.valueOf(0.27777)));
public static final Unit MILES_PER_HOUR = new Unit("mi/h", new BigDecimal(String.valueOf(1.609)));
public static final Unit NAUTIC_MILES_PER_HOUR = new Unit("nmi/h", new BigDecimal(String.valueOf(1.852)));
public static final Unit BASE = KILOMETER_PER_HOUR;
private Unit unit;
private transient BigDecimal value;
private final transient BigDecimal base;
public Velocity(BigDecimal value,Unit unit){
this.base = value.multiply(unit.getValueOnBaseUnit());
this.value = value;
this.unit = unit;
}
. . .
}[/code]
Que tal? Acho que não precisa de uma classe de utilidades.
Há 3 classes envolvidas com temperatura: org.brazilutils.metrics.Temperature, org.brazilutils.metrics.TemperatureUnits e org.brazilutils.metrics.conversion.Temperature Excluo as três?
Então já andou fuçando na JSR 275?
Provavelmente a API de métricas da BrazilUtils terá que lidar com a JSR 275. Será uma extensão dessa especificação? De alguma forma as duas API’s terão que se relacionar. Melhor repensar a missão da nossa API de métricas, não?
Pelo que vi, eles já estão pensando em internacionalização. Mas, como você mesmo me disse e como está subentendido na página da JSR 275, eles não irão cobrir todas as unidades de medidas em uso na Terra.
Era assim: [code]
public class Power {
public double hpToWatt(final double energy){
return energy * 745.7;
}
. . .
}[/code] Ficou: [code]
public class Power {
private static final BigDecimal CONSTANT = new BigDecimal("745.7");
public BigDecimal hpToWatt(final BigDecimal energy) {
return energy.multiply(CONSTANT);
}
public BigDecimal hpToWatt(final String energy) {
return hpToWatt(new BigDecimal(energy));
}
. . .
}[/code]
Está de acordo?
CONSTANT é porque não sei qual o nome da constante (magic number, né?). Depois você terá que rever o nome dessa e demais constantes.
Boa sorte com os seus usuários! Quando for a minha vez de apanhar deles, me dê umas dicas para que eu também dispense o Haldol!