// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.ui.editor.preview.model.states.utils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.talend.dataprofiler.core.ui.editor.preview.ColumnIndicatorUnit;
import org.talend.dataprofiler.core.ui.editor.preview.IndicatorUnit;
import org.talend.dq.analysis.explore.DataExplorer;
import org.talend.dq.analysis.explore.SummaryStastictisExplorer;
import org.talend.dq.indicators.IndicatorCommonUtil;
import org.talend.dq.indicators.preview.table.ChartDataEntity;
import org.talend.dq.nodes.indicator.type.IndicatorEnum;
import org.talend.utils.sql.Java2SqlType;
/**
* created by yyin on 2014-12-2 Detailled comment
*
*/
public class SummaryStatisticsStateUtil {
public SummaryStatisticsStateUtil() {
}
public DataExplorer getDataExplorer(int sqltype) {
if (Java2SqlType.isDateInSQL(sqltype)) {
return null;
}
return new SummaryStastictisExplorer();
}
// TDQ-9140 , if any values = NaN, isMeaning = false, and will not use BAW chart.
private boolean isMeaning = true;
/**
* DOC bZhou Comment method "check".
*
* @param units2
* @return
*/
public Collection<? extends IndicatorUnit> check(List<IndicatorUnit> parameterUnits) {
List<IndicatorUnit> validUnitList = new ArrayList<IndicatorUnit>();
for (IndicatorUnit unit : parameterUnits) {
IndicatorEnum type = unit.getType();
if (type != null && !unit.isExcuted()
&& (type == IndicatorEnum.IQRIndicatorEnum || type == IndicatorEnum.RangeIndicatorEnum)) {
IndicatorCommonUtil.getIndicatorValue(unit.getIndicator());
}
if (unit.getValue() == null) {
isMeaning = false;
}
if (unit.getIndicator().getRealValue() != null && "null".equals(unit.getIndicator().getRealValue())) {//$NON-NLS-1$
continue;
} else {
validUnitList.add(unit);
}
}
return validUnitList;
}
/**
* DOC yyin Comment method "findSqlType".
*
* @param units
*/
public int findSqlType(List<IndicatorUnit> units) {
if (units != null && !units.isEmpty() && units.get(0) instanceof ColumnIndicatorUnit) {
if (((ColumnIndicatorUnit) units.get(0)).getModelElementIndicator() != null) {
return ((ColumnIndicatorUnit) units.get(0)).getModelElementIndicator().getJavaType();
}
}
return Integer.MIN_VALUE;
}
public boolean isMeaning() {
return isMeaning;
}
public void setMeaning(boolean meaning) {
isMeaning = meaning;
}
/**
* DOC yyin Comment method "getUnitValue".
*
* @param unit
* @return
*/
public String getUnitValue(IndicatorUnit unit) {
String value = null;
if (unit.getValue() == null) {
value = String.valueOf(Double.NaN);
setMeaning(false);
} else {
value = unit.getValue().toString();
}
return value;
}
/**
* DOC yyin Comment method "createDataEntity".
*
* @param unit
* @param value
* @return
*/
public ChartDataEntity createDataEntity(IndicatorUnit unit, String value) {
ChartDataEntity entity = new ChartDataEntity();
entity.setIndicator(unit.getIndicator());
entity.setLabel(unit.getIndicatorName());
entity.setValue(value);
return entity;
}
}