// ============================================================================
//
// 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.utils;
import org.talend.dataquality.domain.Domain;
import org.talend.dataquality.domain.DomainFactory;
import org.talend.dataquality.domain.pattern.Pattern;
import org.talend.dataquality.indicators.Indicator;
import org.talend.dataquality.indicators.IndicatorParameters;
import org.talend.dataquality.indicators.IndicatorsFactory;
import org.talend.dataquality.indicators.definition.IndicatorCategory;
import org.talend.dataquality.indicators.definition.IndicatorDefinition;
import org.talend.dataquality.indicators.sql.IndicatorSqlFactory;
import org.talend.dataquality.indicators.sql.UserDefIndicator;
import org.talend.dq.helper.UDIHelper;
import org.talend.dq.indicators.definitions.DefinitionHandler;
/**
* DOC xqliu class global comment. Detailled comment
*/
public final class UDIFactory {
private UDIFactory() {
}
public static Indicator createUserDefIndicator(IndicatorDefinition indicatorDefinition) {
UserDefIndicator userDefIndicator = IndicatorSqlFactory.eINSTANCE.createUserDefIndicator();
IndicatorParameters indicParams = IndicatorsFactory.eINSTANCE.createIndicatorParameters();
userDefIndicator.setParameters(indicParams);
userDefIndicator.setName(indicatorDefinition.getName());
return userDefIndicator;
}
@Deprecated
public static Indicator createIndicator(IndicatorDefinition indicatorDefinition) {
IndicatorCategory category = UDIHelper.getUDICategory(indicatorDefinition);
Indicator indicator = null;
if (category != null) {
if (category.equals(DefinitionHandler.getInstance().getUserDefinedCountIndicatorCategory())) {
indicator = IndicatorsFactory.eINSTANCE.createRowCountIndicator();
} else if (category.equals(DefinitionHandler.getInstance().getUserDefinedMatchIndicatorCategory())) {
indicator = IndicatorsFactory.eINSTANCE.createRegexpMatchingIndicator();
} else if (category.equals(DefinitionHandler.getInstance().getUserDefinedFrequencyIndicatorCategory())) {
indicator = IndicatorsFactory.eINSTANCE.createFrequencyIndicator();
}
if (indicator != null) {
IndicatorParameters indicParams = IndicatorsFactory.eINSTANCE.createIndicatorParameters();
indicator.setParameters(indicParams);
indicator.setName(indicatorDefinition.getName());
}
}
return indicator;
}
/**
* DOC xqliu Comment method "createUserDefIndicator".
*
* @param indicatorDefinition
* @param pattern
* @return
*/
public static Indicator createUserDefIndicator(IndicatorDefinition indicatorDefinition, Pattern pattern) {
UserDefIndicator indicator = IndicatorSqlFactory.eINSTANCE.createUserDefIndicator();
IndicatorParameters indicParams = IndicatorsFactory.eINSTANCE.createIndicatorParameters();
Domain validData = DomainFactory.eINSTANCE.createDomain();
validData.getPatterns().add(pattern);
indicParams.setDataValidDomain(validData);
indicator.setParameters(indicParams);
indicator.setName(UDIHelper.getMatchingIndicatorName(indicatorDefinition, pattern));
return indicator;
}
}