Ver código fonte

Extract Subdiagram Refactoring : Make entry and exit point names unique

Andreas Mülder 13 anos atrás
pai
commit
8e28d2e821

+ 26 - 21
plugins/org.yakindu.sct.refactoring/src/org/yakindu/sct/refactoring/refactor/impl/ExtractSubdiagramRefactoring.java

@@ -94,32 +94,39 @@ public class ExtractSubdiagramRefactoring extends AbstractRefactoring<View> {
 	}
 	}
 
 
 	protected void createEntryPoint(Edge edge, Diagram subdiagram) {
 	protected void createEntryPoint(Edge edge, Diagram subdiagram) {
-		// Semantic refactoring
 		Transition transition = (Transition) edge.getElement();
 		Transition transition = (Transition) edge.getElement();
-		String prefix = "entry_" + transition.getSource().getName();
-		createSemanticEntryPoint(transition, prefix);
+		String name = getEntryPointName(transition);
+		createSemanticEntryPoint(transition, name);
 		transition.setTarget((State) subdiagram.getElement());
 		transition.setTarget((State) subdiagram.getElement());
 		EList<ReactionProperty> properties = transition.getProperties();
 		EList<ReactionProperty> properties = transition.getProperties();
 		EntryPointSpec entryPointSpec = StextFactory.eINSTANCE.createEntryPointSpec();
 		EntryPointSpec entryPointSpec = StextFactory.eINSTANCE.createEntryPointSpec();
-		entryPointSpec.setEntrypoint(getUniquePointName(prefix, transition));
+		entryPointSpec.setEntrypoint(name);
 		properties.add(entryPointSpec);
 		properties.add(entryPointSpec);
-		// Notation refactoring
 		edge.setTarget(getContextObject());
 		edge.setTarget(getContextObject());
 	}
 	}
 
 
-	protected String getUniquePointName(String prefix, Transition transition) {
-		Vertex source = transition.getSource();
-		StringBuilder builder = new StringBuilder();
-		builder.append(prefix);
-		int index = source.getOutgoingTransitions().indexOf(transition);
-		builder.append(index);
-		return builder.toString();
+	protected String getEntryPointName(Transition transition) {
+		StringBuilder stringBuilder = new StringBuilder();
+		stringBuilder.append("entry_");
+		stringBuilder.append(transition.getSource().getName());
+		int index = transition.getSource().getOutgoingTransitions().indexOf(transition);
+		stringBuilder.append(index);
+		return stringBuilder.toString();
 	}
 	}
 
 
-	protected void createSemanticEntryPoint(Transition transition, String prefix) {
+	protected String getExitPointName(Transition transition) {
+		StringBuilder stringBuilder = new StringBuilder();
+		stringBuilder.append("exit_");
+		stringBuilder.append(transition.getSource().getName());
+		int index = transition.getSource().getOutgoingTransitions().indexOf(transition);
+		stringBuilder.append(index);
+		return stringBuilder.toString();
+	}
+
+	protected void createSemanticEntryPoint(Transition transition, String name) {
 		Region entryPointTarget = transition.getTarget().getParentRegion();
 		Region entryPointTarget = transition.getTarget().getParentRegion();
 		Entry entryPoint = SGraphFactory.eINSTANCE.createEntry();
 		Entry entryPoint = SGraphFactory.eINSTANCE.createEntry();
-		entryPoint.setName(getUniquePointName(prefix, transition));
+		entryPoint.setName(name);
 		entryPointTarget.getVertices().add(entryPoint);
 		entryPointTarget.getVertices().add(entryPoint);
 		Transition entryPointTransition = SGraphFactory.eINSTANCE.createTransition();
 		Transition entryPointTransition = SGraphFactory.eINSTANCE.createTransition();
 		entryPointTransition.setSource(entryPoint);
 		entryPointTransition.setSource(entryPoint);
@@ -127,23 +134,21 @@ public class ExtractSubdiagramRefactoring extends AbstractRefactoring<View> {
 	}
 	}
 
 
 	protected void createExitPoint(Edge edge, Diagram subdiagram) {
 	protected void createExitPoint(Edge edge, Diagram subdiagram) {
-		// Semantic refactoring
 		Transition transition = (Transition) edge.getElement();
 		Transition transition = (Transition) edge.getElement();
-		String prefix = "exit_" + transition.getSource().getName();
-		createSemanticExitPoint(transition, prefix);
+		String name = getExitPointName(transition);
+		createSemanticExitPoint(transition, name);
 		transition.setSource((State) subdiagram.getElement());
 		transition.setSource((State) subdiagram.getElement());
 		EList<ReactionProperty> properties = transition.getProperties();
 		EList<ReactionProperty> properties = transition.getProperties();
 		EntryPointSpec entryPointSpec = StextFactory.eINSTANCE.createEntryPointSpec();
 		EntryPointSpec entryPointSpec = StextFactory.eINSTANCE.createEntryPointSpec();
-		entryPointSpec.setEntrypoint(getUniquePointName(prefix, transition));
+		entryPointSpec.setEntrypoint(name);
 		properties.add(entryPointSpec);
 		properties.add(entryPointSpec);
-		// Notation refactoring
 		edge.setSource(getContextObject());
 		edge.setSource(getContextObject());
 	}
 	}
 
 
-	protected void createSemanticExitPoint(Transition transition, String prefix) {
+	protected void createSemanticExitPoint(Transition transition, String name) {
 		Region exitPointTarget = transition.getSource().getParentRegion();
 		Region exitPointTarget = transition.getSource().getParentRegion();
 		Exit exitPoint = SGraphFactory.eINSTANCE.createExit();
 		Exit exitPoint = SGraphFactory.eINSTANCE.createExit();
-		exitPoint.setName(getUniquePointName(prefix, transition));
+		exitPoint.setName(name);
 		exitPointTarget.getVertices().add(exitPoint);
 		exitPointTarget.getVertices().add(exitPoint);
 		Transition exitPointTransition = SGraphFactory.eINSTANCE.createTransition();
 		Transition exitPointTransition = SGraphFactory.eINSTANCE.createTransition();
 		exitPointTransition.setTarget(exitPoint);
 		exitPointTransition.setTarget(exitPoint);