Search in sources :

Example 26 with DbmsLanguage

use of org.talend.dq.dbms.DbmsLanguage in project tdq-studio-se by Talend.

the class ChartTableFactory method createPattern.

/**
 * DOC bZhou Comment method "createPattern".
 *
 * @param analysis
 * @param itemEntity
 * @param pattTransformer
 */
public static void createPattern(Analysis analysis, String query) {
    DbmsLanguage language = DbmsLanguageFactory.createDbmsLanguage(analysis);
    PatternTransformer pattTransformer = new PatternTransformer(language);
    String regex = pattTransformer.getRegexp(query);
    IFolder folder = ResourceManager.getPatternRegexFolder();
    // $NON-NLS-1$ //$NON-NLS-2$
    new CreatePatternAction(folder, ExpressionType.REGEXP, "'" + regex + "'", language.getDbmsName()).run();
}
Also used : DbmsLanguage(org.talend.dq.dbms.DbmsLanguage) PatternTransformer(org.talend.dq.pattern.PatternTransformer) CreatePatternAction(org.talend.dataprofiler.core.pattern.actions.CreatePatternAction) IFolder(org.eclipse.core.resources.IFolder)

Example 27 with DbmsLanguage

use of org.talend.dq.dbms.DbmsLanguage in project tdq-studio-se by Talend.

the class ChartTableFactory method addMenuAndTip.

