Search in sources :

Example 56 with Domain

use of org.talend.dataquality.domain.Domain in project tdq-studio-se by Talend.

the class AnalysisTableTreeViewer method hasIndicatorParameters.

/**
 * DOC msjian Comment method "hasIndicatorParameters".
 *
 * @param indicatorUnit
 * @return
 */
private boolean hasIndicatorParameters(TableIndicatorUnit indicatorUnit) {
    IndicatorParameters parameters = indicatorUnit.getIndicator().getParameters();
    if (parameters == null) {
        return false;
    }
    if (indicatorUnit.getIndicator() instanceof FrequencyIndicator) {
        return true;
    }
    TextParameters tParameter = parameters.getTextParameter();
    if (tParameter != null) {
        return true;
    }
    DateParameters dParameters = parameters.getDateParameters();
    if (dParameters != null) {
        return true;
    }
    Domain dataValidDomain = parameters.getDataValidDomain();
    if (dataValidDomain != null) {
        return true;
    }
    Domain indicatorValidDomain = parameters.getIndicatorValidDomain();
    if (indicatorValidDomain != null) {
        return true;
    }
    Domain bins = parameters.getBins();
    if (bins != null) {
        return true;
    }
    return false;
}
Also used : TextParameters(org.talend.dataquality.indicators.TextParameters) IndicatorParameters(org.talend.dataquality.indicators.IndicatorParameters) DateParameters(org.talend.dataquality.indicators.DateParameters) Domain(org.talend.dataquality.domain.Domain) FrequencyIndicator(org.talend.dataquality.indicators.FrequencyIndicator)

Example 57 with Domain

use of org.talend.dataquality.domain.Domain in project tdq-studio-se by Talend.

the class CreateDuplicatesAnalysisAction method run.

