package org.jbpm.spring.web;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.jbpm.kie.services.impl.KModuleDeploymentUnit;
import org.jbpm.services.api.DeploymentService;
import org.jbpm.services.api.model.DeployedUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequestMapping("/deployment")
public class DeploymentController {
@Autowired
private DeploymentService deploymentService;
@RequestMapping(value = "/deploy", method = RequestMethod.POST)
public String deployUnit(@RequestParam String id, ModelMap model) {
try {
String[] gav = id.split(":");
KModuleDeploymentUnit unit = new KModuleDeploymentUnit(gav[0], gav[1], gav[2]);
deploymentService.deploy(unit);
model.addAttribute("message", "deployed " + unit.getIdentifier() + " successfully");
} catch (Exception e) {
model.addAttribute("message", "deployment " + id + " successfully due to " + e.getMessage());
}
return "deployment";
}
@RequestMapping(value = "/undeploy", method = RequestMethod.POST)
public String undeployUnit(@RequestParam String id, ModelMap model) {
try {
String[] gav = id.split(":");
KModuleDeploymentUnit unit = new KModuleDeploymentUnit(gav[0], gav[1], gav[2]);
deploymentService.undeploy(unit);
model.addAttribute("message", "deployed " + unit.getIdentifier() + " successfully");
} catch (Exception e) {
model.addAttribute("message", "deployment " + id + " successfully due to " + e.getMessage());
}
return "deployment";
}
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String getDeploymentUnit(@RequestParam String id, ModelMap model) {
DeployedUnit unit = deploymentService.getDeployedUnit(id);
model.addAttribute("unit", unit.getDeploymentUnit().getIdentifier());
model.addAttribute("strategy", unit.getDeploymentUnit().getStrategy());
model.addAttribute("classes", unit.getDeployedClasses());
model.addAttribute("assets", unit.getDeployedAssets());
return "deploymentUnit";
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getDeployments(ModelMap model) {
Collection<DeployedUnit> deployedUnits = deploymentService.getDeployedUnits();
List<String> units = new ArrayList<String>();
for (DeployedUnit unit : deployedUnits) {
units.add(unit.getDeploymentUnit().getIdentifier());
}
model.addAttribute("deployedUnits", units);
return "deploymentList";
}
@RequestMapping(value = "/new", method = RequestMethod.GET)
public String newDeploymentForm(ModelMap model) {
return "newDeploymentUnit";
}
}