/**
* <copyright> </copyright>
*
* $Id$
*/
package org.talend.dataquality.indicators.impl;
import org.eclipse.emf.ecore.EClass;
import org.talend.dataquality.indicators.IndicatorParameters;
import org.talend.dataquality.indicators.IndicatorsPackage;
import org.talend.dataquality.indicators.MaxLengthIndicator;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Max Length Indicator</b></em>'. <!--
* end-user-doc -->
* <p>
* </p>
*
* @generated
*/
public class MaxLengthIndicatorImpl extends LengthIndicatorImpl implements MaxLengthIndicator {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
protected MaxLengthIndicatorImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return IndicatorsPackage.Literals.MAX_LENGTH_INDICATOR;
}
/*
* (non-Javadoc) ADDED scorreia 2008-04-08 compute max length
*
* @see org.talend.dataquality.indicators.impl.IndicatorImpl#handle(java.lang.Object)
*/
@Override
public boolean handle(Object data) {
boolean ok = super.handle(data);
if (data != null) {
String str = (String) data;
final int strLength = str.length();
if (strLength > 0) {
if ((length == LENGTH_EDEFAULT || length.intValue() == strLength)) {
length = Long.valueOf(strLength);
if (this.checkMustStoreCurrentRow()) {
mustStoreRow = true;
}
} else if (length.intValue() < strLength) {
changeLength(strLength);
if (this.checkMustStoreCurrentRow()) {
mustStoreRow = true;
}
}
}
}
return ok;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataquality.indicators.impl.LengthIndicatorImpl#getParameters()
*/
@Override
public IndicatorParameters getParameters() {
parameters = super.getParameters();
parameters.getTextParameter().setUseNulls(false);
parameters.getTextParameter().setUseBlank(false);
return parameters;
}
protected void zeroIsMax() {
// first data is zero
if (length == LENGTH_EDEFAULT) {
length = 0L;
}
if (length == 0 && this.checkMustStoreCurrentRow()) {
mustStoreRow = true;
}
}
} // MaxLengthIndicatorImpl