// ============================================================================
//
// 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.wizard.analysis;
import org.eclipse.core.resources.IFolder;
import org.eclipse.jface.wizard.Wizard;
import org.talend.cwm.management.api.FolderProvider;
import org.talend.dataprofiler.core.CorePlugin;
import org.talend.dataprofiler.core.pattern.CreatePatternWizard;
import org.talend.dataprofiler.core.sql.CreateSqlFileWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.catalog.CatalogAnalysisWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.BasicColumnWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.ColumnSetWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.ColumnWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.DiscreteDataWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.MatchWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.NominalCorrelationWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.NominalValuesWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.NumericalCorrelationWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.PatternFrequencyWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.SummaryStatisticsWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.column.TimeCorrelationWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.connection.ConnectionAnalysisWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.schema.SchemaAnalysisWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.table.FunctionDependencyWizard;
import org.talend.dataprofiler.core.ui.wizard.analysis.table.TableAnalysisWizard;
import org.talend.dataprofiler.core.ui.wizard.dqrules.NewDQRulesWizard;
import org.talend.dataprofiler.core.ui.wizard.indicator.NewUDIndicatorWizard;
import org.talend.dataprofiler.core.ui.wizard.matchrule.NewMatchRuleWizard;
import org.talend.dataprofiler.core.ui.wizard.parserrule.NewParserRulesWizard;
import org.talend.dataprofiler.service.ISemanticStudioService;
import org.talend.dataquality.analysis.AnalysisType;
import org.talend.dataquality.domain.pattern.ExpressionType;
import org.talend.dq.analysis.parameters.AnalysisFilterParameter;
import org.talend.dq.analysis.parameters.AnalysisLabelParameter;
import org.talend.dq.analysis.parameters.AnalysisParameter;
import org.talend.dq.analysis.parameters.DQMatchRuleParameter;
import org.talend.dq.analysis.parameters.DQParserRulesParameter;
import org.talend.dq.analysis.parameters.DQRulesParameter;
import org.talend.dq.analysis.parameters.FuncationDependencyParameter;
import org.talend.dq.analysis.parameters.NamedColumnSetAnalysisParameter;
import org.talend.dq.analysis.parameters.PackagesAnalyisParameter;
import org.talend.dq.analysis.parameters.PatternParameter;
import org.talend.dq.analysis.parameters.SqlFileParameter;
import org.talend.dq.analysis.parameters.UDIndicatorParameter;
import org.talend.repository.model.RepositoryNode;
/**
* @author zqin
*/
public final class WizardFactory {
private WizardFactory() {
}
public static Wizard createAnalysisWizard(AnalysisType type, AnalysisParameter parameter) {
assert type != null;
switch (type) {
case COLUMN_CORRELATION:
if (parameter == null) {
parameter = new AnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
if (((AnalysisLabelParameter) parameter).isNumbericCorrelation()) {
return new NumericalCorrelationWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isDateCorrelation()) {
return new TimeCorrelationWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isNominalCorrelation()) {
return new NominalCorrelationWizard(parameter);
}
case MULTIPLE_COLUMN:
if (parameter == null) {
parameter = new AnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
if (parameter instanceof AnalysisLabelParameter) {
if (((AnalysisLabelParameter) parameter).isSemanticDiscoveryAnalysis()) {
ISemanticStudioService service = CorePlugin.getDefault().getSemanticStudioService();
if (service != null) {
return service.getSemanticDiscoveryWizard(null, parameter);
}
}
if (((AnalysisLabelParameter) parameter).isBasicColumnAnalysis()) {
return new BasicColumnWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isNominalValuesAnalysis()) {
return new NominalValuesWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isPatternFrequencyAnalysis()) {
return new PatternFrequencyWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isDiscreteDataAnalysis()) {
return new DiscreteDataWizard(parameter);
}
if (((AnalysisLabelParameter) parameter).isSummaryStatisticsAnalysis()) {
return new SummaryStatisticsWizard(parameter);
}
}
return new ColumnWizard(parameter);
case COLUMNS_COMPARISON:
if (parameter == null) {
parameter = new AnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new ColumnWizard(parameter);
case CONNECTION:
if (parameter == null) {
parameter = new AnalysisFilterParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new ConnectionAnalysisWizard((AnalysisFilterParameter) parameter);
// MOD mzhao 2009-02-03 CATALOG and SCHEMA should use
// PackagesAnalyisParameter.
case CATALOG:
if (parameter == null) {
parameter = new PackagesAnalyisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new CatalogAnalysisWizard((PackagesAnalyisParameter) parameter);
case SCHEMA:
if (parameter == null) {
parameter = new PackagesAnalyisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new SchemaAnalysisWizard((PackagesAnalyisParameter) parameter);
case TABLE:
if (parameter == null) {
parameter = new NamedColumnSetAnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new TableAnalysisWizard((NamedColumnSetAnalysisParameter) parameter);
case TABLE_FUNCTIONAL_DEPENDENCY:
if (parameter == null) {
parameter = new FuncationDependencyParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new FunctionDependencyWizard(parameter);
case COLUMN_SET:
if (parameter == null) {
parameter = new AnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new ColumnSetWizard(parameter);
case MATCH_ANALYSIS:
if (parameter == null) {
parameter = new AnalysisParameter();
}
parameter.setAnalysisTypeName(type.getLiteral());
return new MatchWizard(parameter);
default:
return null;
}
}
public static Wizard createAnalysisWizard(AnalysisType type) {
return createAnalysisWizard(type, null);
}
public static CreateNewAnalysisWizard createNewAnalysisWizard() {
return new CreateNewAnalysisWizard();
}
/**
* DOC klliu Comment method "createNewAnalysisWizard".
*
* @param node
* @return
*/
public static CreateNewAnalysisWizard createNewAnalysisWizard(RepositoryNode node) {
return new CreateNewAnalysisWizard(node);
}
/**
*
* DOC xqliu Comment method "createNewDQRuleWizard".
*
* @param parameter
* @return
*/
public static NewDQRulesWizard createNewDQRuleWizard(DQRulesParameter parameter) {
return new NewDQRulesWizard(parameter);
}
public static NewParserRulesWizard createNewParserRuleWizard(DQParserRulesParameter parameter) {
return new NewParserRulesWizard(parameter);
}
public static NewMatchRuleWizard createNewMatchRuleWizard(DQMatchRuleParameter parameter) {
return new NewMatchRuleWizard(parameter);
}
public static NewUDIndicatorWizard createNewUDIWizard(UDIndicatorParameter parameter) {
return new NewUDIndicatorWizard(parameter);
}
public static Wizard createSqlFileWizard(IFolder folder) {
SqlFileParameter parameter = new SqlFileParameter();
FolderProvider folderProvider = parameter.getFolderProvider();
if (folderProvider == null) {
folderProvider = new FolderProvider();
}
folderProvider.setFolderResource(folder);
parameter.setFolderProvider(folderProvider);
return new CreateSqlFileWizard(parameter);
}
public static Wizard createPatternWizard(ExpressionType type) {
return createPatternWizard(type, null);
}
public static Wizard createPatternWizard(ExpressionType type, PatternParameter parameter) {
if (parameter == null) {
parameter = new PatternParameter();
}
return new CreatePatternWizard(parameter, type);
}
public static Wizard createPatternWizard(ExpressionType type, PatternParameter parameter, String expression, String language) {
if (parameter == null) {
parameter = new PatternParameter();
}
return new CreatePatternWizard(parameter, type, expression, language);
}
}