public static void addMenuAndTip(final TableViewer tbViewer, final IDataExplorer explorer, final Analysis analysis) {
    final Table table = tbViewer.getTable();
    table.addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent e) {
            // MOD xqliu 2009-05-11 bug 6561
            if (table.getMenu() != null) {
                table.getMenu().setVisible(false);
            }
            if (e.button == 3) {
                StructuredSelection selection = (StructuredSelection) tbViewer.getSelection();
                final ChartDataEntity dataEntity = (ChartDataEntity) selection.getFirstElement();
                final Indicator indicator = dataEntity != null ? dataEntity.getIndicator() : null;
                if (indicator != null && dataEntity != null) {
                    Menu menu = new Menu(table.getShell(), SWT.POP_UP);
                    table.setMenu(menu);
                    MenuItemEntity[] itemEntities = ChartTableMenuGenerator.generate(explorer, analysis, dataEntity);
                    if (ExecutionLanguage.SQL == analysis.getParameters().getExecutionLanguage()) {
                        boolean showExtraMenu = false;
                        for (final MenuItemEntity itemEntity : itemEntities) {
                            MenuItem item = new MenuItem(menu, SWT.PUSH);
                            item.setText(itemEntity.geti18nLabel());
                            item.setImage(itemEntity.getIcon());
                            item.addSelectionListener(new SelectionAdapter() {

                                @Override
                                public void widgetSelected(SelectionEvent e1) {
                                    // DBMSLanguage.
                                    if (isPatternMatchingIndicator(indicator) && !((PatternExplorer) explorer).isImplementRegexFunction(itemEntity.getLabel())) {
                                        MessageDialog.openInformation(null, itemEntity.getLabel(), // $NON-NLS-1$
                                        DefaultMessagesImpl.getString("ChartTableFactory.NoSupportPatternTeradata"));
                                        return;
                                    }
                                    String query = itemEntity.getQuery();
                                    String editorName = indicator.getName();
                                    Connection tdDataProvider = (Connection) analysis.getContext().getConnection();
                                    SqlExplorerUtils.getDefault().runInDQViewer(tdDataProvider, query, editorName);
                                }
                            });
                            // condition columns
                            if (IndicatorHelper.isWhereRuleIndicator(indicator)) {
                                // MOD yyin 20121126 TDQ-6477,show the menu only when Join condition exists
                                WhereRuleIndicator ind = (WhereRuleIndicator) indicator;
                                EList<JoinElement> joinConditions = ind.getJoinConditions();
                                if (joinConditions.size() > 0) {
                                    showExtraMenu = true;
                                }
                            }
                            if (isPatternFrequencyIndicator(indicator) && !isEastAsiaPatternFrequencyIndicator(indicator)) {
                                createMenuOfGenerateRegularPattern(analysis, menu, dataEntity);
                            }
                        }
                        // show extra menu to create simple analysis, help user to find the duplicated rows
                        if (showExtraMenu) {
                            MenuItem itemCreateWhereRule = new MenuItem(menu, SWT.PUSH);
                            itemCreateWhereRule.setText(DefaultMessagesImpl.getString(// $NON-NLS-1$
                            "ChartTableFactory.JoinConditionColumnsAnalysis"));
                            itemCreateWhereRule.addSelectionListener(new SelectionAdapter() {

                                @Override
                                public void widgetSelected(SelectionEvent e1) {
                                    final StructuredSelection selectionOne = (StructuredSelection) tbViewer.getSelection();
                                    // MOD xqliu 2012-05-11 TDQ-5314
                                    Object firstElement = selectionOne.getFirstElement();
                                    if (firstElement instanceof WhereRuleChartDataEntity) {
                                        // get the WhereRuleIndicator
                                        WhereRuleChartDataEntity wrChartDataEntity = (WhereRuleChartDataEntity) firstElement;
                                        WhereRuleIndicator wrInd = (WhereRuleIndicator) wrChartDataEntity.getIndicator();
                                        // run the CreateDuplicatesAnalysisAction
                                        CreateDuplicatesAnalysisAction action = new CreateDuplicatesAnalysisAction(buildColumnsMap(wrInd));
                                        action.run();
                                    }
                                // ~ TDQ-5314
                                }

                                /**
                                 * DOC xqliu Comment method "buildColumnsMap".
                                 *
                                 * @param wrInd
                                 * @return
                                 */
                                private Map<ColumnSet, List<TdColumn>> buildColumnsMap(WhereRuleIndicator wrInd) {
                                    Map<ColumnSet, List<TdColumn>> map = new HashMap<ColumnSet, List<TdColumn>>();
                                    // get all columns from the WhereRuleIndicator
                                    List<TdColumn> columns = new ArrayList<TdColumn>();
                                    EList<JoinElement> joinConditions = wrInd.getJoinConditions();
                                    for (JoinElement joinElement : joinConditions) {
                                        // add left column
                                        TdColumn tempColumn = (TdColumn) joinElement.getColA();
                                        if (!columns.contains(tempColumn)) {
                                            columns.add(tempColumn);
                                        }
                                        // add right column
                                        tempColumn = (TdColumn) joinElement.getColB();
                                        if (!columns.contains(tempColumn)) {
                                            columns.add(tempColumn);
                                        }
                                    }
                                    // build the map
                                    for (TdColumn column : columns) {
                                        ColumnSet columnSet = ColumnHelper.getColumnOwnerAsColumnSet(column);
                                        List<TdColumn> list = map.get(columnSet);
                                        if (list == null) {
                                            list = new ArrayList<TdColumn>();
                                            map.put(columnSet, list);
                                        }
                                        list.add(column);
                                    }
                                    // get the user selected map
                                    return getUserSelectedMap(map);
                                }

                                /**
                                 * DOC xqliu Comment method "getUserSelectedMap".
                                 *
                                 * @param map
                                 * @return
                                 */
                                private Map<ColumnSet, List<TdColumn>> getUserSelectedMap(Map<ColumnSet, List<TdColumn>> map) {
                                    Map<ColumnSet, List<TdColumn>> userMap = new HashMap<ColumnSet, List<TdColumn>>();
                                    // get the column nodes
                                    List<RepositoryNode> columnNodes = getColumnNodes(map);
                                    // get the connection node
                                    RepositoryNode rootNode = getConnectionNode(map);
                                    // show the dialog, let user select the columns
                                    if (!columnNodes.isEmpty() && rootNode != null) {
                                        ColumnsMapSelectionDialog dialog = new ColumnsMapSelectionDialog(null, PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), // $NON-NLS-1$
                                        DefaultMessagesImpl.getString("ColumnsMapSelectionDialog.columnSelection"), // $NON-NLS-1$
                                        columnNodes, // $NON-NLS-1$
                                        rootNode, // $NON-NLS-1$
                                        DefaultMessagesImpl.getString("ColumnsMapSelectionDialog.columnSelections"));
                                        dialog.setAllMap(map);
                                        if (dialog.open() == Window.OK) {
                                            userMap = dialog.getUserMap();
                                        }
                                    }
                                    return userMap;
                                }

                                /**
                                 * DOC xqliu Comment method "getConnectionNode".
                                 *
                                 * @param map
                                 * @return
                                 */
                                private RepositoryNode getConnectionNode(Map<ColumnSet, List<TdColumn>> map) {
                                    RepositoryNode node = null;
                                    if (map != null && !map.isEmpty()) {
                                        Connection connection = ConnectionHelper.getConnection(map.keySet().iterator().next());
                                        if (connection != null) {
                                            node = RepositoryNodeHelper.recursiveFind(connection);
                                        }
                                    }
                                    return node;
                                }

                                /**
                                 * DOC xqliu Comment method "getColumnNodes".
                                 *
                                 * @param map
                                 * @return
                                 */
                                private List<RepositoryNode> getColumnNodes(Map<ColumnSet, List<TdColumn>> map) {
                                    List<RepositoryNode> nodes = new ArrayList<RepositoryNode>();
                                    if (map != null && !map.isEmpty()) {
                                        List<TdColumn> columns = new ArrayList<TdColumn>();
                                        Set<ColumnSet> keySet = map.keySet();
                                        for (ColumnSet cs : keySet) {
                                            columns.addAll(map.get(cs));
                                        }
                                        if (!columns.isEmpty()) {
                                            for (TdColumn column : columns) {
                                                nodes.add(RepositoryNodeHelper.recursiveFind(column));
                                            }
                                        }
                                    }
                                    return nodes;
                                }
                            });
                        }
                    } else {
                        if (analysis.getParameters().isStoreData()) {
                            // if allow drill down
                            if (indicator.isUsedMapDBMode()) {
                                DrillDownUtils.createDrillDownMenuForMapDB(dataEntity, menu, itemEntities, analysis);
                            } else {
                                DrillDownUtils.createDrillDownMenuForJava(dataEntity, menu, itemEntities, analysis);
                            }
                            if (isPatternFrequencyIndicator(indicator) && !isEastAsiaPatternFrequencyIndicator(indicator)) {
                                for (final MenuItemEntity itemEntity : itemEntities) {
                                    createMenuOfGenerateRegularPattern(analysis, menu, dataEntity);
                                }
                            }
                        }
                        // MOD by zshen feature 11574:add menu "Generate regular pattern" to date pattern
                        if (isDatePatternFrequencyIndicator(indicator)) {
                            final DatePatternFreqIndicator dateIndicator = (DatePatternFreqIndicator) indicator;
                            MenuItem itemCreatePatt = new MenuItem(menu, SWT.PUSH);
                            // $NON-NLS-1$
                            itemCreatePatt.setText(DefaultMessagesImpl.getString("ChartTableFactory.GenerateRegularPattern"));
                            itemCreatePatt.setImage(ImageLib.getImage(ImageLib.PATTERN_REG));
                            itemCreatePatt.addSelectionListener(new SelectionAdapter() {

                                @Override
                                public void widgetSelected(SelectionEvent e1) {
                                    DbmsLanguage language = DbmsLanguageFactory.createDbmsLanguage(analysis);
                                    IFolder folder = ResourceManager.getPatternRegexFolder();
                                    String model = dataEntity.getLabel();
                                    String regex = dateIndicator.getRegex(model);
                                    new CreatePatternAction(folder, ExpressionType.REGEXP, "'" + regex + "'", model == null ? "" : "match \"" + model + "\"", language.getDbmsName()).run();
                                }
                            });
                        }
                    }
                    addJobGenerationMenu(menu, analysis, indicator);
                    // ~11574
                    menu.setVisible(true);
                }
            }
        }
    });
    // add tooltip
    TableUtils.addTooltipForTable(table);
    TableUtils.addActionTooltip(table);
}
Also used : HashMap(java.util.HashMap) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) ArrayList(java.util.ArrayList) ColumnSet(orgomg.cwm.resource.relational.ColumnSet) DbmsLanguage(org.talend.dq.dbms.DbmsLanguage) WhereRuleIndicator(org.talend.dataquality.indicators.sql.WhereRuleIndicator) SelectionEvent(org.eclipse.swt.events.SelectionEvent) List(java.util.List) ArrayList(java.util.ArrayList) EList(org.eclipse.emf.common.util.EList) Menu(org.eclipse.swt.widgets.Menu) CreatePatternAction(org.talend.dataprofiler.core.pattern.actions.CreatePatternAction) CreateDuplicatesAnalysisAction(org.talend.dataprofiler.core.ui.action.actions.CreateDuplicatesAnalysisAction) TdTable(org.talend.cwm.relational.TdTable) Table(org.eclipse.swt.widgets.Table) MouseEvent(org.eclipse.swt.events.MouseEvent) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) MouseAdapter(org.eclipse.swt.events.MouseAdapter) DatabaseConnection(org.talend.core.model.metadata.builder.connection.DatabaseConnection) Connection(org.talend.core.model.metadata.builder.connection.Connection) MenuItem(org.eclipse.swt.widgets.MenuItem) WhereRuleChartDataEntity(org.talend.dq.indicators.preview.table.WhereRuleChartDataEntity) ChartDataEntity(org.talend.dq.indicators.preview.table.ChartDataEntity) RepositoryNode(org.talend.repository.model.RepositoryNode) ColumnsMapSelectionDialog(org.talend.dataprofiler.core.ui.dialog.ColumnsMapSelectionDialog) UniqueCountIndicator(org.talend.dataquality.indicators.UniqueCountIndicator) EastAsiaPatternLowFreqIndicator(org.talend.dataquality.indicators.EastAsiaPatternLowFreqIndicator) FrequencyIndicator(org.talend.dataquality.indicators.FrequencyIndicator) DatePatternFreqIndicator(org.talend.dataquality.indicators.DatePatternFreqIndicator) EastAsiaPatternFreqIndicator(org.talend.dataquality.indicators.EastAsiaPatternFreqIndicator) WellFormE164PhoneCountIndicator(org.talend.dataquality.indicators.WellFormE164PhoneCountIndicator) PatternLowFreqIndicator(org.talend.dataquality.indicators.PatternLowFreqIndicator) PatternFreqIndicator(org.talend.dataquality.indicators.PatternFreqIndicator) AllMatchIndicator(org.talend.dataquality.indicators.columnset.AllMatchIndicator) ValidPhoneCountIndicator(org.talend.dataquality.indicators.ValidPhoneCountIndicator) WellFormIntePhoneCountIndicator(org.talend.dataquality.indicators.WellFormIntePhoneCountIndicator) PossiblePhoneCountIndicator(org.talend.dataquality.indicators.PossiblePhoneCountIndicator) PatternMatchingIndicator(org.talend.dataquality.indicators.PatternMatchingIndicator) Indicator(org.talend.dataquality.indicators.Indicator) SqlPatternMatchingIndicator(org.talend.dataquality.indicators.SqlPatternMatchingIndicator) DistinctCountIndicator(org.talend.dataquality.indicators.DistinctCountIndicator) DuplicateCountIndicator(org.talend.dataquality.indicators.DuplicateCountIndicator) WellFormNationalPhoneCountIndicator(org.talend.dataquality.indicators.WellFormNationalPhoneCountIndicator) WhereRuleIndicator(org.talend.dataquality.indicators.sql.WhereRuleIndicator) JoinElement(org.talend.dataquality.rules.JoinElement) EList(org.eclipse.emf.common.util.EList) TdColumn(org.talend.cwm.relational.TdColumn) WhereRuleChartDataEntity(org.talend.dq.indicators.preview.table.WhereRuleChartDataEntity) DatePatternFreqIndicator(org.talend.dataquality.indicators.DatePatternFreqIndicator) Map(java.util.Map) HashMap(java.util.HashMap) PatternExplorer(org.talend.dq.analysis.explore.PatternExplorer) IFolder(org.eclipse.core.resources.IFolder)

