package com.processpuzzle.fitnesse.fundamental_types; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.processpuzzle.application.configuration.domain.MeasurementContext; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.fundamental_types.domain.ProcessPuzzleParseException; import com.processpuzzle.fundamental_types.quantity.domain.Unit; import com.processpuzzle.user_session.domain.UserRequestManager; import fit.ColumnFixture; public class CalculateConversionRatio extends ColumnFixture { private static final Logger logger = LoggerFactory.getLogger( CalculateConversionRatio.class ); private ProcessPuzzleContext applicationContext; private MeasurementContext measurementContext; public String from; public String to; public CalculateConversionRatio() { super(); applicationContext = UserRequestManager.getInstance().getApplicationContext(); measurementContext = applicationContext.getMeasurementContext(); logger.debug( "New instance was created with application context:" + applicationContext ); } public double ratio() { Unit fromUnit = null; Unit toUnit = null; try{ fromUnit = measurementContext.findUnitBySymbol( from ); toUnit = measurementContext.findUnitBySymbol( to ); }catch( Exception e ){ e.printStackTrace(); } double d = fromUnit.findConversionRatio( toUnit ); java.text.DecimalFormat df = new java.text.DecimalFormat( "#.######" ); try{ return df.parse( df.format( d ) ).doubleValue(); }catch( java.text.ParseException e ){ throw new ProcessPuzzleParseException( "??", "Round doubles", e ); } } }