eu.esdihumboldt.hale.ui.views.data.internal.compare.MetadataCompareActionProvider.java Source code

Java tutorial

Introduction

Here is the source code for eu.esdihumboldt.hale.ui.views.data.internal.compare.MetadataCompareActionProvider.java

Source

/*
 * Copyright (c) 2012 Data Harmonisation Panel
 * 
 * All rights reserved. This program and the accompanying materials are made
 * available under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the License,
 * or (at your option) any later version.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Contributors:
 *     HUMBOLDT EU Integrated Project #030962
 *     Data Harmonisation Panel <http://www.dhpanel.eu>
 */

package eu.esdihumboldt.hale.ui.views.data.internal.compare;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerCell;

import eu.esdihumboldt.hale.common.instance.model.Instance;
import eu.esdihumboldt.hale.ui.views.data.internal.MetadataActionProvider;
import eu.esdihumboldt.util.Pair;

/**
 * Provides metadata actions for {@link TreeViewer}s used for data views compare
 * mode
 * 
 * @author Sebastian Reinhardt
 */
public class MetadataCompareActionProvider extends MetadataActionProvider {

    private List<Instance> instances;
    private Map<Integer, DefinitionInstanceLabelProvider> labelProviders;

    /**
     * Standard Constructor
     * 
     * @param treeViewer the TreeViewer to which the action will be applied
     */
    public MetadataCompareActionProvider(TreeViewer treeViewer) {
        super(treeViewer);
        this.instances = new ArrayList<Instance>();
    }

    /**
     * Stores all instances and labelProviders
     * 
     * @param instances the instances
     * @param labelProviders the labelProviders
     */
    public void setInput(List<Instance> instances, Map<Integer, DefinitionInstanceLabelProvider> labelProviders) {
        this.instances = instances;
        this.labelProviders = labelProviders;
    }

    /**
     * @see eu.esdihumboldt.hale.ui.views.data.internal.MetadataActionProvider#retrieveMetadata(org.eclipse.jface.viewers.ViewerCell)
     */
    @Override
    protected Pair<Object, Object> retrieveMetadata(ViewerCell cell) {
        if (cell.getViewerRow().getTreePath().getFirstSegment() instanceof Set<?>) {
            if (cell.getElement() instanceof Set<?>) {
                return null;
            }

            String key = cell.getElement().toString();

            List<Object> values = instances.get(cell.getColumnIndex() - 1).getMetaData(key);
            Object value = values.get(labelProviders.get(cell.getColumnIndex()).getMetaDataChoice(key));
            return new Pair<Object, Object>(key, value);
        } else
            return null;
    }
}