/*******************************************************************************
* Copyright (c) 2010-2012, Zoltan Ujhelyi, Istvan Rath and Daniel Varro
* 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:
* Zoltan Ujhelyi - initial API and implementation
*******************************************************************************/
package org.eclipse.incquery.patternlanguage.naming;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.incquery.patternlanguage.helper.CorePatternLanguageHelper;
import org.eclipse.incquery.patternlanguage.patternLanguage.Pattern;
import org.eclipse.incquery.patternlanguage.patternLanguage.PatternBody;
import org.eclipse.incquery.patternlanguage.patternLanguage.Variable;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
import com.google.inject.Inject;
public class PatternNameProvider extends XbaseQualifiedNameProvider {
@Inject
private IQualifiedNameConverter nameConverter;
@Override
public QualifiedName getFullyQualifiedName(EObject obj) {
if (obj instanceof Pattern) {
Pattern pattern = (Pattern) obj;
return nameConverter.toQualifiedName(CorePatternLanguageHelper.getFullyQualifiedName(pattern));
} else if (obj instanceof PatternBody) {
PatternBody patternBody = (PatternBody) obj;
Pattern pattern = (Pattern) patternBody.eContainer();
return getFullyQualifiedName(pattern).append(Integer.toString(pattern.getBodies().indexOf(patternBody)));
} else if (obj instanceof Variable) {
Variable variable = (Variable) obj;
QualifiedName parentName = getFullyQualifiedName(variable.eContainer());
if (parentName == null || parentName.isEmpty()) {
return nameConverter.toQualifiedName(variable.getName());
} else {
return parentName.append(variable.getName());
}
}
return super.getFullyQualifiedName(obj);
}
}