package com.processpuzzle.fitnesse.fundamental_types; import com.processpuzzle.application.configuration.domain.MeasurementContext; import com.processpuzzle.fundamental_types.domain.ProcessPuzzleParseException; import com.processpuzzle.fundamental_types.quantity.domain.TimeUnit; import com.processpuzzle.user_session.domain.UserRequestManager; import fit.ColumnFixture; public class CalculateConvert extends ColumnFixture{ public String timeQuantity; public String timeunit1; public String timeunit2; public CalculateConvert() { } public double convert(){ TimeUnit from=null; TimeUnit to=null; Double quantity=null; try { quantity=new Double(timeQuantity); }catch(Exception e){ } try{ MeasurementContext measurementContext = UserRequestManager.getInstance().getApplicationContext().getMeasurementContext(); from = (TimeUnit) measurementContext.findUnitBySymbol(timeunit1); to = (TimeUnit) measurementContext.findUnitBySymbol(timeunit2); double d=quantity.doubleValue()*from.findConversionRatio(to); // 0.9-tol egeszre kerekitunk if (Math.abs(Math.rint(d)-d)<=0.1) d=Math.rint(d); 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); } } catch (Exception e) { //e.printStackTrace(); throw new ProcessPuzzleParseException(timeunit1+"->"+timeunit2,"Converting units",e); } } public String timeunit(){ try{ MeasurementContext measurementContext = UserRequestManager.getInstance().getApplicationContext().getMeasurementContext(); TimeUnit to=(TimeUnit) measurementContext.findUnitBySymbol(timeunit2); return to.getSymbol().toString(); }catch(Exception e){ throw new ProcessPuzzleParseException(timeunit2,"Looking for time unit",e); } } }