/**
* <copyright> </copyright>
*
* $Id$
*/
package org.talend.dataquality.indicators.impl;
import java.util.Date;
import org.eclipse.emf.ecore.EClass;
import org.talend.dataquality.indicators.IndicatorValueType;
import org.talend.dataquality.indicators.IndicatorsPackage;
import org.talend.dataquality.indicators.MinValueIndicator;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Min Value Indicator</b></em>'. <!--
* end-user-doc -->
* <p>
* </p>
*
* @generated
*/
public class MinValueIndicatorImpl extends ValueIndicatorImpl implements MinValueIndicator {
boolean isDateType = false;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected MinValueIndicatorImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return IndicatorsPackage.Literals.MIN_VALUE_INDICATOR;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.ValueIndicatorImpl#getValueType()
*
* @generated NOT
*/
@Override
public IndicatorValueType getValueType() {
// MOD scorreia handle date: bug 5938
if (isDateValue()) {
return IndicatorValueType.DATE_VALUE;
}
return IndicatorValueType.REAL_VALUE;
}
@Override
public boolean handle(Object data) {
boolean ok = super.handle(data);
if (data == null) {
return ok;
}
if (isLess(data) || null == this.value) {
this.value = String.valueOf(data);
if (isDateType) {
objValue = data;
}
}
return ok;
}
/**
* DOC scorreia Comment method "isLess".
*
* @param data
* @return
*/
private boolean isLess(Object data) {
// MOD xqliu 2009-06-29 bug 7068
try {
// MOD qiongli 2011-11-21 TDQ-4033.compare the date type.
if (isDateType) {
if (data == null) {
return false;
}
if (objValue == null) {
objValue = data;
this.value = String.valueOf(data);
return false;
}
Date thisDate = (Date) objValue;
Date dataDate = (Date) data;
if (dataDate.compareTo(thisDate) < 0) {
return true;
}
return false;
}
// ~
double thisValue = Double.valueOf(this.value);
double dataValue = Double.valueOf(data.toString());
return thisValue > dataValue;
} catch (Exception e) {
return false;
}
}
/*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.IndicatorImpl#prepare()
*/
@Override
public boolean prepare() {
this.isDateType = isDateValue();
return super.prepare();
}
} // MinValueIndicatorImpl