Example 28 with DbmsLanguage

use of org.talend.dq.dbms.DbmsLanguage in project tdq-studio-se by Talend.

the class PatternLabelProvider method createIndicatorUnit.

/**
 * DOC xqliu Comment method "createIndicatorUnit".
 *
 * @param pfile
 * @param modelElementIndicator
 * @param analysis
 * @param indicatorDefinition
 * @return
 */
public static TypedReturnCode<IndicatorUnit> createIndicatorUnit(Pattern pattern, ModelElementIndicator modelElementIndicator, Analysis analysis, IndicatorDefinition indicatorDefinition) {
    TypedReturnCode<IndicatorUnit> result = new TypedReturnCode<IndicatorUnit>();
    for (Indicator indicator : modelElementIndicator.getIndicators()) {
        // MOD xwang 2011-08-01 bug TDQ-2730
        if (UDIHelper.getMatchingIndicatorName(indicatorDefinition, pattern).equals(indicator.getName()) && indicator instanceof PatternMatchingIndicator) {
            result.setOk(false);
            // $NON-NLS-1$
            result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.Selected"));
            return result;
        }
    // ~
    }
    // MOD scorreia 2009-01-06: when expression type is not set (version
    // TOP-1.1.x), then it's supposed to be a
    // regexp pattern. This could be false because expression type was not
    // set into SQL pattern neither in TOP-1.1.
    // This means that there could exist the need for a migration task to
    // set the expression type depending on the
    // folder where the pattern is stored. The method
    // DomainHelper.getExpressionType(pattern) tries to find the type
    // of pattern.
    Indicator patternMatchingIndicator = null;
    String expressionType = DomainHelper.getExpressionType(pattern);
    boolean isSQLPattern = (ExpressionType.SQL_LIKE.getLiteral().equals(expressionType));
    if (indicatorDefinition != null) {
        patternMatchingIndicator = UDIFactory.createUserDefIndicator(indicatorDefinition, pattern);
    } else {
        patternMatchingIndicator = isSQLPattern ? PatternIndicatorFactory.createSqlPatternMatchingIndicator(pattern) : PatternIndicatorFactory.createRegexpMatchingIndicator(pattern);
    }
    IEditorPart theEdit = CorePlugin.getDefault().getCurrentActiveEditor();
    if (theEdit != null && theEdit instanceof AnalysisEditor && analysis.getContext().getConnection() == null) {
        theEdit.doSave(null);
    }
    ExecutionLanguage executionLanguage = analysis.getParameters().getExecutionLanguage();
    DbmsLanguage dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(analysis);
    if (dbmsLanguage.isSql()) {
        // $NON-NLS-1$
        MessageUI.openWarning(DefaultMessagesImpl.getString("PatternUtilities.ConnectionError"));
        result.setOk(false);
        return result;
    }
    boolean isJavaEngin = ExecutionLanguage.JAVA.equals(executionLanguage);
    Expression returnExpression = dbmsLanguage.getRegexp(pattern);
    // MOD gdbu 2011-8-26 bug : TDQ-2169
    if ((ExpressionType.REGEXP.getLiteral().equals(expressionType) || ExpressionType.SQL_LIKE.getLiteral().equals(expressionType)) && returnExpression == null) {
        // ~TDQ-2169
        String executeType = isJavaEngin ? executionLanguage.getName() : dbmsLanguage.getDbmsName();
        boolean openPattern = MessageDialog.openQuestion(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), DefaultMessagesImpl.getString("PatternUtilities.Warning"), // $NON-NLS-1$ //$NON-NLS-2$
        DefaultMessagesImpl.getString("PatternUtilities.NoExpression", executeType, pattern.getName()));
        if (openPattern) {
            RepositoryNode node = RepositoryNodeHelper.recursiveFind(pattern);
            if (RepositoryNodeHelper.canOpenEditor(node)) {
                new OpenItemEditorAction(new IRepositoryNode[] { node }).run();
            }
        }
        result.setOk(false);
        return result;
    }
    // a regular expression for the analyzed
    // database, but we probably test also whether the analyzed database
    // support the regular expressions (=> check
    // DB type, DB number version, existence of UDF)
    DataManager dm = analysis.getContext().getConnection();
    if (dm != null) {
        TypedReturnCode<java.sql.Connection> trc = JavaSqlFactory.createConnection((Connection) dm);
        // MOD qiongli 2011-1-10 feature 16796
        boolean isDelimitedFileConnection = ConnectionUtils.isDelimitedFileConnection((DataProvider) dm);
        if (trc != null) {
            // SoftwareSystem softwareSystem = DatabaseContentRetriever.getSoftwareSystem(conn);
            // MOD sizhaoliu TDQ-6316
            dbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(dm);
        }
        // MOD xqliu 2010-08-12 bug 14601
        if (!(isSQLPattern || DefinitionHandler.getInstance().canRunRegularExpressionMatchingIndicator(dbmsLanguage, isJavaEngin, pattern) || isDelimitedFileConnection)) {
            // MessageDialogWithToggle.openInformation(null,
            // DefaultMessagesImpl.getString("PatternUtilities.Pattern"), DefaultMessagesImpl //$NON-NLS-1$
            // .getString("PatternUtilities.couldnotSetIndicator")); //$NON-NLS-1$
            result.setOk(false);
            // $NON-NLS-1$
            result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.couldnotSetIndicator"));
            return result;
        }
    // ~ 14601
    }
    // when the indicator is created.
    if (indicatorDefinition == null) {
        if (!DefinitionHandler.getInstance().setDefaultIndicatorDefinition(patternMatchingIndicator)) {
            // $NON-NLS-1$
            log.error(DefaultMessagesImpl.getString("PatternUtilities.SetFailed", patternMatchingIndicator.getName()));
        }
    } else {
        patternMatchingIndicator.setIndicatorDefinition(indicatorDefinition);
    }
    IndicatorEnum type = IndicatorEnum.findIndicatorEnum(patternMatchingIndicator.eClass());
    IndicatorUnit addIndicatorUnit = modelElementIndicator.addSpecialIndicator(type, patternMatchingIndicator);
    DependenciesHandler.getInstance().setUsageDependencyOn(analysis, pattern);
    result.setOk(true);
    // $NON-NLS-1$
    result.setMessage(DefaultMessagesImpl.getString("PatternUtilities.OK"));
    result.setObject(addIndicatorUnit);
    return result;
}
Also used : IRepositoryNode(org.talend.repository.model.IRepositoryNode) IndicatorEnum(org.talend.dq.nodes.indicator.type.IndicatorEnum) IndicatorUnit(org.talend.dataprofiler.core.ui.editor.preview.IndicatorUnit) Connection(org.talend.core.model.metadata.builder.connection.Connection) ExecutionLanguage(org.talend.dataquality.analysis.ExecutionLanguage) DataManager(orgomg.cwm.foundation.softwaredeployment.DataManager) IEditorPart(org.eclipse.ui.IEditorPart) RepositoryNode(org.talend.repository.model.RepositoryNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) OpenItemEditorAction(org.talend.dataprofiler.core.ui.action.actions.OpenItemEditorAction) ColumnIndicator(org.talend.dataprofiler.core.model.ColumnIndicator) ModelElementIndicator(org.talend.dataprofiler.core.model.ModelElementIndicator) PatternMatchingIndicator(org.talend.dataquality.indicators.PatternMatchingIndicator) Indicator(org.talend.dataquality.indicators.Indicator) DbmsLanguage(org.talend.dq.dbms.DbmsLanguage) PatternMatchingIndicator(org.talend.dataquality.indicators.PatternMatchingIndicator) Expression(orgomg.cwm.objectmodel.core.Expression) TypedReturnCode(org.talend.utils.sugars.TypedReturnCode) AnalysisEditor(org.talend.dataprofiler.core.ui.editor.analysis.AnalysisEditor)

