/** * <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.MaxValueIndicator; /** * <!-- begin-user-doc --> An implementation of the model object '<em><b>Max Value Indicator</b></em>'. <!-- * end-user-doc --> * <p> * </p> * * @generated */ public class MaxValueIndicatorImpl extends ValueIndicatorImpl implements MaxValueIndicator { boolean isDateType = false; /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated */ protected MaxValueIndicatorImpl() { super(); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated */ @Override protected EClass eStaticClass() { return IndicatorsPackage.Literals.MAX_VALUE_INDICATOR; } /* * (non-Javadoc) * * @see org.talend.dataquality.indicators.impl.ValueIndicatorImpl#getValueType() */ @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 (isGreater(data) || null == this.value) { this.value = String.valueOf(data); if (isDateType) { objValue = data; } } return ok; } /** * DOC scorreia Comment method "isGreater". * * @param data * @return */ private boolean isGreater(Object data) { // MOD xqliu 2009-06-29 bug 7068 try { // MOD qiongli 2011-11-22 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(); } } // MaxValueIndicatorImpl