| /* ==================================================================== |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| ==================================================================== */ |
| |
| package org.apache.poi.ss.excelant; |
| |
| import org.apache.poi.ss.excelant.util.ExcelAntEvaluationResult; |
| import org.apache.poi.ss.excelant.util.ExcelAntWorkbookUtil; |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Project; |
| import org.apache.tools.ant.Task; |
| |
| /** |
| * Instances of this class are used to evaluate a single cell. This is usually |
| * after some values have been set. The evaluation is actually performed |
| * by a WorkbookUtil instance. The evaluate() method of the WorkbookUtil |
| * class returns an EvaluationResult which encapsulates the results and |
| * information from the evaluation. |
| * |
| * @author Jon Svede ( jon [at] loquatic [dot] com ) |
| * @author Brian Bush ( brian [dot] bush [at] nrel [dot] gov ) |
| |
| * |
| */ |
| public class ExcelAntEvaluateCell extends Task { |
| |
| private String cell ; |
| private double expectedValue ; |
| private double precision ; |
| private double globalPrecision ; |
| private boolean requiredToPass; |
| |
| |
| private ExcelAntEvaluationResult result ; |
| |
| private ExcelAntWorkbookUtil wbUtil ; |
| |
| private boolean showDelta; |
| |
| |
| public ExcelAntEvaluateCell() {} |
| |
| protected void setWorkbookUtil( ExcelAntWorkbookUtil wb ) { |
| wbUtil = wb ; |
| } |
| |
| public void setShowDelta( boolean value ) { |
| showDelta = value ; |
| } |
| |
| protected boolean showDelta() { |
| return showDelta ; |
| } |
| |
| public void setCell(String cell) { |
| this.cell = cell; |
| } |
| |
| public void setRequiredToPass( boolean val ) { |
| requiredToPass = val ; |
| } |
| |
| protected boolean requiredToPass() { |
| return requiredToPass ; |
| } |
| |
| public void setExpectedValue(double expectedValue) { |
| this.expectedValue = expectedValue; |
| } |
| |
| public void setPrecision(double precision) { |
| this.precision = precision; |
| } |
| |
| protected void setGlobalPrecision( double prec ) { |
| globalPrecision = prec ; |
| } |
| |
| protected String getCell() { |
| return cell; |
| } |
| |
| protected double getExpectedValue() { |
| return expectedValue; |
| } |
| |
| @SuppressWarnings("squid:S4275") |
| protected double getPrecision() { |
| // if there is a globalPrecision we will use it unless there is also |
| // precision set at the evaluate level, then we use that. If there |
| // is not a globalPrecision, we will use the local precision. |
| log( "test precision = " + precision + "\tglobal precision = " + globalPrecision, Project.MSG_VERBOSE ) ; |
| if( globalPrecision > 0 ) { |
| if( precision > 0 ) { |
| log( "Using evaluate precision of " + precision + " over the " + |
| "global precision of " + globalPrecision, Project.MSG_VERBOSE ) ; |
| return precision ; |
| } else { |
| log( "Using global precision of " + globalPrecision, Project.MSG_VERBOSE ) ; |
| return globalPrecision ; |
| } |
| } else { |
| log( "Using evaluate precision of " + precision, Project.MSG_VERBOSE ) ; |
| return precision ; |
| } |
| } |
| |
| @Override |
| public void execute() throws BuildException { |
| result = wbUtil.evaluateCell(cell, expectedValue, getPrecision() ) ; |
| |
| StringBuilder sb = new StringBuilder() ; |
| sb.append( "evaluation of cell " ) ; |
| sb.append( cell ) ; |
| sb.append( " resulted in " ) ; |
| sb.append( result.getReturnValue() ) ; |
| if(showDelta) { |
| sb.append(" with a delta of ").append(result.getDelta()); |
| } |
| |
| log( sb.toString(), Project.MSG_DEBUG) ; |
| |
| } |
| |
| public ExcelAntEvaluationResult getResult() { |
| return result ; |
| } |
| } |