Object sum = null;
Object expResult = this._exp.evaluate();
if (!(expResult instanceof java.util.List))
{
logger.severe(Thread.currentThread().getName()+" "+"result of expression is not of type List");
throw new SPLException(Messages.getString(
"SPL_NOT_REQUIRED_EXP_EXCEPTION_MSG",
new Object[] { "List" }));
}
ArrayList resultArray = (ArrayList) expResult;
Integer count = new Integer(resultArray.size());
//System.out.println("resultArray size " + resultArray.size() + " to string " + resultArray.toString());
////System.out.println("resultArray is of type "+expression.getType());
if ((resultArray != null) && (!resultArray.isEmpty()))
{
Iterator resultIt = resultArray.iterator();
while (resultIt.hasNext())
{
Object resultObject = resultIt.next();
//System.out.println("resultObject,class " + resultObject + " " + resultObject.getClass());
if (sum == null)
{
sum = resultObject;
}
else
{
//System.out .println("Adding resultObject to SdInCollection is " + resultObject + " " + sum);
sum = ExpressionUtility.plus((Number) sum,
(Number) resultObject);
}
Object square = ExpressionUtility.multiplication(
(Number) resultObject, (Number) resultObject);
if (squareSum == null)
{
squareSum = square;
}
else
{
//System.out .println("Adding resultObject to SdInCollection is "+ resultObject + " " + sum);
squareSum = ExpressionUtility.plus((Number) square,
(Number) squareSum);
}
}
double mean = ((Number) sum).doubleValue() / resultArray.size();
Number squareSumByCount = ExpressionUtility.division(
(Number) squareSum, (Number) count);
Double meanSquare = new Double(mean * mean);
Number subtractionResult = ExpressionUtility.minus(
squareSumByCount, (Number) meanSquare);
//System.out.println("current SdInCollection is "+ Math.sqrt(subtractionResult.doubleValue()));
Number result = new Double(Math.sqrt(subtractionResult.doubleValue()));
logger.exiting(sourceClass,Thread.currentThread().getName()+" "+ "evaluate" + result);
return result;
}
else
{
logger.severe(Thread.currentThread().getName()+" "+"result Array is empty");
throw new SPLException(Messages.getString(
"SPL_BLANK_EXPRESSION_PASSED_ERROR_MSG",
new Object[] { "expression" }));
}
}