protected static String evaluateStringArg(ValueEval eval, int srcRow, int srcCol) throws EvaluationException { ValueEval ve = OperandResolver.getSingleValue(eval, srcRow, srcCol); return OperandResolver.coerceValueToString(ve); } protected static int evaluateIntArg(ValueEval arg, int srcCellRow, int srcCellCol) throws EvaluationException {
/** * * * @param nameValueEval Must not be a RefEval or AreaEval. Thus make sure resolveReference() is called on the value first! * @param db Database * @return Corresponding column number. * @throws EvaluationException If it's not possible to turn all headings into strings. */ private static int getColumnForName(ValueEval nameValueEval, AreaEval db) throws EvaluationException { String name = OperandResolver.coerceValueToString(nameValueEval); return getColumnForString(db, name); }
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval numberVE) { String octal = OperandResolver.coerceValueToString(numberVE); try { return new NumberEval(BaseNumberUtils.convertToDecimal(octal, OCTAL_BASE, MAX_NUMBER_OF_PLACES)); } catch (IllegalArgumentException e) { return ErrorEval.NUM_ERROR; } }
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval textArg) { ValueEval veText1; try { veText1 = OperandResolver.getSingleValue(textArg, srcRowIndex, srcColumnIndex); } catch (EvaluationException e) { return e.getErrorEval(); } String text = OperandResolver.coerceValueToString(veText1); if (text.length() == 0) { return ErrorEval.VALUE_INVALID; } int code = text.charAt(0); return new StringEval(String.valueOf(code)); } }
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval numberVE) { final String hex; if (numberVE instanceof RefEval) { RefEval re = (RefEval) numberVE; hex = OperandResolver.coerceValueToString(re.getInnerValueEval(re.getFirstSheetIndex())); } else { hex = OperandResolver.coerceValueToString(numberVE); } try { return new NumberEval(BaseNumberUtils.convertToDecimal(hex, HEXADECIMAL_BASE, MAX_NUMBER_OF_PLACES)); } catch (IllegalArgumentException e) { return ErrorEval.NUM_ERROR; } }
@Override public ValueEval getResult() { if(result == null) { return ErrorEval.VALUE_INVALID; } else if(result instanceof BlankEval) { return ErrorEval.VALUE_INVALID; } else try { if(OperandResolver.coerceValueToString(OperandResolver.getSingleValue(result, 0, 0)).isEmpty()) { return ErrorEval.VALUE_INVALID; } else { return result; } } catch (EvaluationException e) { return e.getErrorEval(); } } }
/** * For a given database returns the column number for a column heading. * * @param db Database. * @param name Column heading. * @return Corresponding column number. * @throws EvaluationException If it's not possible to turn all headings into strings. */ private static int getColumnForString(AreaEval db,String name) throws EvaluationException { int resultColumn = -1; final int width = db.getWidth(); for(int column = 0; column < width; ++column) { ValueEval columnNameValueEval = resolveReference(db, 0, column); if(columnNameValueEval instanceof BlankEval) { continue; } if(columnNameValueEval instanceof ErrorEval) { continue; } String columnName = OperandResolver.coerceValueToString(columnNameValueEval); if(name.equals(columnName)) { resultColumn = column; break; } } return resultColumn; }
return e.getErrorEval(); String iNumber = OperandResolver.coerceValueToString(veText1);
return e.getErrorEval(); String iNumber = OperandResolver.coerceValueToString(veText1);
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval text, ValueEval number_times) { ValueEval veText1; try { veText1 = OperandResolver.getSingleValue(text, srcRowIndex, srcColumnIndex); } catch (EvaluationException e) { return e.getErrorEval(); } String strText1 = OperandResolver.coerceValueToString(veText1); double numberOfTime = 0; try { numberOfTime = OperandResolver.coerceValueToDouble(number_times); } catch (EvaluationException e) { return ErrorEval.VALUE_INVALID; } int numberOfTimeInt = (int)numberOfTime; StringBuffer strb = new StringBuffer(strText1.length() * numberOfTimeInt); for(int i = 0; i < numberOfTimeInt; i++) { strb.append(strText1); } if (strb.toString().length() > 32767) { return ErrorEval.VALUE_INVALID; } return new StringEval(strb.toString()); } }
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg1, ValueEval arg2) { ValueEval veText1; try { veText1 = OperandResolver.getSingleValue(arg1, srcRowIndex, srcColumnIndex); } catch (EvaluationException e) { return e.getErrorEval(); } String strText1 = OperandResolver.coerceValueToString(veText1); Double number1 = OperandResolver.parseDouble(strText1); if (number1 == null) { return ErrorEval.VALUE_INVALID; } ValueEval veText2; try { veText2 = OperandResolver.getSingleValue(arg2, srcRowIndex, srcColumnIndex); } catch (EvaluationException e) { return e.getErrorEval(); } String strText2 = OperandResolver.coerceValueToString(veText2); Double number2 = OperandResolver.parseDouble(strText2); if (number2 == null) { return ErrorEval.VALUE_INVALID; } int result = new BigDecimal(number1.doubleValue()).compareTo(new BigDecimal(number2.doubleValue())); return result == 0 ? ONE : ZERO; }
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0) { ValueEval veText; try { veText = OperandResolver.getSingleValue(arg0, srcRowIndex, srcColumnIndex); } catch (EvaluationException e) { return e.getErrorEval(); } String strText = OperandResolver.coerceValueToString(veText); Double result = convertTextToNumber(strText); if (result == null) { return ErrorEval.VALUE_INVALID; } return new NumberEval(result.doubleValue()); }
if (numberVE instanceof RefEval) { RefEval re = (RefEval) numberVE; number = OperandResolver.coerceValueToString(re.getInnerValueEval(re.getFirstSheetIndex())); } else { number = OperandResolver.coerceValueToString(numberVE);
return e.getErrorEval(); String strText1 = OperandResolver.coerceValueToString(veText1); Double number = OperandResolver.parseDouble(strText1); return e.getErrorEval(); String placesStr = OperandResolver.coerceValueToString(placesValueEval); Double placesNumberDouble = OperandResolver.parseDouble(placesStr);
return e.getErrorEval(); String strText1 = OperandResolver.coerceValueToString(veText1); Double number1 = OperandResolver.parseDouble(strText1); return e.getErrorEval(); String placesStr = OperandResolver.coerceValueToString(placesValueEval); Double placesNumberDouble = OperandResolver.parseDouble(placesStr);
return testNumericCondition(value, operator.equal, stringOrNumber); } else { // It's a string. String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); return stringOrNumber.equals(valueString); String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); return valueString.startsWith(conditionString);
String suffixValue = OperandResolver.coerceValueToString(suffix); if (suffixValue.length() == 0) { suffixValue = DEFAULT_SUFFIX;
if(args.length == 5){ ValueEval ve = OperandResolver.getSingleValue(args[4], srcRowIndex, srcColumnIndex); sheetName = ve == MissingArgEval.instance ? null : OperandResolver.coerceValueToString(ve); } else { sheetName = null;
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) { if (args.length < 1) { return ErrorEval.VALUE_INVALID; } boolean isA1style; String text; try { ValueEval ve = OperandResolver.getSingleValue(args[0], ec.getRowIndex(), ec .getColumnIndex()); text = OperandResolver.coerceValueToString(ve); switch (args.length) { case 1: isA1style = true; break; case 2: isA1style = evaluateBooleanArg(args[1], ec); break; default: return ErrorEval.VALUE_INVALID; } } catch (EvaluationException e) { return e.getErrorEval(); } return evaluateIndirect(ec, text, isA1style); }
if(OperandResolver.coerceValueToString(condition).isEmpty()) { throw new EvaluationException(ErrorEval.VALUE_INVALID);