/* * Copyright 2005-2010 Ignis Software Tools Ltd. All rights reserved. */ package jsystem.extensions.analyzers.csv; import java.text.DecimalFormat; import jsystem.utils.StringUtils; /** * Check average generic analyzer * * @author guy.arieli & ohad.crystal */ public class CheckAverageAnalyzer extends BasicCsvAnalyzer { private double expectedAverage; private double actualAverage = -1; private double deviation = 0.0; private double total = 0.0; private int numberOfLines = 0; private String[] colsToAn = null; /** * @param expectedAvg * @param deviation */ public CheckAverageAnalyzer(double expectedAvg, double deviation, String[] columnsToAnalyze) { super(columnsToAnalyze); this.expectedAverage = expectedAvg; this.deviation = deviation; } /* * (non-Javadoc) * * @see com.aqua.avalanche.analyze.AvalancheCsvAnalyzer#process(java.lang.String[]) */ public void process(String[] toAnalyze) throws Exception { // Accumulate the total value total += Double.parseDouble(toAnalyze[getColumnToAnalyzeIndex()]); // count the number of lines numberOfLines++; } /* * (non-Javadoc) * * @see com.aqua.avalanche.analyze.AvalancheCsvAnalyzer#analyze() */ public void analyze() { title = ""; fileToAnalyze = (String) testAgainst; colsToAn = getColumnsToAnalyze(); StringBuffer buf = new StringBuffer(); String columnToAnalyzeName = colsToAn[getColumnToAnalyzeIndex()]; try { loadFile(); DecimalFormat df = new DecimalFormat("0.00"); actualAverage = total / numberOfLines; buf.append("Analyzed Column: " + columnToAnalyzeName); buf.append("\n"); buf.append("Expected Average: " + expectedAverage); buf.append("\n"); buf.append("Actual Average: " + actualAverage); buf.append("\n"); buf.append("Deviation: " + deviation); if (actualAverage - deviation > expectedAverage || actualAverage + deviation < expectedAverage) { title = "Fail: Average value for " + columnToAnalyzeName + ": " + df.format(actualAverage); status = false; } else { title = "Success: Average value for " + columnToAnalyzeName + ": " + df.format(actualAverage); status = true; } message = buf.toString(); } catch (Exception e) { title = "Fail to process File: " + fileToAnalyze + "...Please check columns to analyze names"; status = false; message = StringUtils.getStackTrace(e); } } /** * @return the actual average without analyzer */ public double getActualAverage() { return actualAverage; } }