Просмотр исходного кода

Added QualifiedName for FinalStates

Andreas Mülder 14 лет назад
Родитель
Сommit
0da02eaf7b

+ 21 - 4
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/naming/SGraphNameProvider.java

@@ -18,6 +18,7 @@ import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.util.SimpleAttributeResolver;
 import org.eclipse.xtext.util.Strings;
 import org.yakindu.sct.model.sgraph.Declaration;
+import org.yakindu.sct.model.sgraph.FinalState;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Statechart;
@@ -28,13 +29,17 @@ import com.google.inject.Inject;
  * NameProvider for SGraph elements like statecharts, scopes and declarations.
  * 
  * @author benjamin schwertfeger
+ * @author andreas muelder
  * 
  */
 public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider {
+
+	private static final String _FINAL_STATE_NAME = "_final_";
+
 	@Inject
-	IQualifiedNameConverter nameConverter;
+	private IQualifiedNameConverter nameConverter;
 
-	QualifiedName qualifiedName(Statechart ele) {
+	public QualifiedName qualifiedName(Statechart ele) {
 		String scName = ele.getName();
 		if (Strings.isEmpty(scName)) {
 			return null;
@@ -47,7 +52,7 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
 		return name;
 	}
 
-	QualifiedName qualifiedName(Scope ele) {
+	public QualifiedName qualifiedName(Scope ele) {
 		QualifiedName name = null;
 		String nameString = SimpleAttributeResolver.NAME_RESOLVER.apply(ele);
 		if (!Strings.isEmpty(nameString)) {
@@ -61,7 +66,19 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
 		return name;
 	}
 
-	QualifiedName qualifiedName(Declaration ele) {
+	public QualifiedName qualifiedName(FinalState ele) {
+		EObject temp = ele;
+		QualifiedName qualifiedNameFromConverter =QualifiedName.create(_FINAL_STATE_NAME);
+		while (temp.eContainer() != null) {
+			temp = temp.eContainer();
+			QualifiedName parentsQualifiedName = getFullyQualifiedName(temp);
+			if (parentsQualifiedName != null)
+				return parentsQualifiedName.append(qualifiedNameFromConverter);
+		}
+		return qualifiedNameFromConverter;
+	}
+
+	public QualifiedName qualifiedName(Declaration ele) {
 		QualifiedName name = null;
 		if (!Strings.isEmpty(ele.getName())) {
 			name = nameConverter.toQualifiedName(ele.getName());