// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.dataprofiler.core.migration.impl; import java.util.Date; import org.talend.core.model.metadata.builder.database.dburl.SupportDBUrlType; import org.talend.dataprofiler.core.migration.AbstractWorksapceUpdateTask; import org.talend.dataprofiler.core.migration.helper.IndicatorDefinitionFileHelper; import org.talend.dataquality.indicators.definition.IndicatorDefinition; import org.talend.dq.indicators.definitions.DefinitionHandler; /** * @author scorreia * * This migration task removes the call to the Oracle TRIM function when computing the length indicators */ public class AddTeradataExpressionInPatternFrenquencyIndicatorTask extends AbstractWorksapceUpdateTask { private final String PATTERN_FREQUENCY_UUID = "_kQzTsJR-Ed2XO-JvLwVAwg"; //$NON-NLS-1$ private final String PATTERN_LOW_FREQUENCY_UUID = "_OCTbwJR_Ed2XO-JvLwVAwg"; //$NON-NLS-1$ private final String Teradata = SupportDBUrlType.TERADATADEFAULTURL.getLanguage(); private final String CHAR_TOREPLACE = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";//$NON-NLS-1$ private final String CHAR_REPLACE = "aaaaaaaaaaaaaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAAAA9999999999";//$NON-NLS-1$ private final String CHAR_NAME = "Characters mapping on Teradata";//$NON-NLS-1$ private final String PATTERN_FREQUENCY_SQL = "SELECT <%=__COLUMN_NAMES__%>, COUNT(*) c FROM <%=__TABLE_NAME__%> t <%=__WHERE_CLAUSE__%> GROUP BY <%=__GROUP_BY_ALIAS__%> ORDER BY c DESC";//$NON-NLS-1$ private final String PATTERN_LOW_FREQUENCY_SQL = "SELECT <%=__COLUMN_NAMES__%>, COUNT(*) c FROM <%=__TABLE_NAME__%> t <%=__WHERE_CLAUSE__%> GROUP BY <%=__GROUP_BY_ALIAS__%> ORDER BY c ASC";//$NON-NLS-1$ /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.AMigrationTask#doExecute() */ @Override protected boolean doExecute() throws Exception { DefinitionHandler definitionHandler = DefinitionHandler.getInstance(); boolean isFrequencyAdded = true; boolean isLowFrequencyUpdated = true; // Add sql of Teradata to pattern frenquency table indicator IndicatorDefinition teraDefinition = definitionHandler.getDefinitionById(PATTERN_FREQUENCY_UUID); if (teraDefinition != null && !IndicatorDefinitionFileHelper.isExistSqlExprWithLanguage(teraDefinition, Teradata)) { IndicatorDefinitionFileHelper.addSqlExpression(teraDefinition, Teradata, PATTERN_FREQUENCY_SQL); IndicatorDefinitionFileHelper.addCharacterMapping(teraDefinition, Teradata, CHAR_NAME, CHAR_TOREPLACE, CHAR_REPLACE); isFrequencyAdded = IndicatorDefinitionFileHelper.save(teraDefinition); } // Update sql of Teradata to pattern low frenquency table indicator IndicatorDefinition lowDefinition = definitionHandler.getDefinitionById(PATTERN_LOW_FREQUENCY_UUID); if (teraDefinition != null && !IndicatorDefinitionFileHelper.isExistSqlExprWithLanguage(lowDefinition, Teradata)) { IndicatorDefinitionFileHelper.addSqlExpression(lowDefinition, Teradata, PATTERN_LOW_FREQUENCY_SQL); IndicatorDefinitionFileHelper.addCharacterMapping(lowDefinition, Teradata, CHAR_NAME, CHAR_TOREPLACE, CHAR_REPLACE); isLowFrequencyUpdated = IndicatorDefinitionFileHelper.save(lowDefinition); } DefinitionHandler.getInstance().reloadIndicatorsDefinitions(); if (!isFrequencyAdded || !isLowFrequencyUpdated) { return false; } return true; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getMigrationTaskType() */ public MigrationTaskType getMigrationTaskType() { return MigrationTaskType.FILE; } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.migration.IWorkspaceMigrationTask#getOrder() */ public Date getOrder() { return createDate(2012, 12, 27); } }