package com.sap.emf.ocl.prepared.parameters; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.ocl.ecore.BooleanLiteralExp; import org.eclipse.ocl.ecore.EcorePackage; import org.eclipse.ocl.ecore.EnumLiteralExp; import org.eclipse.ocl.ecore.IntegerLiteralExp; import org.eclipse.ocl.ecore.RealLiteralExp; import org.eclipse.ocl.ecore.StringLiteralExp; import org.eclipse.ocl.expressions.LiteralExp; public class ParameterFactoryImpl implements ParameterFactory { /** * Factory method that creates the appropriate {@link Parameter} implementation instance * for the parameterizable literal expression <code>param</code>. */ public Parameter<?> getParameterFor(LiteralExp<EClassifier> param) { Parameter<?> result; switch (param.eClass().getClassifierID()) { case EcorePackage.BOOLEAN_LITERAL_EXP: result = new BooleanParameter((BooleanLiteralExp) param); break; case EcorePackage.INTEGER_LITERAL_EXP: result = new IntegerParameter((IntegerLiteralExp) param); break; case EcorePackage.REAL_LITERAL_EXP: result = new RealParameter((RealLiteralExp) param); break; case EcorePackage.STRING_LITERAL_EXP: result = new StringParameter((StringLiteralExp) param); break; case EcorePackage.ENUM_LITERAL_EXP: result = new EnumParameter((EnumLiteralExp) param); break; default: throw new RuntimeException("Unknown literal expression type "+param.getClass().getName()); } return result; } }