1 package net.sf.cantina.system;
2
3 import net.sf.cantina.DataSource;
4 import net.sf.cantina.webgui.StrutsAction;
5 import net.sf.cantina.exceptions.DuplicateKeyException;
6 import org.apache.struts.action.*;
7 import org.apache.struts.validator.DynaValidatorActionForm;
8
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11
12 /***
13 * @author Stephane JAIS
14 */
15 public class CreateDocumentAction
16 extends StrutsAction
17 {
18 public ActionForward execute(ActionMapping mapping,
19 ActionForm form,
20 HttpServletRequest request,
21 HttpServletResponse response)
22 throws Exception
23 {
24
25 ActionMessages messages = new ActionMessages();
26 ActionErrors errors = new ActionErrors();
27 DynaValidatorActionForm dynaform = (DynaValidatorActionForm) form;
28 String documentId = (String) dynaform.get("documentId");
29 String contentType = (String) dynaform.get("contentType");
30 String realmName = (String) dynaform.get("realmName");
31 Transaction t = new CreateDocumentTransaction(
32 documentId,
33 realmName,
34 contentType,
35 new HttpUser(request)
36 );
37 try
38 {
39 t.execute();
40 } catch (DuplicateKeyException e)
41 {
42 errors.add("documentId", new ActionError("duplicate.document.id",documentId));
43 saveErrors(request,errors);
44 return mapping.findForward(MAPPING_INPUT);
45 }
46 messages.add("documentId",new ActionMessage("document.created",documentId));
47 saveMessages(request,messages);
48 saveInRequest(request,DataSource.getInstance().loadDocument(documentId));
49 return mapping.findForward(MAPPING_SUCCESS);
50 }
51 }
52