@Override
public void run() {
    ReturnCode success = new ReturnCode(true);
    if (this.getColumnsMap() == null || this.getColumnsMap().isEmpty() || this.getConnection() == null) {
        return;
    }
    try {
        Set<ColumnSet> keySet = this.getColumnsMap().keySet();
        for (ColumnSet cs : keySet) {
            List<TdColumn> columns = this.getColumnsMap().get(cs);
            // create the analysis
            Analysis analysis = null;
            AnalysisBuilder analysisBuilder = new AnalysisBuilder();
            boolean analysisInitialized = analysisBuilder.initializeAnalysis(getAnalysisName(cs), AnalysisType.MULTIPLE_COLUMN);
            if (analysisInitialized) {
                analysis = analysisBuilder.getAnalysis();
            }
            fillMetadataToAnalysis(analysis, createDefaultAnalysisParameter(cs));
            // add Connection into the Analysis Context
            analysis.getContext().setConnection(this.getConnection());
            for (TdColumn theColumn : columns) {
                // add TdColumn into the Analysis Context
                analysis.getContext().getAnalysedElements().add(theColumn);
                // create Row Count Indicator
                RowCountIndicator rcIndicator = IndicatorsFactory.eINSTANCE.createRowCountIndicator();
                rcIndicator.setAnalyzedElement(theColumn);
                DefinitionHandler.getInstance().setDefaultIndicatorDefinition(rcIndicator);
                analysis.getResults().getIndicators().add(rcIndicator);
                // create Duplicate Count Indicator
                DuplicateCountIndicator dcIndicator = IndicatorsFactory.eINSTANCE.createDuplicateCountIndicator();
                dcIndicator.setAnalyzedElement(theColumn);
                DefinitionHandler.getInstance().setDefaultIndicatorDefinition(dcIndicator);
                analysis.getResults().getIndicators().add(dcIndicator);
            }
            // create dependencies
            DependenciesHandler.getInstance().setDependencyOn(analysis, this.getConnection());
            // set the domain
            for (Domain domain : analysis.getParameters().getDataFilter()) {
                domain.setName(analysis.getName());
            }
            // set execution language
            analysis.getParameters().setExecutionLanguage(ExecutionLanguage.SQL);
            // save the analysis
            RepositoryNode analysisRepNode = (RepositoryNode) RepositoryNodeHelper.getDataProfilingFolderNode(EResourceConstant.ANALYSIS);
            IFolder folder = WorkbenchUtils.getFolder(analysisRepNode);
            AnalysisWriter analysisWriter = ElementWriterFactory.getInstance().createAnalysisWrite();
            TypedReturnCode<Object> create = analysisWriter.create(analysis, folder);
            if (create.isOk()) {
                // refresh the RepositoryView
                CorePlugin.getDefault().refreshDQView(analysisRepNode);
                // open the editor
                AnalysisRepNode anaRepNode = RepositoryNodeHelper.recursiveFindAnalysis(analysis);
                AnalysisItemEditorInput analysisEditorInput = new AnalysisItemEditorInput(anaRepNode);
                IRepositoryNode connectionRepNode = RepositoryNodeHelper.recursiveFind(this.getConnection());
                analysisEditorInput.setConnectionNode(connectionRepNode);
                CorePlugin.getDefault().openEditor(analysisEditorInput, AnalysisEditor.class.getName());
            } else {
                success.setOk(false);
                success.setMessage(create.getMessage());
            }
        }
    // for
    } catch (Exception e) {
        success.setOk(false);
        success.setMessage(e.getMessage());
    }
    if (!success.isOk()) {
        MessageUI.openError(success.getMessage());
    }
}
Also used : DuplicateCountIndicator(org.talend.dataquality.indicators.DuplicateCountIndicator) TypedReturnCode(org.talend.utils.sugars.TypedReturnCode) ReturnCode(org.talend.utils.sugars.ReturnCode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) ColumnSet(orgomg.cwm.resource.relational.ColumnSet) RepositoryNode(org.talend.repository.model.RepositoryNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) TdColumn(org.talend.cwm.relational.TdColumn) AnalysisRepNode(org.talend.dq.nodes.AnalysisRepNode) Analysis(org.talend.dataquality.analysis.Analysis) AnalysisBuilder(org.talend.dq.analysis.AnalysisBuilder) RowCountIndicator(org.talend.dataquality.indicators.RowCountIndicator) AnalysisItemEditorInput(org.talend.dataprofiler.core.ui.editor.analysis.AnalysisItemEditorInput) Domain(org.talend.dataquality.domain.Domain) AnalysisEditor(org.talend.dataprofiler.core.ui.editor.analysis.AnalysisEditor) AnalysisWriter(org.talend.dq.writer.impl.AnalysisWriter) IFolder(org.eclipse.core.resources.IFolder)

Example 58 with Domain

use of org.talend.dataquality.domain.Domain in project tdq-studio-se by Talend.

the class BinsDesignerForm method addFieldsListeners.

/*
     * (non-Javadoc)
     * 
     * @see org.talend.dataprofiler.core.ui.utils.AbstractForm#addFieldsListeners()
     */
