|
|
@@ -10,6 +10,9 @@
|
|
|
*/
|
|
|
package org.yakindu.sct.model.sgraph.naming;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
import org.eclipse.emf.ecore.EObject;
|
|
|
import org.eclipse.xtext.EcoreUtil2;
|
|
|
import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
|
|
|
@@ -17,6 +20,7 @@ import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
|
|
import org.eclipse.xtext.naming.QualifiedName;
|
|
|
import org.eclipse.xtext.util.SimpleAttributeResolver;
|
|
|
import org.eclipse.xtext.util.Strings;
|
|
|
+import org.yakindu.sct.model.sgraph.Choice;
|
|
|
import org.yakindu.sct.model.sgraph.Declaration;
|
|
|
import org.yakindu.sct.model.sgraph.FinalState;
|
|
|
import org.yakindu.sct.model.sgraph.Region;
|
|
|
@@ -24,7 +28,10 @@ import org.yakindu.sct.model.sgraph.Scope;
|
|
|
import org.yakindu.sct.model.sgraph.ScopedElement;
|
|
|
import org.yakindu.sct.model.sgraph.State;
|
|
|
import org.yakindu.sct.model.sgraph.Statechart;
|
|
|
+import org.yakindu.sct.model.sgraph.Vertex;
|
|
|
|
|
|
+import com.google.common.base.Predicate;
|
|
|
+import com.google.common.collect.Collections2;
|
|
|
import com.google.inject.Inject;
|
|
|
|
|
|
/**
|
|
|
@@ -37,6 +44,7 @@ import com.google.inject.Inject;
|
|
|
public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider {
|
|
|
|
|
|
private static final String _FINAL_STATE_NAME = "_final_";
|
|
|
+ private static final String _CHOICE_NAME = "_choice_";
|
|
|
|
|
|
@Inject
|
|
|
private IQualifiedNameConverter nameConverter;
|
|
|
@@ -56,6 +64,31 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
|
|
|
return name;
|
|
|
}
|
|
|
|
|
|
+ public QualifiedName qualifiedName(Choice ele) {
|
|
|
+
|
|
|
+ // first get order number of choice node
|
|
|
+ List<Vertex> choiceList = new ArrayList<Vertex>();
|
|
|
+ choiceList.addAll(Collections2.filter(
|
|
|
+ ((Region) ele.eContainer()).getVertices(),
|
|
|
+ new Predicate<Vertex>() {
|
|
|
+ public boolean apply(Vertex input) {
|
|
|
+ return input instanceof Choice;
|
|
|
+ }
|
|
|
+ }));
|
|
|
+ int index = choiceList.indexOf(ele);
|
|
|
+
|
|
|
+ EObject temp = ele;
|
|
|
+ QualifiedName qualifiedNameFromConverter = QualifiedName
|
|
|
+ .create(_CHOICE_NAME + index);
|
|
|
+ while (temp.eContainer() != null) {
|
|
|
+ temp = temp.eContainer();
|
|
|
+ QualifiedName parentsQualifiedName = getFullyQualifiedName(temp);
|
|
|
+ if (parentsQualifiedName != null)
|
|
|
+ return parentsQualifiedName.append(qualifiedNameFromConverter);
|
|
|
+ }
|
|
|
+ return qualifiedNameFromConverter;
|
|
|
+ }
|
|
|
+
|
|
|
public QualifiedName qualifiedName(Scope ele) {
|
|
|
QualifiedName name = null;
|
|
|
String nameString = SimpleAttributeResolver.NAME_RESOLVER.apply(ele);
|
|
|
@@ -82,7 +115,7 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
|
|
|
}
|
|
|
return qfn;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public QualifiedName qualifiedName(State ele) {
|
|
|
EObject temp = ele;
|
|
|
ele.getName();
|
|
|
@@ -96,7 +129,7 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
|
|
|
}
|
|
|
return qualifiedNameFromConverter;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public QualifiedName qualifiedName(Region ele) {
|
|
|
EObject temp = ele;
|
|
|
ele.getName();
|
|
|
@@ -110,7 +143,6 @@ public class SGraphNameProvider extends DefaultDeclarativeQualifiedNameProvider
|
|
|
}
|
|
|
return qualifiedNameFromConverter;
|
|
|
}
|
|
|
-
|
|
|
|
|
|
public QualifiedName qualifiedName(Declaration ele) {
|
|
|
QualifiedName name = null;
|