package de.ovgu.cide.typing.internal.manager; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import de.ovgu.cide.features.IFeature; import de.ovgu.cide.features.IFeatureModel; import de.ovgu.cide.typing.model.IEvaluationStrategy; public class EvaluationStrategyProxy implements IEvaluationStrategy { private final IConfigurationElement configElement; private final String featureModelProviderId; public EvaluationStrategyProxy(IConfigurationElement configurationElement) { this.configElement = configurationElement; name = configElement.getAttribute("name"); id = configElement.getAttribute("id"); featureModelProviderId = configElement .getAttribute("featureModelProvider"); } private final String name; private final String id; private IEvaluationStrategy target = null; private void loadTarget() { try { target = (IEvaluationStrategy) configElement .createExecutableExtension("strategy"); } catch (CoreException e) { e.printStackTrace(); } } @Override public String toString() { return "Evaluation Strategy Extension: " + name + " (" + id + ")"; } public boolean equal(IFeatureModel featureModel, Set<IFeature> source, Set<IFeature> targete) { if (target == null) loadTarget(); return target.equal(featureModel, source, targete); } public boolean implies(IFeatureModel featureModel, Set<IFeature> source, Set<IFeature> targete) { if (target == null) loadTarget(); return target.implies(featureModel, source, targete); } public boolean areMutualExclusive(IFeatureModel featureModel, Set<IFeature> context, List<Set<IFeature>> featureSets) { if (target == null) loadTarget(); return target.areMutualExclusive(featureModel, context, featureSets); } public boolean mayBeMissing(IFeatureModel featureModel, Set<IFeature> context, List<Set<IFeature>> featureSets) { if (target == null) loadTarget(); return target.mayBeMissing(featureModel, context, featureSets); } public boolean exists(IFeatureModel featureModel, Set<IFeature> features) { if (target == null) loadTarget(); return target.exists(featureModel, features); } public boolean isResponsible(String featureModelId) { return featureModelProviderId.equals(featureModelId); } public void clearCache(IFeatureModel featureModel) { if (target == null) loadTarget(); target.clearCache(featureModel); } }