// ============================================================================
//
// 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.dq.analysis;
import static org.junit.Assert.*;
import org.junit.Test;
import org.talend.core.model.metadata.builder.connection.ConnectionFactory;
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlType;
import org.talend.cwm.helper.TaggedValueHelper;
import org.talend.cwm.relational.RelationalFactory;
import org.talend.cwm.relational.TdColumn;
import org.talend.cwm.relational.TdTable;
import org.talend.dataquality.analysis.Analysis;
import org.talend.dataquality.analysis.AnalysisContext;
import org.talend.dataquality.analysis.AnalysisFactory;
import org.talend.dataquality.analysis.AnalysisParameters;
import org.talend.dataquality.analysis.AnalysisResult;
import org.talend.dataquality.analysis.ExecutionInformations;
import orgomg.cwm.objectmodel.core.Package;
/**
* DOC msjian class global comment. Detailled comment
*/
public class ColumnAnalysisExecutorTest {
/**
* when there are some catelog
* {@link org.talend.dq.analysis.ColumnAnalysisExecutor#createSqlStatement(org.talend.dataquality.analysis.Analysis)}
* .
*/
@Test
public void testCreateSqlStatement_1() {
Analysis analysis = AnalysisFactory.eINSTANCE.createAnalysis();
AnalysisContext context = AnalysisFactory.eINSTANCE.createAnalysisContext();
analysis.setContext(context);
TdColumn tdColumn = RelationalFactory.eINSTANCE.createTdColumn();
TdTable tdTable = RelationalFactory.eINSTANCE.createTdTable();
tdTable.setName("tableName"); //$NON-NLS-1$
tdColumn.setOwner(tdTable);
tdColumn.setName("columnName"); //$NON-NLS-1$
AnalysisParameters analysisPara = AnalysisFactory.eINSTANCE.createAnalysisParameters();
analysisPara.setStoreData(false);
analysis.setParameters(analysisPara);
context.getAnalysedElements().add(tdColumn);
AnalysisResult analysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
ExecutionInformations info = AnalysisFactory.eINSTANCE.createExecutionInformations();
analysisResult.setResultMetadata(info);
analysis.setResults(analysisResult);
Package catalog = orgomg.cwm.resource.relational.RelationalFactory.eINSTANCE.createCatalog();// mock(Catalog.class);
catalog.setName("catalogName"); //$NON-NLS-1$
tdTable.setNamespace(catalog);
DatabaseConnection createConnection = ConnectionFactory.eINSTANCE.createDatabaseConnection();
createConnection.getTaggedValue().add(
TaggedValueHelper.createTaggedValue(TaggedValueHelper.DB_PRODUCT_NAME,
SupportDBUrlType.MYSQLDEFAULTURL.getLanguage()));
analysis.getContext().setConnection(createConnection);
ColumnAnalysisExecutor columnAnalysisExecutor = new ColumnAnalysisExecutor();
assertEquals("SELECT `columnName` FROM `catalogName`.`tableName`", columnAnalysisExecutor.createSqlStatement(analysis)); //$NON-NLS-1$
}
/**
* when there are some schema.
* {@link org.talend.dq.analysis.ColumnAnalysisExecutor#createSqlStatement(org.talend.dataquality.analysis.Analysis)}
* .
*/
@Test
public void testCreateSqlStatement_2() {
Analysis analysis = AnalysisFactory.eINSTANCE.createAnalysis();
AnalysisContext context = AnalysisFactory.eINSTANCE.createAnalysisContext();
analysis.setContext(context);
TdColumn tdColumn = RelationalFactory.eINSTANCE.createTdColumn();
TdTable tdTable = RelationalFactory.eINSTANCE.createTdTable();
tdTable.setName("tableName"); //$NON-NLS-1$
tdColumn.setOwner(tdTable);
tdColumn.setName("columnName"); //$NON-NLS-1$
AnalysisParameters analysisPara = AnalysisFactory.eINSTANCE.createAnalysisParameters();
analysisPara.setStoreData(false);
analysis.setParameters(analysisPara);
context.getAnalysedElements().add(tdColumn);
AnalysisResult analysisResult = AnalysisFactory.eINSTANCE.createAnalysisResult();
ExecutionInformations info = AnalysisFactory.eINSTANCE.createExecutionInformations();
analysisResult.setResultMetadata(info);
analysis.setResults(analysisResult);
Package schema = orgomg.cwm.resource.relational.RelationalFactory.eINSTANCE.createSchema();// mock(Schema.class);
schema.setName("schemaName"); //$NON-NLS-1$
tdTable.setNamespace(schema);
Package catalog = orgomg.cwm.resource.relational.RelationalFactory.eINSTANCE.createCatalog();// mock(Catalog.class);
catalog.setName("catalogName"); //$NON-NLS-1$
schema.setNamespace(catalog);
DatabaseConnection createConnection = ConnectionFactory.eINSTANCE.createDatabaseConnection();
createConnection.getTaggedValue().add(
TaggedValueHelper.createTaggedValue(TaggedValueHelper.DB_PRODUCT_NAME,
SupportDBUrlType.MSSQLDEFAULTURL.getLanguage()));
analysis.getContext().setConnection(createConnection);
ColumnAnalysisExecutor columnAnalysisExecutor = new ColumnAnalysisExecutor();
assertEquals(
"SELECT columnName FROM catalogName.schemaName.tableName", columnAnalysisExecutor.createSqlStatement(analysis)); //$NON-NLS-1$
}
}