// ============================================================================
//
// 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.dialog.provider;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
import org.talend.dataquality.record.linkage.utils.CustomAttributeMatcherClassNameConvert;
public class MatchRulesTableLabelProvider extends LabelProvider implements ITableLabelProvider {
public static final String MATCH_KEY_NAME = "MATCH_KEY_NAME"; //$NON-NLS-1$
public static final String INPUT_COLUMN = "INPUT_COLUMN"; //$NON-NLS-1$
public static final String MATCHING_TYPE = "MATCHING_TYPE"; //$NON-NLS-1$
public static final String CUSTOM_MATCHER = "CUSTOM_MATCHER"; //$NON-NLS-1$
public static final String CONFIDENCE_WEIGHT = "CONFIDENCE_WEIGHT"; //$NON-NLS-1$
public static final String HANDLE_NULL = "HANDLE_NULL"; //$NON-NLS-1$
public static final String THRESHOLD = "THRESHOLD"; //$NON-NLS-1$
public static final String ATTRIBUTE_THRESHOLD = "ATTRIBUTE_THRESHOLD"; //$NON-NLS-1$
public static final String SURVIVORSHIP_FUNCTION = "SURVIVORSHIP_FUNCTION"; //$NON-NLS-1$
public static final String PARAMETER = "PARAMETER"; //$NON-NLS-1$
public static final String TOKENIZATION_TYPE = "TOKENIZATION_TYPE"; //$NON-NLS-1$ The Value should keep same with MatchAnalysisConstant.TOKENIZATION_TYPE
List<String> inputColumnNames;
public MatchRulesTableLabelProvider(List<String> inputColumnNames) {
this.inputColumnNames = inputColumnNames;
}
public Image getColumnImage(Object element, int columnIndex) {
Image warn = null;
Map<String, String> rule = (HashMap<String, String>) element;
if (0 == columnIndex && !hasColumnMatch(rule)) {
warn = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
}
return warn;
}
private boolean hasColumnMatch(Map<String, String> rule) {
if (inputColumnNames != null) {
for (String str : inputColumnNames) {
if (str.equalsIgnoreCase(rule.get(MATCH_KEY_NAME)) || str.equalsIgnoreCase(rule.get(INPUT_COLUMN))) {
return true;
}
}
}
return false;
}
public String getColumnText(Object element, int columnIndex) {
Map<String, String> rule = (HashMap<String, String>) element;
String result = null;
switch (columnIndex) {
case 0: // match key name
result = rule.get(MATCH_KEY_NAME);
break;
case 1: // column
result = rule.get(INPUT_COLUMN);
break;
case 2: // matching type
result = rule.get(MATCHING_TYPE);
break;
case 3: // custom matcher class
result = CustomAttributeMatcherClassNameConvert.getClassName(rule.get(CUSTOM_MATCHER));
break;
case 4: // TOKENIZATION_TYPE
result = rule.get(TOKENIZATION_TYPE);
break;
case 5: // confidence weight
result = rule.get(CONFIDENCE_WEIGHT);
break;
case 6: // handle null
result = rule.get(HANDLE_NULL);
break;
case 7: // threshold
result = rule.get(THRESHOLD);
break;
case 8: // survivorship function
result = rule.get(SURVIVORSHIP_FUNCTION);
break;
case 9: // parameter
result = rule.get(PARAMETER);
break;
}
return result;
}
}