Example 29 with DbmsLanguage

use of org.talend.dq.dbms.DbmsLanguage in project tdq-studio-se by Talend.

the class IndicatorEvaluator method sortColumnName.

/**
 * @author zshen
 * @param columns
 * @param sqlStatement
 * @return the same order List which columnName in the sqlStatement
 */
public List<String> sortColumnName(Set<String> columns, String sqlStatement) {
    List<String> columnNameList = new ArrayList<String>();
    Map<Integer, String> offset = new HashMap<Integer, String>();
    for (String col : columns) {
        int offsetCol = col.lastIndexOf('.') + 1;
        String colName = col.substring(offsetCol);
        DbmsLanguage createDbmsLanguage = DbmsLanguageFactory.createDbmsLanguage(analysis, ExecutionLanguage.SQL);
        int location = sqlStatement.indexOf(createDbmsLanguage.quote(colName));
        offset.put(location, col);
    }
    Integer[] keyArray = offset.keySet().toArray(new Integer[offset.keySet().size()]);
    int temp = 0;
    for (int i = 0; i < columns.size(); i++) {
        for (int j = keyArray.length - 1; j > i; j--) {
            if (keyArray[j] < keyArray[j - 1]) {
                temp = keyArray[j];
                keyArray[j] = keyArray[j - 1];
                keyArray[j - 1] = temp;
            }
        }
        columnNameList.add(offset.get(keyArray[i]));
    }
    return columnNameList;
}
Also used : DbmsLanguage(org.talend.dq.dbms.DbmsLanguage) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList)

