| /******************************************************************************* |
| * Copyright (c) 2014, 2015 Obeo. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Obeo - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.emf.compare.rcp.internal.extension.impl; |
| |
| import org.eclipse.emf.compare.EMFCompare.Builder; |
| import org.eclipse.emf.compare.conflict.IConflictDetector; |
| import org.eclipse.emf.compare.diff.IDiffEngine; |
| import org.eclipse.emf.compare.equi.IEquiEngine; |
| import org.eclipse.emf.compare.match.IMatchEngine; |
| import org.eclipse.emf.compare.postprocessor.IPostProcessor; |
| import org.eclipse.emf.compare.rcp.EMFCompareRCPPlugin; |
| import org.eclipse.emf.compare.rcp.internal.extension.IEMFCompareBuilderConfigurator; |
| import org.eclipse.emf.compare.rcp.internal.preferences.EMFComparePreferences; |
| import org.eclipse.emf.compare.req.IReqEngine; |
| |
| /** |
| * Engine provider. This class provides engines using registered engines and user preferences. |
| * |
| * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> |
| */ |
| public class EMFCompareBuilderConfigurator implements IEMFCompareBuilderConfigurator { |
| |
| /** Match engine factory registry. */ |
| private final IMatchEngine.Factory.Registry matchEngineFactoryRegistry; |
| |
| /** Post Processor registry. */ |
| private final IPostProcessor.Descriptor.Registry<String> postProcessorRegistry; |
| |
| /** |
| * Constructor. |
| * |
| * @param matchEngineFactoryRegistry |
| * {@link IMatchEngine.Factory.Registry} that holds Match Engine factories. |
| * @param postProcessorRegistry |
| * {@link IPostProcessor.Descriptor.Registry} that holds post processors. |
| */ |
| protected EMFCompareBuilderConfigurator(IMatchEngine.Factory.Registry matchEngineFactoryRegistry, |
| IPostProcessor.Descriptor.Registry<String> postProcessorRegistry) { |
| this.matchEngineFactoryRegistry = matchEngineFactoryRegistry; |
| this.postProcessorRegistry = postProcessorRegistry; |
| } |
| |
| /** |
| * Get EMFCompareBuilderConfigurator with EMF Compare default values. Get the default preference store, |
| * the default {@link IMatchEngine.Factory.Registry} and the default |
| * {@link IPostProcessor.Descriptor.Registry}. |
| * |
| * @return Default EMFCompareBuilderConfigurator; |
| */ |
| public static EMFCompareBuilderConfigurator createDefault() { |
| return new EMFCompareBuilderConfigurator( |
| EMFCompareRCPPlugin.getDefault().getMatchEngineFactoryRegistry(), |
| EMFCompareRCPPlugin.getDefault().getPostProcessorRegistry()); |
| } |
| |
| /** |
| * Get the Diff engine. |
| * |
| * @return {@link IDiffEngine} that has been set by the user (by preferences) or the most ranked one.This |
| * method use eclipse default preference store to retrieve the engine |
| */ |
| private IDiffEngine getDiffEngine() { |
| return ItemUtil.getItem(EMFCompareRCPPlugin.getDefault().getDiffEngineDescriptorRegistry(), |
| EMFComparePreferences.DIFF_ENGINES); |
| } |
| |
| /** |
| * Get the Equivalences engine. |
| * |
| * @return {@link IEquiEngine} that has been set by the user (by preferences) or the most ranked one.This |
| * method use eclipse default preference store to retrieve the engine |
| */ |
| private IEquiEngine getEquiEngine() { |
| return ItemUtil.getItem(EMFCompareRCPPlugin.getDefault().getEquiEngineDescriptorRegistry(), |
| EMFComparePreferences.EQUI_ENGINES); |
| } |
| |
| /** |
| * Get the Requirements engine. |
| * |
| * @return {@link IReqEngine} that has been set by the user (by preferences) or the most ranked one.This |
| * method use eclipse default preference store to retrieve the engine |
| */ |
| private IReqEngine getReqEngine() { |
| return ItemUtil.getItem(EMFCompareRCPPlugin.getDefault().getReqEngineDescriptorRegistry(), |
| EMFComparePreferences.REQ_ENGINES); |
| } |
| |
| /** |
| * Get the Conflict Detector. |
| * |
| * @return {@link IConflictDetector} that has been set by the user (by preferences) or the most ranked |
| * one.This method use eclipse default preference store to retrieve the engine |
| */ |
| private IConflictDetector getConflictDetector() { |
| return ItemUtil.getItem(EMFCompareRCPPlugin.getDefault().getConflictDetectorDescriptorRegistry(), |
| EMFComparePreferences.CONFLICTS_DETECTOR); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| public void configure(Builder builder) { |
| if (matchEngineFactoryRegistry != null) { |
| builder.setMatchEngineFactoryRegistry(matchEngineFactoryRegistry); |
| } |
| if (postProcessorRegistry != null) { |
| builder.setPostProcessorRegistry(postProcessorRegistry); |
| } |
| |
| IDiffEngine diffEngine = getDiffEngine(); |
| if (diffEngine != null) { |
| builder.setDiffEngine(diffEngine); |
| } |
| IConflictDetector conflictDetector = getConflictDetector(); |
| if (conflictDetector != null) { |
| builder.setConflictDetector(conflictDetector); |
| } |
| IReqEngine reqEngine = getReqEngine(); |
| if (reqEngine != null) { |
| builder.setRequirementEngine(reqEngine); |
| } |
| IEquiEngine equiEngine = getEquiEngine(); |
| if (equiEngine != null) { |
| builder.setEquivalenceEngine(equiEngine); |
| } |
| } |
| |
| } |