private static State getState(String name, UmlActivityDiagram actdiagram, List <Transition> transitions) { foreach (UmlElement act in actdiagram.UmlObjects.OfType <UmlElement>()) { if (act.Name.Equals(name)) { State sSource = new State(); sSource.Name = act.Name; sSource.Id = act.Id; foreach (Transition item in transitions) { if (item.SourceState.Equals(sSource.Name)) { Transition t = new Transition(); t.SourceState = sSource; State sTarget = new State(); UmlElement element = new UmlActionState(); element = getTransition(act).Target; sTarget.Id = element.Id; sTarget.Name = element.Name; sSource.Transitions.Add(t); } } return(sSource); } } return(null); }
public static List <Transition> parallelTransitions(UmlTransition t, UmlActivityDiagram actDiagram) { List <UmlTransition> listUmlTransition = new List <UmlTransition>(); List <Transition> listTransition = new List <Transition>(); Transition tran1 = new Transition(); foreach (UmlTransition tran in actDiagram.UmlObjects.OfType <UmlTransition>()) { if (t.Target.Id.Equals(tran.Source.Id)) { listUmlTransition.Add(tran); } } Transition tran2 = new Transition(); tran2.Input = listUmlTransition[0].GetTaggedValue("TDACTION"); if (listUmlTransition[0].GetTaggedValue("TDPARAMETERS") == null) { tran2.Output = ""; } else { tran2.Output = listUmlTransition[0].GetTaggedValue("TDPARAMETERS"); } tran2.SourceState = getState(t.Source.Name, actDiagram, listTransition); tran2.TargetState = getState(listUmlTransition[0].Target.Name, actDiagram, listTransition);; listTransition.Add(tran2); UmlTransition transition = listUmlTransition[0]; tran1.Input = transition.GetTaggedValue("TDACTION"); if (transition.GetTaggedValue("TDPARAMETERS") == null) { tran1.Output = ""; } else { tran1.Output = transition.GetTaggedValue("TDPARAMETERS"); } tran1.SourceState = getState(transition.Target.Name, actDiagram, listTransition); for (int i = 1; i < listUmlTransition.Count; i++) { transition = listUmlTransition[i]; tran1.Input = transition.GetTaggedValue("TDACTION"); if (transition.GetTaggedValue("TDPARAMETERS") == null) { tran1.Output = ""; } else { tran1.Output = transition.GetTaggedValue("TDPARAMETERS"); } tran1.TargetState = getState(transition.Target.Name, actDiagram, listTransition); listTransition.Add(tran1); tran1 = new Transition(); tran1.SourceState = listTransition[listTransition.Count - 1].TargetState; } Transition tran3 = new Transition(); UmlTransition transitionAux = getNextState(listTransition[listTransition.Count - 1].TargetState.Name, actDiagram); tran3.Input = transitionAux.GetTaggedValue("TDACTION"); if (transitionAux.GetTaggedValue("TDPARAMETERS") == null) { tran3.Output = ""; } else { tran3.Output = transitionAux.GetTaggedValue("TDPARAMETERS"); } tran3.SourceState = listTransition[listTransition.Count - 1].TargetState; tran3.TargetState = getState(transitionAux.Target.Name, actDiagram, listTransition); listTransition.Add(tran3); return(listTransition); }