package org.talend.dataquality.indicators.impl;
import java.util.List;
import org.apache.commons.lang.math.NumberUtils;
import org.eclipse.emf.ecore.EClass;
import org.talend.dataquality.indicators.IndicatorsPackage;
import org.talend.dataquality.indicators.MeanIndicator;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Mean Indicator</b></em>'. <!-- end-user-doc -->
* <p>
* </p>
*
* @generated
*/
public class MeanIndicatorImpl extends SumIndicatorImpl implements MeanIndicator {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
protected MeanIndicatorImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return IndicatorsPackage.Literals.MEAN_INDICATOR;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated NOT
*/
public Double getMean() {
Long c = getCount(); // - getNullCount(); MOD scorreia removed in order to fix bug 10222
if (c.compareTo(0L) == 0) {
// MOD yyi 2010-04-13 10549: Cannot save analysis data into database because of NumberFormatException
return Double.NaN;
}
// MOD xqliu 2009-06-29 bug 7068
Double sum = null;
try {
sum = Double.valueOf(getSumStr());
} catch (Exception e) {
// do not return 0 otherwise the user will believe that the mean is 0
return Double.NaN;
}
// ~
if (sum == null) {
throw new RuntimeException("Invalid sum in mean computation!!");
}
return sum / c;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.IndicatorImpl#getIntegerValue()
*
* ADDED yyi 2010-04-20 getIntegerValue()
*/
@Override
public Long getIntegerValue() {
return this.getMean().longValue();
}
/*
* ADDED
*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.IntegerSumIndicatorImpl#handle(java.lang.Object)
*/
@Override
public boolean handle(Object data) {
if (data == null) {
nullCount++;
} else {
// TDQ-4936 ADD mzhao mean count should not include null count.
count++;
}
Boolean handleStatus = handleGenericSum(data);
return handleStatus;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public Double getMeanWithNulls(double valueForNull) {
// TODO: implement this method
// Ensure that you remove @generated or mark it @generated NOT
throw new UnsupportedOperationException();
}
/*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.IndicatorImpl#storeSqlResults(java.util.List)
*
* ADDED scorreia 2008-05-02 storeSqlResults(List<Object[]> objects)
*/
@Override
public boolean storeSqlResults(List<Object[]> objects) {
if (!checkResults(objects, 2)) {
return false;
}
String s = String.valueOf(objects.get(0)[0]);
String c = String.valueOf(objects.get(0)[1]);
if (!NumberUtils.isNumber(s)) {
s = "0";
}
if (!NumberUtils.isNumber(c)) {
c = "0";
}
this.setSumStr(s);
this.setCount(Long.valueOf(c));
return true;
}
/*
* (non-Javadoc)
*
* ADDED
*
* @see org.talend.dataquality.indicators.impl.SumIndicatorImpl#toString()
*/
@Override
public String toString() {
return "Mean = " + getMean();
}
} // MeanIndicatorImpl