浏览代码

Adding initial support to continue unfinished enactments.

Lucas Albertins 2 年之前
父节点
当前提交
21050c1b93
共有 1 个文件被更改,包括 37 次插入19 次删除
  1. 37 19
      src/main/java/ua/be/wee/controller/EnactmentControllerMVC.java

+ 37 - 19
src/main/java/ua/be/wee/controller/EnactmentControllerMVC.java

@@ -32,6 +32,7 @@ import ua.be.wee.model.pm.PM;
 import ua.be.wee.model.pt.EndActivityEvent;
 import ua.be.wee.model.pt.Event;
 import ua.be.wee.model.pt.PT;
+import ua.be.wee.model.pt.StartActivityEvent;
 import ua.be.wee.model.pt.StartTraceEvent;
 import ua.be.wee.model.pt.TraceArtifact;
 import ua.be.wee.model.repository.FusekiWrapper;
@@ -103,8 +104,8 @@ public class EnactmentControllerMVC {
     
     
     @RequestMapping(value="/enactpm", method=RequestMethod.POST, params="action=new")
-    public String getPMtoEnact(Model model, @RequestParam String pmiri, @RequestParam String contTrace, HttpServletRequest request) throws Exception {
-    	if ((pmiri.equals("select PM")) || contTrace != null && contTrace.equals("Select Trace")) {
+    public String getPMtoEnact(Model model, @RequestParam String pmiri, HttpServletRequest request) throws Exception {
+    	if ((pmiri.equals("select PM"))) {
 			model.addAttribute("error", true);
 			model.addAttribute("pms", controller.getAllPMs());
 			model.addAttribute("traces",null);
@@ -118,7 +119,6 @@ public class EnactmentControllerMVC {
 			model.addAttribute("error", false);
 			request.getSession().setAttribute("pm", pm);
 			request.getSession().setAttribute("trace", trace);
-			request.getSession().setAttribute("previous", pm.getInitial().getIri());
 			request.getSession().setAttribute("acts",acts);
 			request.getSession().setAttribute("endacts",new ArrayList<Node>());
 			model.addAttribute("arts", null);
@@ -137,7 +137,6 @@ public class EnactmentControllerMVC {
 			return "pms";
 		} else {
 			PM pm = controller.getPM(pmiri);			
-			//PT trace = controller.createTrace(pm);
 			List<Event> events = ptController.getEvents(contTrace);
 			PT trace = new PT();
 			trace.setEvents(events);
@@ -151,17 +150,19 @@ public class EnactmentControllerMVC {
 				
 			} else {
 				endActs = findEndActs(events);
-				List<Pair<String,String>> iris = controller.findNextNodes(pm.getInitial().getIri());
-				List<PMTrigger> acts = findElements(pm, iris);
+				List<PMTrigger> acts = new ArrayList<PMTrigger>();
+				if (events.get(events.size()-1) instanceof EndActivityEvent) {
+					EndActivityEvent last = (EndActivityEvent)events.get(events.size()-1);
+					List<Pair<String,String>> iris = controller.findNextNodes(last.getRelatesTo().getIri());
+					acts = findElements(pm, iris);
+				}
+				
 				request.getSession().setAttribute("acts",acts);
-			}
-		
-			String previous = findPrevious(events);
-			
+				
+			}			
 			model.addAttribute("error", false);
 			request.getSession().setAttribute("pm", pm);
 			request.getSession().setAttribute("trace", trace);
-			request.getSession().setAttribute("previous", previous);
 			request.getSession().setAttribute("endacts",endActs);
 			model.addAttribute("arts", null);
 			model.addAttribute("current", "1");
@@ -169,14 +170,27 @@ public class EnactmentControllerMVC {
 		}
     }
     
-    private String findPrevious(List<Event> events) {
-		// TODO Auto-generated method stub
-		return null;
-	}
 
 	private List<Node> findEndActs(List<Event> events) {
-		// TODO Auto-generated method stub
-		return null;
+		List<Node> result = new ArrayList<Node>();
+		for (Event event : events) {
+			String name = event.getIri().split("#")[1];
+			if (name.startsWith("start_activity")) {
+				String index = name.split("start_activity")[1];
+				boolean found = false;
+				for (Event event2 : events) {
+					String end = event2.getIri().split("#")[1];
+					if (end.equals("end_activity" + index)) {
+						found = true;
+						break;
+					}
+				}
+				if (!found) {
+					result.add(((StartActivityEvent)event).getRelatesTo().getActivity());
+				}
+			}
+		}
+		return result;
 	}
 
 	@PostMapping("/startAct")
@@ -232,7 +246,6 @@ public class EnactmentControllerMVC {
 				if (part.getName().equals(artifact.getName())) {
 					TraceArtifact tArt = new TraceArtifact();
 					tArt.setLocation(part.getSubmittedFileName());
-					//tArt.setTag("v1"); //TODO fix the tag generation
 					tArt.setGUID(part.getSubmittedFileName()+"-" +tArt.getTag());
 					tArt.setRelatesTo(artifact);
 					traceArts.add(tArt);
@@ -242,7 +255,12 @@ public class EnactmentControllerMVC {
 		}
     	
     	controller.addEndEvent(pt,traceArts,p);
-    	endacts.remove(act);
+    	for (Node activ : endacts) {
+			if (activ.getIri().equals(act.getIri())) {
+				endacts.remove(activ);
+				break;
+			}
+		}	
 
     	List<Pair<String,String>> iris = controller.findNextNodes(p.getIri());
         acts.addAll(findElements(pm, iris));