瀏覽代碼

- Starting to develop the possibility of continuing an enactment.
- making the rest method calls public.
- fixing string organisation on NodeRepository.
- Allowing the StartTraceEvent to extract a name of the PT from its iri.

Lucas Albertins 2 年之前
父節點
當前提交
2c520745c0

+ 82 - 6
src/main/java/ua/be/wee/controller/EnactmentControllerMVC.java

@@ -17,8 +17,10 @@ import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import ua.be.wee.controller.rest.PTController;
 import ua.be.wee.model.EnactmentController;
 import ua.be.wee.model.nodes.Activity;
 import ua.be.wee.model.nodes.Artifact;
@@ -30,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.StartTraceEvent;
 import ua.be.wee.model.pt.TraceArtifact;
 import ua.be.wee.model.repository.FusekiWrapper;
 import ua.be.wee.model.util.Pair;
@@ -40,6 +43,9 @@ import ua.be.wee.service.FileStorageService;
 public class EnactmentControllerMVC {
 
 	@Autowired private EnactmentController controller;
+	
+	@Autowired
+	private PTController ptController;
   
 	@Autowired
 	private Environment env;
@@ -72,19 +78,37 @@ public class EnactmentControllerMVC {
     	if (FusekiWrapper.getInstance().testEndpoint()) {
     		model.addAttribute("error",false);
     		model.addAttribute("pms", controller.getAllPMs());
+    		model.addAttribute("traces",null);
+    		model.addAttribute("current", "1");
             return "pms";
 		} else {
 			model.addAttribute("error",true);
 			return "index";
 		}
-    	
     }
-
-    @PostMapping("/enactpm")
-    public String getPMtoEnact(Model model, @RequestParam String pmiri, HttpServletRequest request) throws Exception {
-    	if (pmiri.equals("select PM")) {
+    
+    @RequestMapping("/gettraces")
+    public String getTraces(Model model, @RequestParam String iri, HttpServletRequest request) throws Exception {
+    	List<StartTraceEvent> activeTraces = ptController.getActiveTraces(iri);
+    	if (activeTraces != null && activeTraces.size() > 0) {
+			model.addAttribute("traces",activeTraces);
+		} else {
+			model.addAttribute("traces",null);
+		}
+    	model.addAttribute("error",false);
+		model.addAttribute("pms", controller.getAllPMs());
+		model.addAttribute("current", iri);
+        return "pms";
+    }
+    
+    
+    @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")) {
 			model.addAttribute("error", true);
 			model.addAttribute("pms", controller.getAllPMs());
+			model.addAttribute("traces",null);
+    		model.addAttribute("current", "1");
 			return "pms";
 		} else {
 			PM pm = controller.getPM(pmiri);			
@@ -102,8 +126,60 @@ public class EnactmentControllerMVC {
 	        return "enact";
 		}
     }
+    
+    @RequestMapping(value="/enactpm", method=RequestMethod.POST, params="action=continue")
+    public String continueEnact(Model model, @RequestParam String pmiri, @RequestParam String contTrace, HttpServletRequest request) throws Exception {
+    	if ((pmiri.equals("select PM")) || contTrace != null && contTrace.equals("Select Trace")) {
+			model.addAttribute("error", true);
+			model.addAttribute("pms", controller.getAllPMs());
+			model.addAttribute("traces",null);
+    		model.addAttribute("current", "1");
+			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);
+			trace.setIri(contTrace);
+			trace.setPmEnacted(pm);
+			List <Node> endActs = new ArrayList<Node>();
+			if (events.size() == 1) {
+				List<Pair<String,String>> iris = controller.findNextNodes(pm.getInitial().getIri());
+				List<PMTrigger> acts = findElements(pm, iris);
+				request.getSession().setAttribute("acts",acts);
+				
+			} else {
+				endActs = findEndActs(events);
+				List<Pair<String,String>> iris = controller.findNextNodes(pm.getInitial().getIri());
+				List<PMTrigger> 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");
+	        return "enact";
+		}
+    }
+    
+    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;
+	}
 
-    @PostMapping("/startAct")
+	@PostMapping("/startAct")
     public String startActivity(Model model, @RequestParam String iri, HttpServletRequest request) throws Exception {
     	PM pm = (PM)request.getSession().getAttribute("pm");
     	PT pt = (PT)request.getSession().getAttribute("trace");

+ 2 - 2
src/main/java/ua/be/wee/controller/rest/NodeController.java

@@ -19,13 +19,13 @@ public class NodeController {
 	
 	@CrossOrigin
 	@GetMapping("/nodes/{pmIRI}")
-	List<Node> all(@PathVariable String pmIRI) throws Exception {
+	public List<Node> all(@PathVariable String pmIRI) throws Exception {
 		return nodesRepo.getNodes(pmIRI);
 	}
 
 	@CrossOrigin
 	@GetMapping("/nodes/{pmIRI}/{nodeIRI}")
-	Node getNode(@PathVariable String pmIRI, @PathVariable String nodeIRI) throws Exception {
+	public Node getNode(@PathVariable String pmIRI, @PathVariable String nodeIRI) throws Exception {
 		List<Node> nodes = nodesRepo.getNodes(pmIRI);
 		for (Node node : nodes) {
 			if (node.getIri().equals(nodeIRI)) {

+ 3 - 3
src/main/java/ua/be/wee/controller/rest/PMController.java

@@ -26,7 +26,7 @@ public class PMController {
 
 	@CrossOrigin
 	@GetMapping("/pms")
-	List<PM> all() throws Exception {
+	public List<PM> all() throws Exception {
 		List<PM> allPMs = pmRepo.getAllPMs();
 		for (PM pm : allPMs) {
 			pm.setNodes(nodesRepo.getNodes(pm.getIri()));
@@ -36,7 +36,7 @@ public class PMController {
 	
 	@CrossOrigin
 	@GetMapping("/pmss/{id}")
-	PM getPM(@PathVariable String id) throws Exception {
+	public PM getPM(@PathVariable String id) throws Exception {
 		PM pm = pmRepo.getPM(id);
 		pm.setNodes(nodesRepo.getNodes(pm.getIri()));
 		return pm;
@@ -44,7 +44,7 @@ public class PMController {
 	
 	@CrossOrigin
 	@PutMapping("/endpoint")
-	boolean setEndpoint(@RequestBody String url) {
+	public boolean setEndpoint(@RequestBody String url) {
 		FusekiWrapper.getInstance().setServiceURI(url);
 		return FusekiWrapper.getInstance().testEndpoint();
 	}

+ 4 - 4
src/main/java/ua/be/wee/controller/rest/PTController.java

@@ -20,25 +20,25 @@ public class PTController {
 	
 	@CrossOrigin
 	@GetMapping("/traces")
-	List<StartTraceEvent> allPTs() {
+	public List<StartTraceEvent> allPTs() {
 		return ptRepository.getStartTraceEvents();
 	}
 	
 	@CrossOrigin
 	@GetMapping("/traces/events/{traceiri}")
-	List<Event> getEvents(@PathVariable String traceiri) throws Exception {
+	public List<Event> getEvents(@PathVariable String traceiri) throws Exception {
 		return ptRepository.getEvents(traceiri);
 	}
 	
 	@CrossOrigin
 	@GetMapping("/traces/active/{pmiri}")
-	List<StartTraceEvent> getActiveTraces(@PathVariable String pmiri) throws Exception {
+	public List<StartTraceEvent> getActiveTraces(@PathVariable String pmiri) throws Exception {
 		return ptRepository.getActiveTraces(pmiri);
 	}
 	
 	@CrossOrigin
 	@GetMapping("/traces/finished/{pmiri}")
-	List<StartTraceEvent> getConcludedTraces(@PathVariable String pmiri) throws Exception {
+	public List<StartTraceEvent> getConcludedTraces(@PathVariable String pmiri) throws Exception {
 		return ptRepository.getConcludedTraces(pmiri);
 	}
 	

+ 4 - 0
src/main/java/ua/be/wee/model/pt/StartTraceEvent.java

@@ -18,4 +18,8 @@ public class StartTraceEvent extends Event {
 	public void setPmEnacted(PM pmEnacted) {
 		this.pmEnacted = pmEnacted;
 	}
+	
+	public String getName() {
+		return super.getIri().split("#")[1];
+	}
 }

+ 2 - 2
src/main/java/ua/be/wee/model/repository/NodeRespository.java

@@ -333,8 +333,8 @@ public class NodeRespository {
 	private Node createActivity(String iri) throws Exception {
 		Activity act = new Activity();
 		String query = "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
-				+ "PREFIX ftg: <http://ua.be/sdo2l/vocabulary/formalisms/ftg#>"
-				+ "PREFIX base: <http://ua.be/sdo2l/vocabulary/base/base#>"
+				+ "PREFIX ftg: <http://ua.be/sdo2l/vocabulary/formalisms/ftg#>\n"
+				+ "PREFIX base: <http://ua.be/sdo2l/vocabulary/base/base#>\n"
 				+ "PREFIX pm: <http://ua.be/sdo2l/vocabulary/formalisms/pm#>\n" + "SELECT ?act ?name ?type WHERE {\n"
 				+ "	?act owl:sameAs <" + iri + ">;\n" + "   		pm:isTransformation ?t ;  \n"
 				+ "   		pm:hasName ?name .  \n" + " ?t base:hasGUID ?type .  \n" + "}";

+ 1 - 1
src/main/resources/templates/base.html

@@ -28,7 +28,7 @@
 
     <div id="navigation-menu" class="navbar-menu">
       <div class="navbar-start">
-        <a class="navbar-item">Home</a>
+        <a class="navbar-item" href="/" >Home</a>
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link">Enactment</a>
           <div class="navbar-dropdown">

+ 19 - 4
src/main/resources/templates/pms.html

@@ -12,16 +12,31 @@
       <div class="field has-addons">
         <div class="control is-expanded">
           <div class="select is-fullwidth">
-            <select id="dropDownList" name="pmiri">
-              <option value="Select PM">select PM</option>
-              <option th:each="pm: ${pms}" th:value="${pm.iri}" th:text="${pm}"></option>
+            <select id="dropDownList" name="pmiri" th:onchange="'window.location.href = \'' + @{/gettraces} + '?iri=\' + encodeURIComponent(this.value) ' ">
+              <option th:value="1">select PM</option>
+              <option th:each="pm: ${pms}" th:value="${pm.iri}" th:text="${pm}" th:selected="${pm.iri == current}"></option>
             </select>
           </div>
         </div>
         <div class="control">
-          <button type="submit" class="button is-primary">Start Enactment</button>
+          <button type="submit" class="button is-primary" name="action" value="new" >New Enactment</button>
         </div>
+        
       </div>
+      
+       <div class="field has-addons" th:if="${traces != null}">
+          <p class="is-size-6">Continue enactment:</p>
+           <div class="select is-fullwidth">
+          <select id="dropDownList" name="contTrace">
+              <option value="Select Trace">select trace</option>
+              <option th:each="trace: ${traces}" th:value="${trace.iri}" th:text="${trace.name} + ' started at ' + ${trace.timestampF}"></option>
+          </select>
+          </div>
+          <div class="control">
+          	<button type="submit" class="button is-primary" name="action" value="continue">Continue Enactment</button>
+      	  </div>    
+       </div>
+      
     </form>
   </section>
 </main>