package org.occiware.clouddesigner.occi.xtext.scoping;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.occiware.clouddesigner.occi.Extension;
import org.occiware.clouddesigner.occi.Link;
import org.occiware.clouddesigner.occi.Kind;
import org.occiware.clouddesigner.occi.Mixin;
import org.occiware.clouddesigner.occi.Resource;
import org.occiware.clouddesigner.occi.util.OCCISwitch;
import com.google.inject.Inject;
public class NameProvider extends IQualifiedNameProvider.AbstractImpl {
@Inject
private IQualifiedNameConverter qualifiedNameConverter;
public QualifiedName getFullyQualifiedName(EObject obj) {
if (obj.eIsProxy()) {
return null;
}
String name = null;
if(obj instanceof EDataType) {
name = ((EDataType)obj).getName();
} else {
name = new OCCISwitch<String>() {
public String caseExtension(Extension object) {
return object.getName();
};
public String caseKind(Kind object) {
return object.getTerm();
};
public String caseMixin(Mixin object) {
return object.getTerm();
};
public String caseResource(Resource object) {
return object.getId();
};
public String caseLink(Link object) {
return object.getId();
};
}.doSwitch(obj);
}
return name != null ? qualifiedNameConverter.toQualifiedName(name) : null;
}
}