// ============================================================================ // // 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.dbms; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.junit.Assert; import org.junit.Test; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.core.model.metadata.builder.connection.ConnectionFactory; import org.talend.core.model.metadata.builder.connection.MetadataColumn; import org.talend.core.model.metadata.builder.connection.MetadataTable; import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlType; import org.talend.cwm.helper.CatalogHelper; import org.talend.cwm.helper.ColumnSetHelper; import org.talend.cwm.helper.ConnectionHelper; import org.talend.cwm.relational.RelationalFactory; import org.talend.cwm.relational.RelationalPackage; import org.talend.cwm.relational.TdColumn; import org.talend.cwm.relational.TdExpression; import org.talend.cwm.relational.TdTable; import org.talend.dataquality.analysis.ExecutionLanguage; import org.talend.dataquality.domain.pattern.ExpressionType; import org.talend.dataquality.domain.pattern.Pattern; import org.talend.dataquality.domain.pattern.PatternComponent; import org.talend.dataquality.domain.pattern.PatternFactory; import org.talend.dataquality.domain.pattern.RegularExpression; import org.talend.dataquality.helpers.BooleanExpressionHelper; import org.talend.dataquality.indicators.definition.CharactersMapping; import org.talend.dataquality.indicators.definition.DefinitionFactory; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dataquality.indicators.definition.userdefine.UDIndicatorDefinition; import org.talend.dataquality.indicators.definition.userdefine.UserdefineFactory; import org.talend.dataquality.indicators.sql.IndicatorSqlFactory; import org.talend.dataquality.indicators.sql.UserDefIndicator; import org.talend.utils.ProductVersion; import org.talend.utils.dates.DateUtils; import orgomg.cwm.objectmodel.core.CoreFactory; import orgomg.cwm.objectmodel.core.Expression; import orgomg.cwm.resource.relational.Catalog; /** * DOC scorreia class global comment. Detailled comment */ public class DbmsLanguageTest { private static final String sql_1 = "SELECT 1 FROM <%=__TABLE_NAME__%> <%=__WHERE_CLAUSE__%>"; //$NON-NLS-1$ private static final String sql_2 = "SELECT 2 FROM <%=__TABLE_NAME__%> <%=__WHERE_CLAUSE__%>"; //$NON-NLS-1$ private static final String EMPTY_STRING = ""; //$NON-NLS-1$ private static final String TEST_STRING = "TEST_STRING"; //$NON-NLS-1$ private static final String DATABASE_TYPE_MYSQL = "MySQL"; //$NON-NLS-1$ private static final String DATABASE_VERSION = "5.0.2"; //$NON-NLS-1$ private static final String CATALOG_NAME = "catalog_name"; //$NON-NLS-1$ private static final String SCHEMA_NAME = "schema_name"; //$NON-NLS-1$ private static final String TABLE_NAME = "table_name"; //$NON-NLS-1$ private static final String TABLE_NAME2 = "table_name2"; //$NON-NLS-1$ private static final String COLUMN_NAME = "column_name"; //$NON-NLS-1$ private static final String COLUMN_A_NAME = "column_a_name"; //$NON-NLS-1$ private static final String COLUMN_B_NAME = "column_b_name"; //$NON-NLS-1$ private static final String KEY = "key"; //$NON-NLS-1$ private static final String REPLACEMENT_STR = "replacement_str"; //$NON-NLS-1$ private static final String ALIAS_NAME = "alias_name"; //$NON-NLS-1$ private static final String DB_QUOTE_STRING = "db_quote_string"; //$NON-NLS-1$ private static final int TOP_N = 100; public static final String SPACE = " "; //$NON-NLS-1$ private static final String QUERY_STR = "select " + GenericSQLHandler.COLUMN_NAMES + " from " + GenericSQLHandler.TABLE_NAME; //$NON-NLS-1$ //$NON-NLS-2$ private static final String QUERY_AB_STR = "select " + GenericSQLHandler.COLUMN_NAMES_A + ", " + GenericSQLHandler.COLUMN_NAMES_B + " from " + GenericSQLHandler.TABLE_NAME; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ private static final String QUERY_WHERE_STR = QUERY_STR + SPACE + GenericSQLHandler.WHERE_CLAUSE + SPACE + GenericSQLHandler.UDI_WHERE; private static final String QUERY_PATTERN_STR = "SELECT COUNT(CASE WHEN " + GenericSQLHandler.COLUMN_NAMES //$NON-NLS-1$ + " REGEXP BINARY " + GenericSQLHandler.PATTERN_EXPRESSION + " THEN 1 END), COUNT(*) FROM " //$NON-NLS-1$ //$NON-NLS-2$ + GenericSQLHandler.TABLE_NAME + SPACE + GenericSQLHandler.WHERE_CLAUSE; private static final String QUERY_GROUPBY_STR = "select count(*), " + GenericSQLHandler.COLUMN_NAMES + " from " //$NON-NLS-1$ //$NON-NLS-2$ + GenericSQLHandler.TABLE_NAME + SPACE + GenericSQLHandler.GROUP_BY_ALIAS; private static final String QUERY_JOIN_WHERE_STR = "SELECT COUNT(*) FROM " + GenericSQLHandler.TABLE_NAME //$NON-NLS-1$ + " LEFT JOIN " + GenericSQLHandler.TABLE_NAME2 + " ON (" + GenericSQLHandler.JOIN_CLAUSE + ") WHERE (" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + GenericSQLHandler.WHERE_CLAUSE + ")"; //$NON-NLS-1$ private static final String REGEXP = "'su.*'"; //$NON-NLS-1$ private static final String REGEXP_STR = "su.a"; //$NON-NLS-1$ private static final String ORDER_ASC = "ASC"; //$NON-NLS-1$ private static final String ORDER_DESC = "DESC"; //$NON-NLS-1$ private static final String JOIN_CLAUSE = "join_clause"; //$NON-NLS-1$ private static final String WHERE_CLAUSE = "where_clause"; //$NON-NLS-1$ private static final String OPERATOR = "="; //$NON-NLS-1$ private static final String FUNCTION = "function"; //$NON-NLS-1$ private static final String JavaRegex = "'^java expression$'"; //$NON-NLS-1$ private static final String SqlRegex = "'^sql expression$'"; //$NON-NLS-1$ private static final String MssqlRegex = "'^mssql expression$'"; //$NON-NLS-1$ /** * get a default MySQL DbmsLanguage for test * * @return */ private DbmsLanguage getMysqlDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DATABASE_TYPE_MYSQL, DATABASE_VERSION); } /** * create a default pattern for test * * @return */ private Pattern createPattern() { Pattern pattern = PatternFactory.eINSTANCE.createPattern(); pattern.setName("My Pattern"); //$NON-NLS-1$ RegularExpression regularExpr = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression expression = createExpression("SQL"); //$NON-NLS-1$ regularExpr.setExpression(expression); pattern.getComponents().add(regularExpr); RegularExpression regularExpr2 = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression expression2 = createExpression("MySql"); //$NON-NLS-1$ regularExpr2.setExpression(expression2); pattern.getComponents().add(regularExpr2); return pattern; } /** * create a default expression for test * * @return */ private TdExpression createExpression(String language) { TdExpression expression = RelationalFactory.eINSTANCE.createTdExpression(); expression.setBody(REGEXP); expression.setLanguage(language); return expression; } /** * create a default column name list for test * * @return */ private List<String> createColumns() { List<String> columns = new ArrayList<String>(); columns.add(COLUMN_NAME); columns.add(COLUMN_NAME + "1"); //$NON-NLS-1$ columns.add(COLUMN_NAME + "2"); //$NON-NLS-1$ return columns; } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#quote(java.lang.String)}. */ @Test public void testQuote() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.quote(TEST_STRING).indexOf(TEST_STRING) > -1); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#and()}. */ @Test public void testAnd() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.and()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#or()}. */ @Test public void testOr() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.or()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#greater()}. */ @Test public void testGreater() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.greater()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#greaterOrEqual()}. */ @Test public void testGreaterOrEqual() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.greaterOrEqual()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#less()}. */ @Test public void testLess() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.less()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#lessOrEqual()}. */ @Test public void testLessOrEqual() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.lessOrEqual()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#between()}. */ @Test public void testBetween() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.between()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#isNull()}. */ @Test public void testIsNull() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.isNull()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#isNotNull()}. */ @Test public void testIsNotNull() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.isNotNull()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#equal()}. */ @Test public void testEqual() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.equal()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#notEqual()}. */ @Test public void testNotEqual() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.notEqual()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#unionAll()}. */ @Test public void testUnionAll() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.unionAll()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#all()}. */ @Test public void testAll() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.all()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#union()}. */ @Test public void testUnion() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.union()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#from()}. */ @Test public void testFrom() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.from()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#eos()}. */ @Test public void testEos() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.eos()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getDbmsName()}. */ @Test public void testGetDbmsName() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getDbmsName()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getDbVersion()}. */ @Test public void testGetDbVersion() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getDbVersion()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getDefaultLanguage()}. */ @Test public void testGetDefaultLanguage() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getDefaultLanguage()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#toQualifiedName(java.lang.String, java.lang.String, java.lang.String)}. */ @Test public void testToQualifiedName() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertFalse(StringUtils.isEmpty(dbms.toQualifiedName(CATALOG_NAME, SCHEMA_NAME, TABLE_NAME))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getDelimiter()}. */ @Test public void testGetDelimiter() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getDelimiter()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getPatternFinderFunction(java.lang.String, org.eclipse.emf.common.util.EList)} * . * * case 1 : netezza case */ @Test public void testGetPatternFinderFunctionStringEListOfCharactersMappingCase1() { String expectedResult = "TRANSLATE(name , \'abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789Netezza\' , \'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999Netezza\')"; //$NON-NLS-1$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); IndicatorDefinition createIndicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<CharactersMapping> charactersMapping = createIndicatorDefinition.getCharactersMapping(); CharactersMapping createCharactersMapping = DefinitionFactory.eINSTANCE.createCharactersMapping(); // mysql createCharactersMapping.setLanguage(SupportDBUrlType.MYSQLDEFAULTURL.getLanguage()); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789MySql"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999MySql"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~mysql // default createCharactersMapping.setLanguage(DbmsLanguage.SQL); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789Default"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999Default"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~default // netezza createCharactersMapping.setLanguage(SupportDBUrlType.NETEZZADEFAULTURL.getLanguage()); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789Netezza"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999Netezza"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~netezza String patternFinderFunction = netezzaDbmsLanguage.getPatternFinderFunction("name", charactersMapping); //$NON-NLS-1$ Assert.assertEquals(expectedResult, patternFinderFunction); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getPatternFinderFunction(java.lang.String, org.eclipse.emf.common.util.EList)} * . * * case 2 : default case */ @Test public void testGetPatternFinderFunctionStringEListOfCharactersMappingCase2() { String expectedResult = "TRANSLATE(name , \'abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789Default\' , \'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999Default\')"; //$NON-NLS-1$ NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); IndicatorDefinition createIndicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<CharactersMapping> charactersMapping = createIndicatorDefinition.getCharactersMapping(); CharactersMapping createCharactersMapping = DefinitionFactory.eINSTANCE.createCharactersMapping(); // mysql createCharactersMapping.setLanguage(SupportDBUrlType.MYSQLDEFAULTURL.getLanguage()); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789MySql"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999MySql"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~mysql // default createCharactersMapping.setLanguage(DbmsLanguage.SQL); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789Default"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999Default"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~default String patternFinderFunction = netezzaDbmsLanguage.getPatternFinderFunction("name", charactersMapping); //$NON-NLS-1$ Assert.assertEquals(expectedResult, patternFinderFunction); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getPatternFinderFunction(java.lang.String, org.eclipse.emf.common.util.EList)} * . * * case 3 : no default and no netezza */ @Test public void testGetPatternFinderFunctionStringEListOfCharactersMappingCase3() { String expectedResult = null; NetezzaDbmsLanguage netezzaDbmsLanguage = (NetezzaDbmsLanguage) DbmsLanguageFactory .createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); IndicatorDefinition createIndicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<CharactersMapping> charactersMapping = createIndicatorDefinition.getCharactersMapping(); CharactersMapping createCharactersMapping = DefinitionFactory.eINSTANCE.createCharactersMapping(); // mysql createCharactersMapping.setLanguage(SupportDBUrlType.MYSQLDEFAULTURL.getLanguage()); createCharactersMapping .setCharactersToReplace("abcdefghijklmnopqrstuvwxyzçâêîôûéèùïöüABCDEFGHIJKLMNOPQRSTUVWXYZÇÂÊÎÔÛÉÈÙÏÖÜ0123456789MySql"); //$NON-NLS-1$ createCharactersMapping .setReplacementCharacters("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999MySql"); //$NON-NLS-1$ charactersMapping.add(createCharactersMapping); // ~mysql String patternFinderFunction = netezzaDbmsLanguage.getPatternFinderFunction("name", charactersMapping); //$NON-NLS-1$ Assert.assertEquals(expectedResult, patternFinderFunction); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#replaceNullsWithString(java.lang.String, java.lang.String)}. */ @Test public void testReplaceNullsWithString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.replaceNullsWithString(COLUMN_NAME, REPLACEMENT_STR)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#isNotBlank(java.lang.String)}. */ @Test public void testIsNotBlank() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.isNotBlank(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#trim(java.lang.String)}. */ @Test public void testTrim() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.trim(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#toUpperCase(java.lang.String)}. */ @Test public void testToUpperCase() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.toUpperCase(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#toLowerCase(java.lang.String)}. */ @Test public void testToLowerCase() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.toLowerCase(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#extractYear(java.lang.String)}. */ @Test public void testExtractYear() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.extractYear(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#extractQuarter(java.lang.String)}. */ @Test public void testExtractQuarter() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.extractQuarter(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#extractMonth(java.lang.String)}. */ @Test public void testExtractMonth() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.extractMonth(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#extractWeek(java.lang.String)}. */ @Test public void testExtractWeek() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.extractWeek(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#extractDay(java.lang.String)}. */ @Test public void testExtractDay() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.extractDay(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getTopNQuery(java.lang.String, int)}. */ @Test public void testGetTopNQuery() { try { String limitStr = " LIMIT "; //$NON-NLS-1$ DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertEquals(QUERY_STR + limitStr + TOP_N, dbms.getTopNQuery(QUERY_STR, TOP_N)); dbms = getPostgresqlDbmsLanguage(); Assert.assertEquals(QUERY_STR + limitStr + TOP_N, dbms.getTopNQuery(QUERY_STR, TOP_N)); dbms = getVerticaDbmsLanguage(); Assert.assertEquals(QUERY_STR + limitStr + TOP_N, dbms.getTopNQuery(QUERY_STR, TOP_N)); dbms = getNetzzaDbmsLanguage(); Assert.assertEquals(QUERY_STR + limitStr + TOP_N, dbms.getTopNQuery(QUERY_STR, TOP_N)); dbms = getHiveDbmsLanguage(); Assert.assertEquals(QUERY_STR + limitStr + TOP_N, dbms.getTopNQuery(QUERY_STR, TOP_N)); dbms = getMsSqlDbmsLanguage(); Assert.assertEquals( "SELECT TOP " + TOP_N + " " + GenericSQLHandler.COLUMN_NAMES + " from " + GenericSQLHandler.TABLE_NAME, dbms.getTopNQuery(QUERY_STR, TOP_N)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms = getSybaseDbmsLanguage(); Assert.assertEquals("SELECT TOP " + TOP_N + " " + GenericSQLHandler.COLUMN_NAMES + " from " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + GenericSQLHandler.TABLE_NAME, dbms.getTopNQuery(QUERY_STR, TOP_N)); // $NON dbms = getTeradataDbmsLanguage(); Assert.assertEquals("SELECT TOP " + TOP_N + " " + GenericSQLHandler.COLUMN_NAMES + " from " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + GenericSQLHandler.TABLE_NAME, dbms.getTopNQuery(QUERY_STR, TOP_N)); // $NON } catch (Exception e) { fail(e.getMessage()); } } /** * DOC qiongli Comment method "getHiveDbmsLanguage". * * @return */ private DbmsLanguage getHiveDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.HIVE, DATABASE_VERSION); } /** * DOC qiongli Comment method "getNetzzaDbmsLanguage". */ private DbmsLanguage getNetzzaDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.NETEZZA, DATABASE_VERSION); } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#countRowInSubquery(java.lang.String, java.lang.String)}. */ @Test public void testCountRowInSubquery() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.countRowInSubquery(QUERY_STR, ALIAS_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#sumRowInSubquery(java.lang.String, java.lang.String, java.lang.String)}. */ @Test public void testSumRowInSubquery() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.sumRowInSubquery(COLUMN_NAME, QUERY_STR, ALIAS_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#selectAllRowsWhereColumnIn(java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testSelectAllRowsWhereColumnIn() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.selectAllRowsWhereColumnIn(COLUMN_NAME, TABLE_NAME, QUERY_STR)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#selectColumnsFromTable(java.util.List, java.lang.String)}. */ @Test public void testSelectColumnsFromTable() { try { List<String> columns = new ArrayList<String>(); columns.add(COLUMN_NAME); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.selectColumnsFromTable(columns, TABLE_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#in()}. */ @Test public void testIn() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.in()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#notIn()}. */ @Test public void testNotIn() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.notIn()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#not()}. */ @Test public void testNot() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.not()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getDbQuoteString()}. */ @Test public void testGetDbQuoteString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getDbQuoteString()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#setDbQuoteString(java.lang.String)}. */ @Test public void testSetDbQuoteString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); dbms.setDbQuoteString(DB_QUOTE_STRING); Assert.assertEquals(dbms.getDbQuoteString(), DB_QUOTE_STRING); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#addWhereToSqlStringStatement(java.lang.String, java.util.List)}. */ @Test public void testAddWhereToSqlStringStatement() { try { String w1 = "a=a"; //$NON-NLS-1$ String w2 = "1>0"; //$NON-NLS-1$ List<String> whereExpressions = new ArrayList<String>(); whereExpressions.add(w1); whereExpressions.add(w2); DbmsLanguage dbms = getMysqlDbmsLanguage(); String addWhereToSqlStringStatement = dbms.addWhereToSqlStringStatement(QUERY_WHERE_STR, whereExpressions); Assert.assertTrue(addWhereToSqlStringStatement.indexOf(GenericSQLHandler.WHERE_CLAUSE) < 0 && addWhereToSqlStringStatement.indexOf(w1) > -1 && addWhereToSqlStringStatement.indexOf(w2) > -1); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#addWhereToStatement(java.lang.String, java.lang.String)}. */ @Test public void testAddWhereToStatement() { try { String w1 = "a=a"; //$NON-NLS-1$ DbmsLanguage dbms = getMysqlDbmsLanguage(); String addWhereToStatement = dbms.addWhereToStatement(QUERY_WHERE_STR, w1); Assert.assertTrue(addWhereToStatement.indexOf(GenericSQLHandler.WHERE_CLAUSE) < 0 && addWhereToStatement.indexOf(GenericSQLHandler.UDI_WHERE) < 0 && addWhereToStatement.indexOf(w1) > -1); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#where()}. */ @Test public void testWhere() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.where()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#buildWhereExpression(java.util.List)}. */ @Test public void testBuildWhereExpression() { try { String w1 = "a=a"; //$NON-NLS-1$ String w2 = "1>0"; //$NON-NLS-1$ List<String> whereExpressions = new ArrayList<String>(); whereExpressions.add(w1); whereExpressions.add(w2); DbmsLanguage dbms = getMysqlDbmsLanguage(); String buildWhereExpression = dbms.buildWhereExpression(whereExpressions); Assert.assertTrue(buildWhereExpression.indexOf(w1) > -1 && buildWhereExpression.indexOf(w2) > -1); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#desc()}. */ @Test public void testDesc() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.desc()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#orderBy()}. */ @Test public void testOrderBy() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.orderBy()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#groupBy()}. */ @Test public void testGroupBy() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.groupBy()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(org.talend.dataquality.indicators.definition.IndicatorDefinition)} * . */ @Test public void testGetSqlExpressionUserDefineCase1() { // create indicator UserDefIndicator userDefIndicator = IndicatorSqlFactory.eINSTANCE.createUserDefIndicator(); UDIndicatorDefinition indicatorDefinition = UserdefineFactory.eINSTANCE.createUDIndicatorDefinition(); indicatorDefinition.setName("user define"); //$NON-NLS-1$ userDefIndicator.setName(indicatorDefinition.getName()); userDefIndicator.setIndicatorDefinition(indicatorDefinition); TdExpression newTdExp = BooleanExpressionHelper.createTdExpression("MySQL", //$NON-NLS-1$ sql_1, null); newTdExp.setModificationDate(DateUtils.getCurrentDate(DateUtils.PATTERN_5)); indicatorDefinition.getSqlGenericExpression().add(newTdExp); TdExpression newTdExp_2 = BooleanExpressionHelper.createTdExpression("SQL", //$NON-NLS-1$ sql_2, null); newTdExp_2.setModificationDate(DateUtils.getCurrentDate(DateUtils.PATTERN_5)); indicatorDefinition.getSqlGenericExpression().add(newTdExp_2); DbmsLanguage dbms = getMysqlDbmsLanguage(); Expression sqlExpression = dbms.getSqlExpression(indicatorDefinition); Assert.assertNotNull(sqlExpression); Assert.assertEquals(sql_1, sqlExpression.getBody()); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(org.talend.dataquality.indicators.definition.IndicatorDefinition)} * . */ @Test public void testGetSqlExpressionUserDefineCase2() { // test for can not get sql expression(means: both database type and default type don't exist) // create indicator UserDefIndicator userDefIndicator = IndicatorSqlFactory.eINSTANCE.createUserDefIndicator(); UDIndicatorDefinition indicatorDefinition = UserdefineFactory.eINSTANCE.createUDIndicatorDefinition(); indicatorDefinition.setName("user define"); //$NON-NLS-1$ userDefIndicator.setName(indicatorDefinition.getName()); userDefIndicator.setIndicatorDefinition(indicatorDefinition); TdExpression newTdExp = BooleanExpressionHelper.createTdExpression("Ingres", //$NON-NLS-1$ sql_1, null); newTdExp.setModificationDate(DateUtils.getCurrentDate(DateUtils.PATTERN_5)); indicatorDefinition.getSqlGenericExpression().add(newTdExp); DbmsLanguage dbms = getMysqlDbmsLanguage(); Expression sqlExpression = dbms.getSqlExpression(indicatorDefinition); Assert.assertNull(sqlExpression); } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getSoundexFunction(java.lang.String, java.lang.String)}. */ @Test public void testGetSoundexFunction() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getSoundexFunction(TABLE_NAME, COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getFreqRowsStatement(java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testGetFreqRowsStatement() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNull(dbms.getFreqRowsStatement(COLUMN_NAME, TABLE_NAME, KEY)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getAggregate1argFunctions(org.talend.dataquality.indicators.definition.IndicatorDefinition)} * . */ @Test public void testGetAggregate1argFunctions() { // TODO need to implement this method!!! // need an IndicatorDefinition object to test this method // fail("Not yet implemented"); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getDate1argFunctions(org.talend.dataquality.indicators.definition.IndicatorDefinition)} * . */ @Test public void testGetDate1argFunctions() { // TODO need to implement this method!!! // need an IndicatorDefinition object to test this method // fail("Not yet implemented"); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexPatternString(org.talend.dataquality.indicators.PatternMatchingIndicator)} * . */ @Test public void testGetRegexPatternString() { // TODO need to implement this method!!! // need an Indicator object to test this method // fail("Not yet implemented"); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexp() { Pattern pattern = createPattern(); try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getRegexp(pattern)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexpGetMssqlFromContainDefault() { // Pattern Pattern createPattern = PatternFactory.eINSTANCE.createPattern(); // ~Pattern // init java Expression data RegularExpression createJavaRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createJavaTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createJavaTdExpression.setBody(JavaRegex); createJavaTdExpression.setLanguage(SupportDBUrlType.JAVADEFAULTURL.getLanguage()); createJavaRegularExpression.setExpression(createJavaTdExpression); createJavaRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); EList<PatternComponent> components = createPattern.getComponents(); components.add(createJavaRegularExpression); // ~init java Expression data // init sql Expression data RegularExpression createSqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createSqlTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createSqlTdExpression.setBody(SqlRegex); createSqlTdExpression.setLanguage(ExecutionLanguage.SQL.getName()); createSqlRegularExpression.setExpression(createSqlTdExpression); createSqlRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); components = createPattern.getComponents(); components.add(createSqlRegularExpression); // ~init sql Expression data // init mssql Expression data RegularExpression createMssqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createMssqlTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createMssqlTdExpression.setBody(MssqlRegex); createMssqlTdExpression.setLanguage(SupportDBUrlType.MSSQLDEFAULTURL.getLanguage()); createMssqlRegularExpression.setExpression(createMssqlTdExpression); createMssqlRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); components = createPattern.getComponents(); components.add(createMssqlRegularExpression); // ~init mssql Expression data try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.MSSQLDEFAULTURL); Assert.assertTrue(MssqlRegex.equalsIgnoreCase(dbms.getRegexp(createPattern).getBody())); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexpGetJavaFromContainDefault() { // Pattern Pattern createPattern = PatternFactory.eINSTANCE.createPattern(); // ~Pattern // init sql Expression data RegularExpression createSqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createSqlTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createSqlTdExpression.setBody(SqlRegex); createSqlTdExpression.setLanguage(ExecutionLanguage.SQL.getName()); createSqlRegularExpression.setExpression(createSqlTdExpression); createSqlRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); EList<PatternComponent> components = createPattern.getComponents(); components.add(createSqlRegularExpression); // ~init sql Expression data // init mssql Expression data RegularExpression createMssqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createMssqlTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createMssqlTdExpression.setBody(MssqlRegex); createMssqlTdExpression.setLanguage(SupportDBUrlType.MSSQLDEFAULTURL.getLanguage()); createMssqlRegularExpression.setExpression(createMssqlTdExpression); createMssqlRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); components = createPattern.getComponents(); components.add(createMssqlRegularExpression); // ~init mssql Expression data // init java Expression data RegularExpression createJavaRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createJavaTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createJavaTdExpression.setBody(JavaRegex); createJavaTdExpression.setLanguage(SupportDBUrlType.JAVADEFAULTURL.getLanguage()); createJavaRegularExpression.setExpression(createJavaTdExpression); createJavaRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); components = createPattern.getComponents(); components.add(createJavaRegularExpression); // ~init java Expression data try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.JAVADEFAULTURL); Assert.assertTrue(JavaRegex.equalsIgnoreCase(dbms.getRegexp(createPattern).getBody())); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexpGetMssqlFromContainDefaultAndWithoutMssql() { // Pattern Pattern createPattern = PatternFactory.eINSTANCE.createPattern(); // ~Pattern // init sql Expression data RegularExpression createSqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createSqlTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createSqlTdExpression.setBody(SqlRegex); createSqlTdExpression.setLanguage(ExecutionLanguage.SQL.getName()); createSqlRegularExpression.setExpression(createSqlTdExpression); createSqlRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); EList<PatternComponent> components = createPattern.getComponents(); components.add(createSqlRegularExpression); // ~init sql Expression data // init java Expression data RegularExpression createJavaRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); TdExpression createJavaTdExpression = RelationalFactory.eINSTANCE.createTdExpression(); createJavaTdExpression.setBody(JavaRegex); createJavaTdExpression.setLanguage(SupportDBUrlType.JAVADEFAULTURL.getLanguage()); createJavaRegularExpression.setExpression(createJavaTdExpression); createJavaRegularExpression.setExpressionType(ExpressionType.REGEXP.getLiteral()); components = createPattern.getComponents(); components.add(createJavaRegularExpression); // ~init java Expression data try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.MSSQLDEFAULTURL); Assert.assertTrue(SqlRegex.equalsIgnoreCase(dbms.getRegexp(createPattern).getBody())); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexpGetNullWhenRegexStringIsNull() { // Pattern Pattern createPattern = PatternFactory.eINSTANCE.createPattern(); // ~Pattern // init sql Expression data RegularExpression createSqlRegularExpression = PatternFactory.eINSTANCE.createRegularExpression(); EList<PatternComponent> components = createPattern.getComponents(); components.add(createSqlRegularExpression); // ~init sql Expression data try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.MSSQLDEFAULTURL); Assert.assertTrue(null == dbms.getRegexp(createPattern)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getRegexp(org.talend.dataquality.domain.pattern.Pattern, boolean)}. */ @Test public void testGetRegexpGetNullFromNotAnyExperssion() { // Pattern Pattern createPattern = PatternFactory.eINSTANCE.createPattern(); // ~Pattern try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.MSSQLDEFAULTURL); Assert.assertTrue(null == dbms.getRegexp(createPattern)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getExpression(orgomg.cwm.objectmodel.core.ModelElement, boolean)}. */ @Test public void testGetExpressionModelElementBoolean() { // TODO need to implement this method!!! // need an Indicator object to test this method // fail("Not yet implemented"); } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getBackSlashForRegex()}. */ @Test public void testGetBackSlashForRegex() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getBackSlashForRegex()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getExpression(org.talend.dataquality.domain.pattern.PatternComponent)}. */ @Test public void testGetExpressionPatternComponent() { try { Pattern createPattern = createPattern(); EList<PatternComponent> components = createPattern.getComponents(); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getExpression(components.get(0))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#isApplicable(orgomg.cwm.objectmodel.core.Expression)}. */ @Test public void testIsApplicable() { try { Expression createExpression = createExpression("Mysql"); //$NON-NLS-1$ DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.isApplicable(createExpression)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectRegexpTestString(java.lang.String, orgomg.cwm.objectmodel.core.Expression)} * . */ @Test public void testGetSelectRegexpTestStringStringExpression() { try { Expression createExpression = createExpression("Mysql"); //$NON-NLS-1$ DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getSelectRegexpTestString(REGEXP_STR, createExpression)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectRegexpTestString(java.lang.String, java.lang.String)}. */ @Test public void testGetSelectRegexpTestStringStringString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getSelectRegexpTestString(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 1 :database type is mysql */ @Test public void testRegexLikeCase1() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces(dbms.getRegularExpressionFunction()) + REGEXP), dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 2 : database type is oracle */ @Test public void testRegexLikeCase2() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.ORACLEWITHSIDDEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(dbms.getRegularExpressionFunction() + "(" + REGEXP_STR + " , " + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 3 : database type is postgresql */ @Test public void testRegexLikeCase3() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.POSTGRESQLEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces(dbms.getRegularExpressionFunction()) + REGEXP), dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 4 : database type is Hive */ @Test public void testRegexLikeCase4() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.HIVEDEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces(dbms.getRegularExpressionFunction()) + REGEXP), dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 5 : database type is Vertical */ @Test public void testRegexLikeCase5() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.VERTICA); Assert.assertEquals( dbms.surroundWithSpaces(dbms.getRegularExpressionFunction() + "(TO_CHAR(" + REGEXP_STR + ") , " + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexLike(java.lang.String, java.lang.String)}. * * case 6 : database type is sql */ @Test public void testRegexLikeCase6() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage("SQL", "0.1"); //$NON-NLS-1$ //$NON-NLS-2$ // regularExpressionFunction is null Assert.assertEquals(null, dbms.regexLike(REGEXP_STR, REGEXP)); dbms.setRegularExpressionFunction(StringUtils.EMPTY); Assert.assertEquals(null, dbms.regexLike(REGEXP_STR, REGEXP)); // regularExpressionFunction is not null but element is null dbms.setRegularExpressionFunction(REGEXP_STR); Assert.assertEquals(null, dbms.regexLike(null, REGEXP)); Assert.assertEquals(null, dbms.regexLike(StringUtils.EMPTY, REGEXP)); // regularExpressionFunction and REGEXP_STR are not null but regex is null Assert.assertEquals(null, dbms.regexLike(REGEXP_STR, null)); Assert.assertEquals(null, dbms.regexLike(REGEXP_STR, StringUtils.EMPTY)); // normal case Assert.assertEquals( dbms.surroundWithSpaces(dbms.getRegularExpressionFunction() + "( " + REGEXP_STR + "," + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 1 :database type is mysql */ @Test public void testRegexNotLikeCase1() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces(dbms.not() + dbms.getRegularExpressionFunction()) + REGEXP), dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 2 : database type is oracle */ @Test public void testRegexNotLikeCase2() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.ORACLEWITHSIDDEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(dbms.not() + dbms.getRegularExpressionFunction() + "(" + REGEXP_STR + " , " + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 3 : database type is postgresql */ @Test public void testRegexNotLikeCase3() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.POSTGRESQLEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces("!" + dbms.getRegularExpressionFunction()) //$NON-NLS-1$ + REGEXP), dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 4 : database type is Hive */ @Test public void testRegexNotLikeCase4() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.HIVEDEFAULTURL); Assert.assertEquals( dbms.surroundWithSpaces(REGEXP_STR + dbms.surroundWithSpaces(dbms.not() + dbms.getRegularExpressionFunction()) + REGEXP), dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 5 : database type is Vertical */ @Test public void testRegexNotLikeCase5() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.VERTICA); Assert.assertEquals( dbms.surroundWithSpaces(dbms.not() + dbms.getRegularExpressionFunction() + "(TO_CHAR(" + REGEXP_STR + ") , " + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#regexNotLike(java.lang.String, java.lang.String)}. * * case 6 : database type is sql */ @Test public void testRegexNotLikeCase6() { try { DbmsLanguage dbms = DbmsLanguageFactory.createDbmsLanguage("SQL", "0.1"); //$NON-NLS-1$ //$NON-NLS-2$ // regularExpressionFunction is null Assert.assertEquals(null, dbms.regexNotLike(REGEXP_STR, REGEXP)); dbms.setRegularExpressionFunction(StringUtils.EMPTY); Assert.assertEquals(null, dbms.regexNotLike(REGEXP_STR, REGEXP)); // regularExpressionFunction is not null but element is null dbms.setRegularExpressionFunction(REGEXP_STR); Assert.assertEquals(null, dbms.regexNotLike(null, REGEXP)); Assert.assertEquals(null, dbms.regexNotLike(StringUtils.EMPTY, REGEXP)); // regularExpressionFunction and REGEXP_STR are not null but regex is null Assert.assertEquals(null, dbms.regexNotLike(REGEXP_STR, null)); Assert.assertEquals(null, dbms.regexNotLike(REGEXP_STR, StringUtils.EMPTY)); // normal case Assert.assertEquals( dbms.not() + dbms.surroundWithSpaces(dbms.getRegularExpressionFunction() + "( " + REGEXP_STR + "," + REGEXP + " )"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ dbms.regexNotLike(REGEXP_STR, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getHardCodedQuoteIdentifier()}. */ @Test public void testGetHardCodedQuoteIdentifier() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getHardCodedQuoteIdentifier()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#supportAliasesInGroupBy()}. */ @Test public void testSupportAliasesInGroupBy() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.supportAliasesInGroupBy()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#supportNonIntegerConstantInGroupBy()}. */ @Test public void testSupportNonIntegerConstantInGroupBy() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.supportNonIntegerConstantInGroupBy()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getSelectRemarkOnTable(java.lang.String)}. */ @Test public void testGetSelectRemarkOnTable() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getSelectRemarkOnTable(TABLE_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getSelectRemarkOnColumn(java.lang.String)}. */ @Test public void testGetSelectRemarkOnColumn() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getSelectRemarkOnTable(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectOrderedAggregate(boolean, java.util.List, java.lang.String, java.lang.String, java.util.List, java.lang.String, java.util.List)} * . */ @Test public void testGetSelectOrderedAggregate() { try { boolean distinct = true; List<String> columns = createColumns(); String whereCause = "a=a"; //$NON-NLS-1$ List<Integer> groupByIndexes = new ArrayList<Integer>(); groupByIndexes.add(Integer.valueOf(0)); String havingClause = EMPTY_STRING; List<Integer> orderByIndexes = new ArrayList<Integer>(); orderByIndexes.add(Integer.valueOf(0)); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertFalse(StringUtils.isEmpty(dbms.getSelectOrderedAggregate(distinct, columns, TABLE_NAME, whereCause, groupByIndexes, havingClause, orderByIndexes))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#orderBy(java.util.List, boolean)}. */ @Test public void testOrderByListOfStringBoolean() { try { List<String> createColumns = createColumns(); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.orderBy(createColumns, true).indexOf(ORDER_ASC) > -1); Assert.assertTrue(dbms.orderBy(createColumns, false).indexOf(ORDER_DESC) > -1); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericInvalidDetailedValues()}. */ @Test public void testGetFDGenericInvalidDetailedValues() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericInvalidDetailedValues()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericValidDetailedValues()}. */ @Test public void testGetFDGenericValidDetailedValues() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericValidDetailedValues()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericInvalidValues()}. */ @Test public void testGetFDGenericInvalidValues() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericInvalidValues()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericValidValues()}. */ @Test public void testGetFDGenericValidValues() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericValidValues()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericValidRows()}. */ @Test public void testGetFDGenericValidRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericValidRows()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getFDGenericInvalidRows()}. */ @Test public void testGetFDGenericInvalidRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getFDGenericInvalidRows()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getInstantiatedExpression(org.talend.dataquality.indicators.Indicator)}. */ @Test public void testGetInstantiatedExpression() { // TODO need to implement this method!!! // need an Indicator object to test this method // fail("Not yet implemented"); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithColumnTableAndAlias(java.lang.String, java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithColumnTableAndAlias() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithColumnTableAndAlias(QUERY_GROUPBY_STR, COLUMN_NAME, TABLE_NAME, COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithColumnsAndTable(java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithColumnsAndTable() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithColumnsAndTable(QUERY_STR, COLUMN_NAME, TABLE_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithColumnsABAndTable(java.lang.String, java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithColumnsABAndTable() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithColumnsABAndTable(QUERY_AB_STR, COLUMN_A_NAME, COLUMN_B_NAME, TABLE_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithColumnTablePattern(java.lang.String, java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithColumnTablePattern() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithColumnTablePattern(QUERY_PATTERN_STR, COLUMN_NAME, TABLE_NAME, REGEXP)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithColumnTableLimitOffset(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithColumnTableLimitOffset() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithColumnTableLimitOffset(QUERY_STR, COLUMN_NAME, TABLE_NAME, "10", "5", //$NON-NLS-1$ //$NON-NLS-2$ "20")); //$NON-NLS-1$ } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithJoin(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithJoinStringStringStringStringString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithJoin(QUERY_JOIN_WHERE_STR, TABLE_NAME, TABLE_NAME2, JOIN_CLAUSE, WHERE_CLAUSE)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#fillGenericQueryWithJoin(java.lang.String, java.lang.String, java.lang.String)} * . */ @Test public void testFillGenericQueryWithJoinStringStringString() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.fillGenericQueryWithJoin(QUERY_JOIN_WHERE_STR, TABLE_NAME, JOIN_CLAUSE)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#charLength(java.lang.String)}. */ @Test public void testCharLength() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.charLength(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#supportRegexp()}. */ @Test public void testSupportRegexp() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(dbms.supportRegexp()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#createJoinConditionAsString(orgomg.cwm.objectmodel.core.ModelElement, java.util.List, java.lang.String, java.lang.String)} * . */ @Test public void testCreateJoinConditionAsString() { // TODO need to implement this method!!! // need a TdTable(ModelElement) object to test this method // fail("Not yet implemented"); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#innerJoin(java.lang.String, java.lang.String, java.lang.String, boolean, java.lang.String, java.lang.String, java.lang.String, boolean)} * . */ @Test public void testInnerJoin() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.innerJoin(TABLE_NAME, TABLE_NAME, COLUMN_A_NAME, true, TABLE_NAME2, TABLE_NAME2, COLUMN_B_NAME, true)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#join(java.lang.StringBuilder, java.lang.String, java.lang.String, java.lang.String, boolean, java.lang.String, java.lang.String, java.lang.String, boolean, java.lang.String)} * . */ @Test public void testJoinStringBuilderStringStringStringBooleanStringStringStringBooleanString() { try { StringBuilder sb = new StringBuilder(); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.join(sb, TABLE_NAME, TABLE_NAME, COLUMN_A_NAME, true, TABLE_NAME2, TABLE_NAME2, COLUMN_B_NAME, true, OPERATOR)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#join()}. */ @Test public void testJoin() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.join()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getColumnName(orgomg.cwm.objectmodel.core.ModelElement)}. */ @Test public void testGetColumnName() { try { TdColumn tdColumn = RelationalFactory.eINSTANCE.createTdColumn(); tdColumn.setName(COLUMN_NAME); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(COLUMN_NAME.equals(dbms.getColumnName(tdColumn))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getTableName(orgomg.cwm.objectmodel.core.ModelElement)}. */ @Test public void testGetTableName() { try { TdTable tdTable = RelationalFactory.eINSTANCE.createTdTable(); tdTable.setName(TABLE_NAME); TdColumn tdColumn = RelationalFactory.eINSTANCE.createTdColumn(); tdColumn.setName(COLUMN_NAME); tdTable.getOwnedElement().add(tdColumn); tdColumn.setOwner(tdTable); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(TABLE_NAME.equals(dbms.getTableName(tdColumn))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getTable(orgomg.cwm.objectmodel.core.ModelElement)}. */ @Test public void testGetTable() { try { TdTable tdTable = RelationalFactory.eINSTANCE.createTdTable(); tdTable.setName(TABLE_NAME); TdColumn tdColumn = RelationalFactory.eINSTANCE.createTdColumn(); tdColumn.setName(COLUMN_NAME); tdTable.getOwnedElement().add(tdColumn); tdColumn.setOwner(tdTable); DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue(tdTable.equals(dbms.getTable(tdColumn))); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#createGenericSqlWithRegexFunction(java.lang.String)}. */ @Test public void testCreateGenericSqlWithRegexFunction() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.createGenericSqlWithRegexFunction(FUNCTION)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getAverageLengthRows()}. */ @Test public void testGetAverageLengthRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getAverageLengthRows()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#isSql()}. */ @Test public void testIsSql() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertFalse(dbms.isSql()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getRegularExpressionFunction()}. */ @Test public void testGetRegularExpressionFunction() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertTrue("REGEXP BINARY".equals(dbms.getRegularExpressionFunction())); //$NON-NLS-1$ } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#trimIfBlank(java.lang.String)}. */ @Test public void testTrimIfBlank() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.trimIfBlank(COLUMN_NAME)); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithBlankRows()}. */ @Test public void testGetAverageLengthWithBlankRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getAverageLengthWithBlankRows()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithNullBlankRows()}. */ @Test public void testGetAverageLengthWithNullBlankRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getAverageLengthWithNullBlankRows()); } catch (Exception e) { fail(e.getMessage()); } } /** * Test method for {@link org.talend.dq.dbms.DbmsLanguage#getAverageLengthWithNullRows()}. */ @Test public void testGetAverageLengthWithNullRows() { try { DbmsLanguage dbms = getMysqlDbmsLanguage(); Assert.assertNotNull(dbms.getAverageLengthWithNullRows()); } catch (Exception e) { fail(e.getMessage()); } } @Test public void testGetQueryColumnsWithPrefix() { DbmsLanguage dbms = getMysqlDbmsLanguage(); TdColumn col1 = RelationalPackage.eINSTANCE.getRelationalFactory().createTdColumn(); col1.setName("myCol1"); //$NON-NLS-1$ TdColumn col2 = RelationalPackage.eINSTANCE.getRelationalFactory().createTdColumn(); col2.setName("myCol2"); //$NON-NLS-1$ TdColumn[] columns = new TdColumn[] { col1, col2 }; TdTable tdTable = createTdTable(); ColumnSetHelper.addColumn(col1, tdTable); ColumnSetHelper.addColumn(col2, tdTable); String queryColWithPrefix = dbms.getQueryColumnsWithPrefix(columns); Assert.assertEquals("`myCatalog`.`myTable`.`myCol1`,`myCatalog`.`myTable`.`myCol2`", queryColWithPrefix); //$NON-NLS-1$ // Assert hive dbms = getHiveDbmsLanguage(); queryColWithPrefix = dbms.getQueryColumnsWithPrefix(columns); Assert.assertEquals("`myCol1`,`myCol2`", queryColWithPrefix); //$NON-NLS-1$ } @Test public void testGetQueryColumnSetWithPrefix() { DbmsLanguage dbms = getMysqlDbmsLanguage(); TdTable tdTable = createTdTable(); String queryColWithPrefix = dbms.getQueryColumnSetWithPrefix(tdTable); Assert.assertEquals("`myCatalog`.`myTable`", queryColWithPrefix); //$NON-NLS-1$ } private TdTable createTdTable() { Connection conn = ConnectionFactory.eINSTANCE.createDatabaseConnection(); Catalog catalog = CatalogHelper.createCatalog("myCatalog"); //$NON-NLS-1$ ConnectionHelper.addCatalog(catalog, conn); List<TdTable> tables = new ArrayList<TdTable>(); TdTable tdTable = RelationalFactory.eINSTANCE.createTdTable(); tdTable.setName("myTable"); //$NON-NLS-1$ tables.add(tdTable); CatalogHelper.addTables(tables, catalog); return tdTable; } @Test public void testGetInvalidClauseBenFord() { // MYSQL DbmsLanguage dbms = getMysqlDbmsLanguage(); String benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or " + COLUMN_A_NAME + " not REGEXP '^[0-9]'"); //$NON-NLS-1$//$NON-NLS-2$ // SYBASE dbms = getSybaseDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or left(convert(char(15)," + COLUMN_A_NAME + "),1) not " //$NON-NLS-1$ //$NON-NLS-2$ + dbms.like() + "'%[0-9]%'"); //$NON-NLS-1$ // POSTGRESQL dbms = getPostgresqlDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or SUBSTRING(" + COLUMN_A_NAME + ", 1,1) ~ '[^0-9]'"); //$NON-NLS-1$//$NON-NLS-2$ // INFORMIX dbms = getInformixDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or SUBSTR(" + COLUMN_A_NAME //$NON-NLS-1$ + ",0,1) not in ('0','1','2','3','4','5','6','7','8','9')"); //$NON-NLS-1$ // DB2 dbms = getDB2DbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or LEFT(" + COLUMN_A_NAME + ",1)" //$NON-NLS-1$//$NON-NLS-2$ + " not in ('0','1','2','3','4','5','6','7','8','9')"); //$NON-NLS-1$ // MSSQL dbms = getMsSqlDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or LEFT(" + COLUMN_A_NAME + ",1) not" + dbms.like() //$NON-NLS-1$//$NON-NLS-2$ + "'%[0-9]%'"); //$NON-NLS-1$ // ORACLE dbms = getOracleDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or " + " regexp_like(SUBSTR(" + COLUMN_A_NAME //$NON-NLS-1$//$NON-NLS-2$ + ",0,1),'^[^[:digit:]]+$')"); //$NON-NLS-1$ // TERDATA dbms = getTeradataDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or cast(" + COLUMN_A_NAME //$NON-NLS-1$ + " as char(1)) not in ('0','1','2','3','4','5','6','7','8','9')"); //$NON-NLS-1$ // VERTICA dbms = getVerticaDbmsLanguage(); benfordClause = dbms.getInvalidClauseBenFord(COLUMN_A_NAME); Assert.assertEquals(benfordClause, COLUMN_A_NAME + " is null or " + "not regexp_like(to_char(" + COLUMN_A_NAME //$NON-NLS-1$ //$NON-NLS-2$ + "),'^[[:digit:]]')"); //$NON-NLS-1$ } /** * DOC qiongli Comment method "getVerticaDbmsLanguage". * * @return */ private DbmsLanguage getVerticaDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.VERTICA, DATABASE_VERSION); } /** * DOC qiongli Comment method "getTeradataDbmsLanguage". * * @return */ private DbmsLanguage getTeradataDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.TERADATA, DATABASE_VERSION); } /** * DOC qiongli Comment method "getOracleDbmsLanguage". * * @return */ private DbmsLanguage getOracleDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.ORACLE, DATABASE_VERSION); } /** * DOC qiongli Comment method "getMsSqlDbmsLanguage". * * @return */ private DbmsLanguage getMsSqlDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, DATABASE_VERSION); } /** * DOC qiongli Comment method "getDB2DbmsLanguage". * * @return */ private DbmsLanguage getDB2DbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.DB2, DATABASE_VERSION); } /** * DOC qiongli Comment method "getInformixDbmsLanguage". * * @return */ private DbmsLanguage getInformixDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.INFOMIX, DATABASE_VERSION); } /** * DOC qiongli Comment method "getPostgresqlDbmsLanguage". * * @return */ private DbmsLanguage getPostgresqlDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.POSTGRESQL, DATABASE_VERSION); } /** * DOC qiongli Comment method "getSybaseDbmsLanguage". * * @return */ private DbmsLanguage getSybaseDbmsLanguage() { return DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.SYBASE, DATABASE_VERSION); } @Test public void testGetColumnNameForClause() { // MYSQL DbmsLanguage dbms = getMysqlDbmsLanguage(); String columnName = dbms.castColumnNameToChar(COLUMN_A_NAME); Assert.assertEquals(columnName, COLUMN_A_NAME); // TERADATA dbms = getTeradataDbmsLanguage(); columnName = dbms.castColumnNameToChar(COLUMN_A_NAME); Assert.assertEquals(columnName, "cast(" + COLUMN_A_NAME + " as char)"); //$NON-NLS-1$ //$NON-NLS-2$ // POSTGRESQL dbms = getPostgresqlDbmsLanguage(); columnName = dbms.castColumnNameToChar(COLUMN_A_NAME); Assert.assertEquals(columnName, "cast(" + COLUMN_A_NAME + " as char)"); //$NON-NLS-1$ //$NON-NLS-2$ // SYBASE dbms = getSybaseDbmsLanguage(); columnName = dbms.castColumnNameToChar(COLUMN_A_NAME); Assert.assertEquals(columnName, "convert(char(15)," + COLUMN_A_NAME + ")"); //$NON-NLS-1$ //$NON-NLS-2$ // VERTICA dbms = getVerticaDbmsLanguage(); columnName = dbms.castColumnNameToChar(COLUMN_A_NAME); Assert.assertEquals(columnName, "to_char(" + COLUMN_A_NAME + ")"); //$NON-NLS-1$ //$NON-NLS-2$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 1:vertica database expression */ @Test public void testExtractRegularExpressionFunctionForVertica() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.VERTICA); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // Vertica Database createExpression.setBody("**"); //$NON-NLS-1$ String regularFunctionName = netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "***"); //$NON-NLS-1$ Assert.assertEquals("REGEXP_LIKE", regularFunctionName); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 2:Hive database expression */ @Test public void testExtractRegularExpressionFunctionForHive() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.HIVEDEFAULTURL); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // Hive Database createExpression.setBody("**"); //$NON-NLS-1$ String regularFunctionName = netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "***"); //$NON-NLS-1$ Assert.assertEquals("REGEXP", regularFunctionName); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 3:PostgreSQL database expression */ @Test public void testExtractRegularExpressionFunctionForPostgreSQL() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.POSTGRESQLEFAULTURL); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // Postgresql Database createExpression.setBody("**"); //$NON-NLS-1$ String regularFunctionName = netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "***"); //$NON-NLS-1$ Assert.assertEquals("~", regularFunctionName); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 4:Oracle database expression */ @Test public void testExtractRegularExpressionFunctionForOracle() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.ORACLEWITHSIDDEFAULTURL); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // oracle Database createExpression.setBody("**"); //$NON-NLS-1$ String regularFunctionName = netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "***"); //$NON-NLS-1$ Assert.assertEquals("REGEXP_LIKE", regularFunctionName); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 8:Mssql database expression */ @Test public void testExtractRegularExpressionFunctionForMssql() { DbmsLanguage mssqlDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.MSSQL2008URL); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // netezza Database UDP mode createExpression .setBody("SELECT COUNT(CASE WHEN dbo.fn_prec_match(<%=__COLUMN_NAMES__%>,<%=__PATTERN_EXPR__%>)=1 THEN 1 END), COUNT(*) FROM <%=__TABLE_NAME__%> <%=__WHERE_CLAUSE__%>"); //$NON-NLS-1$ String regularFunctionName = mssqlDbmsLanguage .extractRegularExpressionFunction(createExpression, "<%=__PATTERN_EXPR__%>"); //$NON-NLS-1$ Assert.assertEquals("dbo.fn_prec_match".toUpperCase(), regularFunctionName); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 6:Netezza database expression */ @Test public void testExtractRegularExpressionFunctionForNetezza() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(SupportDBUrlType.NETEZZADEFAULTURL); Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // netezza Database UDP mode createExpression .setBody("SELECT COUNT(CASE WHEN REGEXP_EXTRACT(<%=__COLUMN_NAMES__%>,<%=__PATTERN_EXPR__%>) THEN 1 END), COUNT(*) FROM <%=__TABLE_NAME__%> <%=__WHERE_CLAUSE__%>"); //$NON-NLS-1$ try { netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "<%=__PATTERN_EXPR__%>"); //$NON-NLS-1$ } catch (UnsupportedOperationException e) { Assert.fail("Default DbmsLanguage don't should call extractRegularExpressionFunction method should thorw UnsupportedOperationException."); //$NON-NLS-1$ } } /** * * {@link org.talend.dq.dbms.DbmsLanguage#extractRegularExpressionFunction(Expression)}. * * case 7:Other database expression */ @Test public void testExtractRegularExpressionFunctionForOthers() { DbmsLanguage netezzaDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage("SQL", "0.1"); //$NON-NLS-1$ //$NON-NLS-2$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default case createExpression.setBody("**** WHEN RegularFunctionName(***)returnValue THEN **)****"); //$NON-NLS-1$ try { netezzaDbmsLanguage.extractRegularExpressionFunction(createExpression, "***"); //$NON-NLS-1$ } catch (UnsupportedOperationException e) { Assert.fail("Default DbmsLanguage don't should call extractRegularExpressionFunction method should thorw UnsupportedOperationException."); //$NON-NLS-1$ } } /** * * {@link org.talend.dq.dbms.DbmsLanguage#getFunctionReturnValue()}. * * case 1:RegularfunctionReturnValue is null */ @Test public void testGetFunctionReturnValue() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage("SQL", "1.0"); //$NON-NLS-1$ //$NON-NLS-2$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals(StringUtils.EMPTY, regularfunctionReturnValue); } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 1:The body of expression is null */ @Test public void testSetFunctionReturnValueCase1() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, "1.0"); //$NON-NLS-1$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals(StringUtils.EMPTY, regularfunctionReturnValue); } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 2:Can not find the keyword for "when" in the body of expression. */ @Test public void testSetFunctionReturnValueCase2() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, "1.0"); //$NON-NLS-1$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default Database createExpression.setBody("**** RegularFunctionName(***)returnValue THEN **)****"); //$NON-NLS-1$ dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals(StringUtils.EMPTY, regularfunctionReturnValue); } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 3:Can not find the keyword for ")" in the body of expression. */ @Test public void testSetFunctionReturnValueCase3() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, "1.0"); //$NON-NLS-1$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default Database createExpression.setBody("**** WHEN RegularFunctionName(***returnValue THEN ******"); //$NON-NLS-1$ dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals(StringUtils.EMPTY, regularfunctionReturnValue); } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 4:Can not find the keyword for "THEN" in the body of expression. */ @Test public void testSetFunctionReturnValueCase4() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, "1.0"); //$NON-NLS-1$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default Database createExpression.setBody("**** WHEN RegularFunctionName(***)returnValue **)****"); //$NON-NLS-1$ dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals(StringUtils.EMPTY, regularfunctionReturnValue); } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 5:normal case */ @Test public void testSetFunctionReturnValueCase5() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(DbmsLanguage.MSSQL, "1.0"); //$NON-NLS-1$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default Database createExpression.setBody("**** WHEN RegularFunctionName(***)returnValue THEN **)****"); //$NON-NLS-1$ dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals("RETURNVALUE", regularfunctionReturnValue); //$NON-NLS-1$ } /** * * {@link org.talend.dq.dbms.DbmsLanguage#setFunctionReturnValue(Expression)}. * * case 6: dbmsLanguage is sql */ @Test public void testSetFunctionReturnValueCase6() { DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage("sql", "1.0"); //$NON-NLS-1$ //$NON-NLS-2$ Expression createExpression = CoreFactory.eINSTANCE.createExpression(); // default Database createExpression.setBody("**** WHEN RegularFunctionName(***)returnValue THEN **)****"); //$NON-NLS-1$ dbmsLanguage.setFunctionReturnValue(dbmsLanguage.extractRegularExpressionFunctionReturnValue(createExpression, "***")); //$NON-NLS-1$ String regularfunctionReturnValue = dbmsLanguage.getFunctionReturnValue(); Assert.assertEquals("RETURNVALUE", regularfunctionReturnValue); //$NON-NLS-1$ } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case1() { String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String db2Lang = "DB2"; //$NON-NLS-1$ String db2Body = "DB2 body"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ String db2NTBody = "DB2/NT body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = db2NTLang; EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression2 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression2.setLanguage(db2Lang); tdExpression2.setBody(db2Body); sqlGenericExpression.add(tdExpression2); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(db2NTLang); tdExpression3.setBody(db2NTBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression3, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case2() { String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String db2Lang = "DB2"; //$NON-NLS-1$ String db2Body = "DB2 body"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ String db2NTBody = "DB2/NT body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = db2Lang; EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression2 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression2.setLanguage(db2Lang); tdExpression2.setBody(db2Body); sqlGenericExpression.add(tdExpression2); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(db2NTLang); tdExpression3.setBody(db2NTBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression2, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case3() { String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String db2Lang = "DB2"; //$NON-NLS-1$ String db2Body = "DB2 body"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = db2NTLang; EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression2 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression2.setLanguage(db2Lang); tdExpression2.setBody(db2Body); sqlGenericExpression.add(tdExpression2); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression2, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case4() { String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String db2Lang = "DB2"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ String db2NTBody = "DB2/NT body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = db2Lang; EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(db2NTLang); tdExpression3.setBody(db2NTBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression3, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case5() { String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String db2Lang = "DB2"; //$NON-NLS-1$ String db2Body = "DB2 body"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ String db2NTBody = "DB2/NT body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = "unknown"; //$NON-NLS-1$ EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression2 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression2.setLanguage(db2Lang); tdExpression2.setBody(db2Body); sqlGenericExpression.add(tdExpression2); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(db2NTLang); tdExpression3.setBody(db2NTBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression1, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionDB2Case6() { String db2Lang = "DB2"; //$NON-NLS-1$ String db2Body = "DB2 body"; //$NON-NLS-1$ String db2NTLang = "DB2/NT"; //$NON-NLS-1$ String db2NTBody = "DB2/NT body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); String language = "unknown"; //$NON-NLS-1$ EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression2 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression2.setLanguage(db2Lang); tdExpression2.setBody(db2Body); sqlGenericExpression.add(tdExpression2); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(db2NTLang); tdExpression3.setBody(db2NTBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage .getSqlExpression(indicatorDefinition, language, sqlGenericExpression, dbVersion); Assert.assertEquals(null, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionRedshiftCase1() { // TDQ-11558 msjian: test for get sql expresstion for redshift database String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String redshiftLang = SupportDBUrlType.REDSHIFT.getLanguage(); String redshiftBody = "Amazon redshift body"; //$NON-NLS-1$ String postgresqlLang = SupportDBUrlType.POSTGRESQLEFAULTURL.getLanguage(); String postgresqlBody = "PostgreSQL body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(postgresqlLang); tdExpression3.setBody(postgresqlBody); sqlGenericExpression.add(tdExpression3); TdExpression tdExpression4 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression4.setLanguage(redshiftLang); tdExpression4.setBody(redshiftBody); sqlGenericExpression.add(tdExpression4); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage.getSqlExpression(indicatorDefinition, redshiftLang, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression4, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionRedshiftCase2() { // TDQ-11558 msjian: test for get sql expresstion for redshift database when there is no redshift defined String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String redshiftLang = SupportDBUrlType.REDSHIFT.getLanguage(); String postgresqlLang = SupportDBUrlType.POSTGRESQLEFAULTURL.getLanguage(); String postgresqlBody = "PostgreSQL body"; //$NON-NLS-1$ IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); TdExpression tdExpression3 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression3.setLanguage(postgresqlLang); tdExpression3.setBody(postgresqlBody); sqlGenericExpression.add(tdExpression3); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage.getSqlExpression(indicatorDefinition, redshiftLang, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression3, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSqlExpression(IndicatorDefinition, String, EList, ProductVersion)} . */ @Test public void testGetSqlExpressionRedshiftCase3() { // TDQ-11558 msjian: test for get sql expresstion for redshift database when there is no redshift and ParAccel // and PostgreSQL defined String sqlLang = "SQL"; //$NON-NLS-1$ String sqlBody = "SQL body"; //$NON-NLS-1$ String redshiftLang = SupportDBUrlType.REDSHIFT.getLanguage(); IndicatorDefinition indicatorDefinition = DefinitionFactory.eINSTANCE.createIndicatorDefinition(); EList<TdExpression> sqlGenericExpression = new BasicEList<TdExpression>(); TdExpression tdExpression1 = RelationalFactory.eINSTANCE.createTdExpression(); tdExpression1.setLanguage(sqlLang); tdExpression1.setBody(sqlBody); sqlGenericExpression.add(tdExpression1); ProductVersion dbVersion = new ProductVersion(1, 0); TdExpression sqlExpression = DbmsLanguage.getSqlExpression(indicatorDefinition, redshiftLang, sqlGenericExpression, dbVersion); Assert.assertEquals(tdExpression1, sqlExpression); } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectColumnsStr(org.talend.core.model.metadata.builder.connection.MetadataTable) * case1 mysql 4 columns */ @Test public void testGetSelectColumnsStrCase1() { DbmsLanguage dbms = getMysqlDbmsLanguage(); // create metadata table MetadataTable createMetadataTable = ConnectionFactory.eINSTANCE.createMetadataTable(); // ~create metadata table // create metadata column String[] columnNames = new String[] { "id", "name", "number", "date" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ createMetadataColumns(createMetadataTable, columnNames); // ~create metadata column String selectColumnsStr = dbms.getSelectColumnsStr(createMetadataTable); Assert.assertEquals("`id`,`name`,`number`,`date`", selectColumnsStr); //$NON-NLS-1$ } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectColumnsStr(org.talend.core.model.metadata.builder.connection.MetadataTable) * case2 mysql 0 columns */ @Test public void testGetSelectColumnsStrCase2() { DbmsLanguage dbms = getMysqlDbmsLanguage(); // create metadata table MetadataTable createMetadataTable = ConnectionFactory.eINSTANCE.createMetadataTable(); // ~create metadata table // create metadata column String[] columnNames = new String[] {}; createMetadataColumns(createMetadataTable, columnNames); // ~create metadata column String selectColumnsStr = dbms.getSelectColumnsStr(createMetadataTable); Assert.assertEquals("*", selectColumnsStr); //$NON-NLS-1$ } /** * Test method for * {@link org.talend.dq.dbms.DbmsLanguage#getSelectColumnsStr(org.talend.core.model.metadata.builder.connection.MetadataTable) * case3 mysql 1 column */ @Test public void testGetSelectColumnsStrCase3() { DbmsLanguage dbms = getMysqlDbmsLanguage(); // create metadata table MetadataTable createMetadataTable = ConnectionFactory.eINSTANCE.createMetadataTable(); // ~create metadata table // create metadata column String[] columnNames = new String[] { "id" }; //$NON-NLS-1$ createMetadataColumns(createMetadataTable, columnNames); // ~create metadata column String selectColumnsStr = dbms.getSelectColumnsStr(createMetadataTable); Assert.assertEquals("`id`", selectColumnsStr); //$NON-NLS-1$ } private void createMetadataColumns(MetadataTable parentTable, String[] columnNames) { for (String name : columnNames) { MetadataColumn createMetadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); createMetadataColumn.setName(name); parentTable.getColumns().add(createMetadataColumn); } } }