/**
*
*/
package com.sap.furcas.parsergenerator.tcs.t2m.grammar.handlerStub;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClassifier;
import com.sap.furcas.emf.stubs.EcoreAnyStub;
import com.sap.furcas.metamodel.FURCAS.TCS.Alternative;
import com.sap.furcas.metamodel.FURCAS.TCS.Template;
import com.sap.furcas.parsergenerator.tcs.t2m.grammar.RuleBodyStringBuffer;
import com.sap.furcas.runtime.common.exceptions.MetaModelLookupException;
import com.sap.furcas.runtime.common.interfaces.IMetaModelLookup;
import com.sap.furcas.runtime.common.interfaces.MultiplicityBean;
import com.sap.furcas.runtime.common.interfaces.ResolvedNameAndReferenceBean;
import com.sap.furcas.runtime.common.util.EcoreHelper;
/**
*
*/
public class MetaLookupStub<Type extends Object> implements IMetaModelLookup<Type> {
public List<Alternative> elements = new ArrayList<Alternative>();
public List<RuleBodyStringBuffer> buffers = new ArrayList<RuleBodyStringBuffer>();
public List<ResolvedNameAndReferenceBean<Type>> subTypes = new ArrayList<ResolvedNameAndReferenceBean<Type>>();
public List<ResolvedNameAndReferenceBean<Type>> qualifiedNames;
public boolean isClassName = false;
public List<String> featureClassName;
public List<String> enumLiterals;
public MultiplicityBean multiplicity = new MultiplicityBean();
private final boolean isSubType = true;
/*
* (non-Javadoc)
*
* @see com.sap.mi.textual.interfaces.IMetaModelLookup#get@Override
* (java.util.List)
*/
@Override
public List<ResolvedNameAndReferenceBean<Type>> getDirectSubTypes(ResolvedNameAndReferenceBean typeName)
throws MetaModelLookupException {
return subTypes;
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#getFeatureClassName(jav
* @Override ava.lang.String)
*/
@Override
public ResolvedNameAndReferenceBean getFeatureClassReference(ResolvedNameAndReferenceBean reference, String featureName)
throws MetaModelLookupException {
return new ResolvedNameAndReferenceBean(featureClassName, null);
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#getMultiplicity(jav@Override
* ava.lang.String)
*/
@Override
public MultiplicityBean getMultiplicity(ResolvedNameAndReferenceBean typename, String featureName)
throws MetaModelLookupException {
return multiplicity;
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#hasFeature(java.util.List,
* java.lang.String)
*/
public boolean hasFeature(ResolvedNameAndReferenceBean typename, String featureName) throws MetaModelLookupException {
fail("not implemented yet");
return false;
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#isClassName(java.util.
* List)
*/
public boolean isClassName(List<String> reference) {
return isClassName;
}
/*
* (non-Javadoc)
*
* @see com.sap.mi.textual.interfaces.IMetaModelLookup@Override
* ava.lang.String)
*/
@Override
public List<ResolvedNameAndReferenceBean<Type>> qualifyName(String typeName) {
return qualifiedNames;
}
@Override
public List<String> getEnumLiterals(ResolvedNameAndReferenceBean enumeration) {
return enumLiterals;
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#isSubTypeOf(j@Override
* java.util.List)
*/
@Override
public boolean isSubTypeOf(ResolvedNameAndReferenceBean subType, ResolvedNameAndReferenceBean superType) {
return isSubType;
}
/*
* (non-Javadoc)
*
* @see com.sap.mi.textual.interfaces.IMetaModelLookup#re@Override
* (java.util.List)
*/
@Override
public ResolvedNameAndReferenceBean resolveReference(List<String> names) throws MetaModelLookupException {
return new ResolvedNameAndReferenceBean(names, null);
}
/*
* (non-Javadoc)
*
* @see
* com.sap.mi.textual.interfaces.IMetaModelLookup#resolveReferenceName(java
* .lang.Object)
*/
@Override
public ResolvedNameAndReferenceBean resolveReferenceName(Object reference) {
if (reference instanceof EClassifier) {
EClassifier stub = (EClassifier) reference;
ResolvedNameAndReferenceBean bean = new ResolvedNameAndReferenceBean(EcoreHelper.getQualifiedName(stub), null);
return bean;
}
fail("not implemented");
return null;
}
@Override
public boolean isAbstract(ResolvedNameAndReferenceBean bean) {
return true;
}
@Override
public List<Diagnostic> validateOclQuery(Template template, String queryToValidate) {
return Collections.emptyList();
}
@Override
public List<Diagnostic> validateOclQuery(Object parsingContext, String queryToValidate) {
return Collections.emptyList();
}
@Override
public Type getOclReturnType(Object parsingContext, String oclQuery) throws MetaModelLookupException {
return (Type) new EcoreAnyStub();
}
@Override
public Set<URI> getMetaModelURIs() {
fail("not implemented");
return Collections.emptySet();
}
}