package com.processpuzzle.fitnesse.fundamental_types;
import fit.ColumnFixture;
import com.processpuzzle.fundamental_types.domain.ProcessPuzzleParseException;
import com.processpuzzle.fundamental_types.quantity.domain.Quantity;
import com.processpuzzle.fundamental_types.quantity.domain.QuantityHelper;
import com.processpuzzle.fundamental_types.quantity.money.domain.Money;
public class CalculateAdd extends ColumnFixture {
public String quantity1, quantity2, currency1, currency2;
private Quantity money3=null;
public double quantity() throws ProcessPuzzleParseException{
try{
Double d1=new Double(quantity1);
Double d2=new Double(quantity2);
Money money1=new Money(d1,QuantityHelper.unitFinder(currency1));
Money money2=new Money(d2,QuantityHelper.unitFinder(currency2));
Quantity q2=money2.convertTo(QuantityHelper.unitFinder(currency1));
money3=money1.add(q2);
// Formatted return
java.text.DecimalFormat df=new java.text.DecimalFormat("###.##");
try{
return df.parse(df.format(money3.getAmount())).doubleValue();
}catch(java.text.ParseException e ){
throw new ProcessPuzzleParseException(money3.toString(),"Round doubles",e);
}
}catch(NumberFormatException e){
throw new ProcessPuzzleParseException(quantity1+" or "+quantity2,"Double",e);
}
}
public String currency(){
return money3.getUnit().getSymbol();
}
}