// ============================================================================ // // 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.ui.events; import java.util.ArrayList; import java.util.List; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import org.talend.dataprofiler.core.ui.editor.preview.model.TableWithData; import org.talend.dataprofiler.core.ui.utils.TOPChartUtils; import org.talend.dataquality.indicators.Indicator; import org.talend.dq.indicators.ext.PatternMatchingExt; import org.talend.dq.indicators.preview.table.ChartDataEntity; import org.talend.dq.indicators.preview.table.PatternChartDataEntity; /** * DOC zshen class global comment. Detailled comment */ public class PatternDynamicChartEventReceiver extends DynamicChartEventReceiver { private List<Indicator> patternInticators = new ArrayList<Indicator>(); /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.ui.events.DynamicChartEventReceiver#settingDatasetValue() */ @Override protected void settingDatasetValue(Object indValue) { if (indValue instanceof PatternMatchingExt) { PatternMatchingExt patternExt = (PatternMatchingExt) indValue; TOPChartUtils.getInstance().setValue(dataset, patternExt.getNotMatchingValueCount(), DefaultMessagesImpl.getString("PatternStatisticsState.NotMatching"), this.indicatorName);//$NON-NLS-1$ TOPChartUtils.getInstance().setValue(dataset, patternExt.getMatchingValueCount(), DefaultMessagesImpl.getString("PatternStatisticsState.Matching"), this.indicatorName);//$NON-NLS-1$ } } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.ui.events.DynamicChartEventReceiver#refreshTable(java.lang.String) */ @Override public void refreshTable(String value) { TableWithData input = (TableWithData) tableViewer.getInput(); if (input != null) { ChartDataEntity[] dataEntities = input.getEnity(); if (dataEntities != null && dataEntities.length > getIndexInDataset()) { ((PatternChartDataEntity) dataEntities[getIndexInDataset()]).setNumMatch(value); ((PatternChartDataEntity) dataEntities[getIndexInDataset()]).setNumNoMatch(value); tableViewer.getTable().clearAll(); tableViewer.setInput(input); } } } private void refreshPatternTable(PatternMatchingExt matchExt) { TableWithData input = (TableWithData) tableViewer.getInput(); if (input != null) { ChartDataEntity[] dataEntities = input.getEnity(); if (dataEntities != null && dataEntities.length > getIndexInDataset()) { ((PatternChartDataEntity) dataEntities[getIndexInDataset()]).setNumMatch(String.valueOf(matchExt .getMatchingValueCount())); ((PatternChartDataEntity) dataEntities[getIndexInDataset()]).setNumNoMatch(String.valueOf(matchExt .getNotMatchingValueCount())); tableViewer.getTable().clearAll(); tableViewer.setInput(input); } } } @Override public boolean handle(Object value) { Object indValue = value; if (value == null) { indValue = 0; } if (dataset != null) { settingDatasetValue(indValue); } if (tableViewer != null) { if (value != null && value instanceof PatternMatchingExt) { refreshPatternTable((PatternMatchingExt) value); } else { refreshTable(NAN_STRING); } } // need to refresh the parent composite of the chart to show the changes EventManager.getInstance().publish(chartComposite, EventEnum.DQ_DYNAMIC_REFRESH_DYNAMIC_CHART, null); return true; } private String[] getRowKeys() { // The value be definition at PatternStatisticsState line 55-57 return new String[] { DefaultMessagesImpl.getString("PatternStatisticsState.NotMatching"), //$NON-NLS-1$ DefaultMessagesImpl.getString("PatternStatisticsState.Matching") }; //$NON-NLS-1$ } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.ui.events.DynamicChartEventReceiver#clearDataset() */ @Override protected void clearDataset() { for (String rowKey : getRowKeys()) { TOPChartUtils.getInstance().setValue(dataset, 0.0, rowKey, getColumnKey()); } } }