package org.bpmscript.web;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.bpmscript.FileUtils;
import org.bpmscript.remote.IRemoteProcessManager;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.core.io.Resource;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView;
public class NewProcessController extends SimpleFormController implements InitializingBean {
private final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory
.getLog(NewProcessController.class);
private IRemoteProcessManager remoteProcessManager;
private Resource sampleJs = null;
private String sampleSource;
@Override
protected Map<String, Object> referenceData(HttpServletRequest request) throws Exception {
Map<String, Object> result = new HashMap<String, Object>();
return result;
}
@Override
protected Object formBackingObject(HttpServletRequest request) throws Exception {
NewProcess newProcess = new NewProcess();
newProcess.setSource(sampleSource);
return newProcess;
}
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
NewProcess newProcess = (NewProcess) command;
String processId = remoteProcessManager.createProcess(null, newProcess.getProcessName());
remoteProcessManager.addSourceToProcess(processId, "main.js", newProcess.getSource(), true);
remoteProcessManager.setProcessAsPrimary(processId);
log.debug("process created and set to primary");
return new ModelAndView(new RedirectView("processes.html", true));
}
public void setRemoteProcessManager(IRemoteProcessManager remoteProcessManager) {
this.remoteProcessManager = remoteProcessManager;
}
public void afterPropertiesSet() throws Exception {
if(sampleJs != null) {
sampleSource = FileUtils.readFully(sampleJs.getInputStream());
}
}
public void setSampleJs(Resource sampleJs) {
this.sampleJs = sampleJs;
}
}
|