/******************************************************************************* * Copyright (c) 2014 BestSolution.at and others. * 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: * Christoph Caks <ccaks@bestsolution.at> - initial API and implementation *******************************************************************************/ package at.bestsolution.emf.navi; import org.eclipse.emf.ecore.EStructuralFeature; import at.bestsolution.emf.navi.conditions.AndCondition; import at.bestsolution.emf.navi.conditions.FeaturePathEqualsCondition; import at.bestsolution.emf.navi.conditions.FeaturePathEqualsIntCondition; import at.bestsolution.emf.navi.conditions.FeaturePathEqualsLongCondition; import at.bestsolution.emf.navi.conditions.OrCondition; import at.bestsolution.emf.navi.conditions.TrueCondition; public class NaviFactory { public static FeaturePathBuilder featurePath() { return new FeaturePathBuilder(); } /** creates a simple feature path */ public static FeaturePath featurePath(EStructuralFeature feature) { return new FeaturePath(new FeaturePathSegment(feature)); } public static Condition and(Condition...conditions) { return new AndCondition(conditions); } public static Condition or(Condition...conditions) { return new OrCondition(conditions); } public static Condition True() { return TrueCondition.getInstance(); } public static Condition pathEquals(FeaturePath path, Object equals) { return new FeaturePathEqualsCondition(path, equals); } public static Condition pathEquals(FeaturePath path, int equals) { final FeaturePathSegment lastSegment = path.getSegments().get(path.getSegments().size()-1); if (lastSegment.feature.getEType().getInstanceClassName().equals("long")) { return pathEquals(path, (long)equals); } else { return new FeaturePathEqualsIntCondition(path, equals); } } public static Condition pathEquals(FeaturePath path, long equals) { return new FeaturePathEqualsLongCondition(path, equals); } }