// ============================================================================ // // 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.dataquality.record.linkage.ui; import java.util.List; import java.util.TreeMap; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabFolderRenderer; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.talend.core.service.IMatchRuleUIService; import org.talend.dataquality.record.linkage.ui.composite.chart.MatchRuleDataChart; import org.talend.dataquality.record.linkage.ui.composite.table.MatchRuleDataTable; import org.talend.dataquality.record.linkage.ui.composite.utils.ImageLib; import org.talend.dataquality.record.linkage.ui.section.MatchRuleCTabFolderRenderer; import org.talend.dataquality.record.linkage.utils.MatchAnalysisConstant; public class MatchRuleUIService implements IMatchRuleUIService { /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#getImageByName(java.lang.String) */ @Override public Image getImageByName(String imageName) { return ImageLib.getImage(imageName); } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#createMatchRuleCTabFolderRenderer() */ @Override public CTabFolderRenderer createMatchRuleCTabFolderRenderer(CTabFolder configurationFolder) { return new MatchRuleCTabFolderRenderer(configurationFolder); } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#getAddImage() */ @Override public Image getAddImage() { return getImageByName(ImageLib.ADD_ACTION); } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#getMatchRuleTable() */ @Override public Composite createMatchRuleTable(SashForm parent, List<String> columnNames) { MatchRuleDataTable matchRuleDataTable = new MatchRuleDataTable(parent, columnNames.toArray(new String[0])); matchRuleDataTable.setUiService(this); return matchRuleDataTable; } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#createMatchRuleDataChart(org.eclipse.swt.widgets.Composite, * java.util.List, java.util.List) */ @Override public Composite createMatchRuleDataChart(Composite parent, List<String[]> viewData, List<String> columnNames) { TreeMap<Object, Long> groupSize2groupFrequency = computeGroupSize2FreqMap(viewData, columnNames); return new MatchRuleDataChart(parent, groupSize2groupFrequency); } /** * DOC zhao Comment method "computeGroupSize2FreqMap". * * @param viewData * @param columnNames * @return */ public TreeMap<Object, Long> computeGroupSize2FreqMap(List<String[]> viewData, List<String> columnNames) { List<String> matchRowSchemaList = columnNames; int groupSizeColumnIndex = matchRowSchemaList.indexOf(MatchAnalysisConstant.GRP_SIZE); int masterColumnIndex = matchRowSchemaList.indexOf(MatchAnalysisConstant.MASTER); TreeMap<Object, Long> groupSize2groupFrequency = new TreeMap<Object, Long>(); if (viewData != null) { for (String[] values : viewData) { if (Boolean.valueOf(values[masterColumnIndex])) { // Find the master row if (null == groupSize2groupFrequency.get(values[groupSizeColumnIndex])) { groupSize2groupFrequency.put(values[groupSizeColumnIndex], 1l); } else { long freq = groupSize2groupFrequency.get(values[groupSizeColumnIndex]) + 1; groupSize2groupFrequency.put(values[groupSizeColumnIndex], freq); } } } } return groupSize2groupFrequency; } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#setNeedDisplayCount(int) */ @Override public void setNeedDisplayCount(int count, Composite com) { if (com instanceof MatchRuleDataChart) { ((MatchRuleDataChart) com).setTimes(count); } else if (com instanceof MatchRuleDataTable) { ((MatchRuleDataTable) com).setDisGroupSize(count); } } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#refreshMatchRuleChart(java.util.List, * org.eclipse.swt.widgets.Composite) */ @Override public void refreshMatchRuleChart(List<String[]> viewData, Composite com, List<String> columnNames) { TreeMap<Object, Long> groupSize2groupFrequency = computeGroupSize2FreqMap(viewData, columnNames); if (com instanceof MatchRuleDataChart) { ((MatchRuleDataChart) com).refresh(groupSize2groupFrequency); } else if (com instanceof MatchRuleDataTable) { ((MatchRuleDataTable) com).refresh(viewData, groupSize2groupFrequency); } } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#layoutMatchRuleChart() */ @Override public void layoutMatchRuleChart(Composite chart) { if (chart instanceof MatchRuleDataChart) { ((MatchRuleDataChart) chart).layout(); } } /* * (non-Javadoc) * * @see org.talend.core.service.IMatchRuleUIService#disposeMatchRuleChart(org.eclipse.swt.widgets.Composite) */ @Override public void disposeMatchRuleChart(Composite chart) { if (chart instanceof MatchRuleDataChart) { ((MatchRuleDataChart) chart).dispose(); } } }