/** * Copyright (c) 2011 committers of YAKINDU 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: * committers of YAKINDU - initial API and implementation */ package org.yakindu.sct.model.stext.naming; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.EcoreUtil2; import org.eclipse.xtext.naming.IQualifiedNameConverter; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.util.Strings; import org.yakindu.base.types.Event; import org.yakindu.base.types.Property; import org.yakindu.sct.model.sgraph.naming.SGraphNameProvider; import org.yakindu.sct.model.stext.stext.InterfaceScope; import com.google.inject.Inject; public class StextNameProvider extends SGraphNameProvider { @Inject protected IQualifiedNameConverter nameConverter; public QualifiedName qualifiedName(Event ele) { QualifiedName name = null; if (!Strings.isEmpty(ele.getName())) { name = nameConverter.toQualifiedName(ele.getName()); } InterfaceScope scope = EcoreUtil2.getContainerOfType(ele, InterfaceScope.class); if (scope != null) { if (!Strings.isEmpty(scope.getName())) { QualifiedName namespace = nameConverter.toQualifiedName(scope .getName()); name = namespace.append(name); } } return name; } public QualifiedName qualifiedName(Property ele) { QualifiedName name = null; if (!Strings.isEmpty(ele.getName())) { name = nameConverter.toQualifiedName(ele.getName()); } InterfaceScope scope = EcoreUtil2.getContainerOfType(ele, InterfaceScope.class); if (scope != null) { if (!Strings.isEmpty(scope.getName())) { QualifiedName namespace = nameConverter.toQualifiedName(scope .getName()); name = namespace.append(name); } } return name; } public QualifiedName qualifiedName(InterfaceScope ele) { QualifiedName name = null; if (!Strings.isEmpty(ele.getName())) { name = nameConverter.toQualifiedName(ele.getName()); } QualifiedName namespace = getNamespace(ele); if (namespace != null && name != null) { name = namespace.append(name); } return name; } protected QualifiedName getNamespace(EObject child) { QualifiedName name = super.getNamespace(child); if (!(child instanceof InterfaceScope)) { InterfaceScope interfaceScope = EcoreUtil2.getContainerOfType( child, InterfaceScope.class); if (interfaceScope != null && getFullyQualifiedName(interfaceScope) != null) { name = getFullyQualifiedName(interfaceScope); } } return name; } }