Aggregations

DbmsLanguage (org.talend.dq.dbms.DbmsLanguage)29 Test (org.junit.Test)10 Connection (org.talend.core.model.metadata.builder.connection.Connection)9 TdColumn (org.talend.cwm.relational.TdColumn)9 Expression (orgomg.cwm.objectmodel.core.Expression)7 TdTable (org.talend.cwm.relational.TdTable)6 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)5 ModelElementIndicator (org.talend.dataprofiler.core.model.ModelElementIndicator)5 IndicatorUnit (org.talend.dataprofiler.core.ui.editor.preview.IndicatorUnit)5 Indicator (org.talend.dataquality.indicators.Indicator)5 Package (orgomg.cwm.objectmodel.core.Package)4 ArrayList (java.util.ArrayList)3 IFolder (org.eclipse.core.resources.IFolder)3 Shell (org.eclipse.swt.widgets.Shell)3 DatabaseConnection (org.talend.core.model.metadata.builder.connection.DatabaseConnection)3 CreatePatternAction (org.talend.dataprofiler.core.pattern.actions.CreatePatternAction)3 IRepositoryNode (org.talend.repository.model.IRepositoryNode)3 ModelElement (orgomg.cwm.objectmodel.core.ModelElement)3 Statement (java.sql.Statement)2 HashMap (java.util.HashMap)2