@Override
protected void addFieldsListeners() {
    // MOD hcheng for 7377,only when minValue,maxValue,numbOfBins are set, the wizard can finish
    minValue.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent e) {
            String mintxt = minValue.getText();
            String maxtxt = maxValue.getText();
            String bintxt = numbOfBins.getText();
            if (mintxt != "") {
                // $NON-NLS-1$
                if (!CheckValueUtils.isRealNumberValue(mintxt)) {
                    updateStatus(IStatus.ERROR, MSG_ONLY_REAL_NUMBER);
                } else if (!maxtxt.equals("") && CheckValueUtils.isAoverB(mintxt, maxtxt)) {
                    // $NON-NLS-1$
                    updateStatus(IStatus.ERROR, UIMessages.MSG_LOWER_LESS_HIGHER);
                } else if (!maxtxt.equals("") && !bintxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.OK, MSG_OK);
                } else {
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                }
            } else {
                if (!maxtxt.equals("") || !bintxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                } else {
                    updateStatus(IStatus.OK, UIMessages.MSG_INDICATOR_WIZARD);
                }
            }
        }
    });
    maxValue.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent e) {
            String mintxt = minValue.getText();
            String maxtxt = maxValue.getText();
            String bintxt = numbOfBins.getText();
            if (maxtxt != "") {
                // $NON-NLS-1$
                if (!CheckValueUtils.isRealNumberValue(maxtxt)) {
                    updateStatus(IStatus.ERROR, MSG_ONLY_REAL_NUMBER);
                } else if (!mintxt.equals("") && CheckValueUtils.isAoverB(mintxt, maxtxt)) {
                    // $NON-NLS-1$
                    updateStatus(IStatus.ERROR, UIMessages.MSG_LOWER_LESS_HIGHER);
                } else if (!mintxt.equals("") && !bintxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.OK, MSG_OK);
                } else {
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                }
            } else {
                if (!mintxt.equals("") || !bintxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                } else {
                    updateStatus(IStatus.OK, UIMessages.MSG_INDICATOR_WIZARD);
                }
            }
        }
    });
    numbOfBins.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent e) {
            String mintxt = minValue.getText();
            String maxtxt = maxValue.getText();
            String numbtxt = numbOfBins.getText();
            if (numbtxt != "") {
                // $NON-NLS-1$
                if (!CheckValueUtils.isNumberValue(numbtxt)) {
                    updateStatus(IStatus.ERROR, MSG_ONLY_NUMBER);
                } else if (!mintxt.equals("") && !maxtxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.OK, MSG_OK);
                } else {
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                }
            } else {
                if (!mintxt.equals("") || !maxtxt.equals("")) {
                    // $NON-NLS-1$ //$NON-NLS-2$
                    updateStatus(IStatus.ERROR, MSG_EMPTY);
                } else {
                    updateStatus(IStatus.OK, UIMessages.MSG_INDICATOR_WIZARD);
                }
            }
        }
    });
    isSetRange.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            boolean flag = ((Button) e.getSource()).getSelection();
            boolean validSelect = !CheckValueUtils.isEmpty(numbOfBins.getText(), minValue.getText(), maxValue.getText());
            if (flag && validSelect) {
                addSlice.setEnabled(true);
                delSlice.setEnabled(true);
                minValue.setEnabled(false);
                maxValue.setEnabled(false);
                numbOfBins.setEnabled(false);
                int numb = Integer.parseInt(numbOfBins.getText());
                double min = Double.parseDouble(minValue.getText());
                double max = Double.parseDouble(maxValue.getText());
                // $NON-NLS-1$
                Domain customerDomin = DomainHelper.createContiguousClosedBinsIntoDomain("", numb, min, max);
                tableViewer.setInput(customerDomin.getRanges());
            } else {
                addSlice.setEnabled(false);
                delSlice.setEnabled(false);
                minValue.setEnabled(true);
                maxValue.setEnabled(true);
                numbOfBins.setEnabled(true);
                // $NON-NLS-1$
                tableViewer.setInput("");
            }
        }
    });
    addSlice.addSelectionListener(new SelectionAdapter() {

        @SuppressWarnings("unchecked")
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (tableViewer.getInput() instanceof List) {
                List<RangeRestriction> inputList = (List<RangeRestriction>) tableViewer.getInput();
                // create a default range restriction, the min = 0, the max = 0
                RangeRestriction newRange = DomainHelper.createRealRangeRestriction(0, 0);
                inputList.add(newRange);
                tableViewer.setInput(inputList);
            }
        }
    });
    delSlice.addSelectionListener(new SelectionAdapter() {

        @SuppressWarnings("unchecked")
        @Override
        public void widgetSelected(SelectionEvent e) {
            boolean flag = !tableViewer.getSelection().isEmpty();
            if (flag) {
                IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
                RangeRestriction range = (RangeRestriction) selection.getFirstElement();
                if (tableViewer.getInput() instanceof List) {
                    List<RangeRestriction> inputList = (List<RangeRestriction>) tableViewer.getInput();
                    inputList.remove(range);
                    tableViewer.setInput(inputList);
                }
            }
        }
    });
}
Also used : ModifyEvent(org.eclipse.swt.events.ModifyEvent) ModifyListener(org.eclipse.swt.events.ModifyListener) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) SelectionEvent(org.eclipse.swt.events.SelectionEvent) EList(org.eclipse.emf.common.util.EList) List(java.util.List) RangeRestriction(org.talend.dataquality.domain.RangeRestriction) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Domain(org.talend.dataquality.domain.Domain)

