// ============================================================================
//
// 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.dqrule;
import org.talend.cwm.dependencies.DependenciesHandler;
import org.talend.dataprofiler.core.model.TableIndicator;
import org.talend.dataprofiler.core.ui.editor.preview.TableIndicatorUnit;
import org.talend.dataquality.analysis.Analysis;
import org.talend.dataquality.indicators.Indicator;
import org.talend.dataquality.indicators.definition.IndicatorDefinition;
import org.talend.dataquality.indicators.sql.IndicatorSqlFactory;
import org.talend.dataquality.indicators.sql.WhereRuleIndicator;
import org.talend.dq.nodes.RuleRepNode;
import org.talend.dq.nodes.indicator.type.IndicatorEnum;
import orgomg.cwm.objectmodel.core.ModelElement;
/**
* DOC xqliu class global comment. Detailled comment
*/
public final class DQRuleUtilities {
private DQRuleUtilities() {
}
/**
* DOC xqliu Comment method "createIndicatorUnit".
*
* @param fe
* @param tableIndicator
* @param analysis
* @return
*/
public static TableIndicatorUnit createIndicatorUnit(RuleRepNode ruleRepNode, TableIndicator tableIndicator, Analysis analysis) {
IndicatorDefinition whereRule = ruleRepNode.getRule();
for (Indicator indicator : tableIndicator.getIndicators()) {
if (whereRule.getName().equals(indicator.getName())) {
return null;
}
}
WhereRuleIndicator[] compositeWhereRuleIndicator = createCompositeWhereRuleIndicator(tableIndicator.getColumnSet(),
whereRule);
IndicatorEnum type = IndicatorEnum.findIndicatorEnum(compositeWhereRuleIndicator[0].eClass());
TableIndicatorUnit addIndicatorUnit = tableIndicator.addSpecialIndicator(whereRule, type, compositeWhereRuleIndicator[0]);
DependenciesHandler.getInstance().setUsageDependencyOn(analysis, whereRule);
return addIndicatorUnit;
}
/**
* @return 0 based index is WhereRuleIndicator
*/
public static WhereRuleIndicator[] createCompositeWhereRuleIndicator(ModelElement anaElement, IndicatorDefinition whereRuleDef) {
WhereRuleIndicator wrIndicator = IndicatorSqlFactory.eINSTANCE.createWhereRuleIndicator();
wrIndicator.setAnalyzedElement(anaElement);
wrIndicator.setIndicatorDefinition(whereRuleDef);
return new WhereRuleIndicator[] { wrIndicator };
}
}