Example 59 with Domain

use of org.talend.dataquality.domain.Domain in project tdq-studio-se by Talend.

the class IndicatorHelper method getDataThreshold.

/**
 * Method "getDataThreshold".
 *
 * @param parameters
 * @return an array with two elements. returns null when no threshold has been found. One element of the array can
 * be null but not both. In this case, it means that there is only one defined threshold, either the upper or the
 * lower threshold.
 */
public static String[] getDataThreshold(IndicatorParameters parameters) {
    Domain validDomain = parameters.getDataValidDomain();
    if (validDomain == null) {
        return null;
    }
    EList<RangeRestriction> ranges = validDomain.getRanges();
    if (ranges.size() != 1) {
        // log.warn("Data threshold contain too many ranges (or no range): " + ranges.size() + " range(s).");
        return null;
    }
    RangeRestriction rangeRestriction = ranges.get(0);
    if (rangeRestriction == null) {
        return new String[] { null, null };
    }
    return new String[] { DomainHelper.getMinValue(rangeRestriction), DomainHelper.getMaxValue(rangeRestriction) };
}
Also used : RangeRestriction(org.talend.dataquality.domain.RangeRestriction) Domain(org.talend.dataquality.domain.Domain)

Example 60 with Domain

use of org.talend.dataquality.domain.Domain in project tdq-studio-se by Talend.

the class IndicatorHelper method getIndicatorThreshold.

private static String[] getIndicatorThreshold(IndicatorParameters parameters, ThresholdType thresholdType) {
    Domain validDomain = parameters.getIndicatorValidDomain();
    if (validDomain == null) {
        return null;
    }
    EList<RangeRestriction> ranges = validDomain.getRanges();
    for (RangeRestriction rangeRestriction : ranges) {
        if (thresholdType.getLabel().equals(rangeRestriction.getName())) {
            return new String[] { DomainHelper.getMinValue(rangeRestriction), DomainHelper.getMaxValue(rangeRestriction) };
        }
    }
    return null;
}
Also used : RangeRestriction(org.talend.dataquality.domain.RangeRestriction) Domain(org.talend.dataquality.domain.Domain)

Aggregations

Domain (org.talend.dataquality.domain.Domain)68 IndicatorParameters (org.talend.dataquality.indicators.IndicatorParameters)27 Pattern (org.talend.dataquality.domain.pattern.Pattern)16 RegularExpression (org.talend.dataquality.domain.pattern.RegularExpression)14 Expression (orgomg.cwm.objectmodel.core.Expression)14 TdColumn (org.talend.cwm.relational.TdColumn)13 TdExpression (org.talend.cwm.relational.TdExpression)13 RangeRestriction (org.talend.dataquality.domain.RangeRestriction)13 Test (org.junit.Test)12 Analysis (org.talend.dataquality.analysis.Analysis)12 ArrayList (java.util.ArrayList)10 ReturnCode (org.talend.utils.sugars.ReturnCode)9 Indicator (org.talend.dataquality.indicators.Indicator)6 PatternMatchingIndicator (org.talend.dataquality.indicators.PatternMatchingIndicator)6 IRepositoryNode (org.talend.repository.model.IRepositoryNode)6 ModelElement (orgomg.cwm.objectmodel.core.ModelElement)6 Connection (org.talend.core.model.metadata.builder.connection.Connection)5 DatabaseConnection (org.talend.core.model.metadata.builder.connection.DatabaseConnection)5 IRepositoryViewObject (org.talend.core.model.repository.IRepositoryViewObject)5 AnalysisContext (org.talend.dataquality.analysis.AnalysisContext)5