KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > documan > util > SaveCheckinAction


1 /* License: GNU General Public License (GPL) version 2 from June 1991; but not any newer version!
2  */

3 package org.contineo.actions.documan.util;
4
5 import javax.servlet.http.HttpServletRequest JavaDoc;
6 import javax.servlet.http.HttpServletResponse JavaDoc;
7 import javax.servlet.http.HttpSession JavaDoc;
8
9 import org.apache.log4j.Level;
10 import org.apache.log4j.Logger;
11 import org.apache.struts.action.Action;
12 import org.apache.struts.action.ActionError;
13 import org.apache.struts.action.ActionErrors;
14 import org.apache.struts.action.ActionForm;
15 import org.apache.struts.action.ActionForward;
16 import org.apache.struts.action.ActionMapping;
17 import org.apache.struts.action.ActionMessage;
18 import org.apache.struts.action.ActionMessages;
19 import org.apache.struts.upload.FormFile;
20 import org.contineo.admin.Menu;
21 import org.contineo.admin.dao.MenuDAO;
22 import org.contineo.core.LoggingManager;
23 import org.contineo.core.SessionManagement;
24 import org.contineo.documan.CheckinDocUtil;
25 import org.contineo.documan.Document;
26 import org.contineo.documan.Version;
27 import org.contineo.documan.dao.DocumentDAO;
28 import org.contineo.forms.CheckinForm;
29
30 /**
31  * Called to checkin a document in a new version and to reindex it.
32  * Created on 1. November 2003, 20:04
33  * @author Michael Scholz
34  * @author Sebastian Stein
35  */

36 public class SaveCheckinAction extends Action {
37
38     /**
39      * @uml.property name="logger"
40      * @uml.associationEnd
41      */

42     private Logger logger;
43     
44     /** Creates a new instance of SaveCheckinAction */
45     public SaveCheckinAction() {
46         logger = LoggingManager.getLogger(this.getClass());
47     }
48
49     /** checks a file in as a new version of a given document */
50     public ActionForward execute(ActionMapping mapping,
51                     ActionForm form, HttpServletRequest JavaDoc request,
52                     HttpServletResponse JavaDoc response) {
53         ActionForward actionForward = new ActionForward();
54         ActionErrors errors = new ActionErrors();
55         ActionMessages messages = new ActionMessages();
56         HttpSession JavaDoc session = request.getSession();
57         
58         if (SessionManagement.isValid(session)) {
59             CheckinForm cform = (CheckinForm)form;
60             DocumentDAO ddao = new DocumentDAO();
61             MenuDAO mdao = new MenuDAO();
62             int docId = cform.getDocid().intValue();
63             Document document = ddao.findByPrimaryKey(docId);
64             String JavaDoc username = (String JavaDoc) session.getAttribute("authuser");
65             String JavaDoc versionDesc = cform.getVersionDesc();
66             if (document.getDocStatus() == Document.DOC_CHECKED_OUT) {
67                 // check that we have a valid file for storing as new version
68
FormFile formFile = cform.getFile();
69                 String JavaDoc fileName = formFile.getFileName();
70                 if (formFile != null && !fileName.equals("")) {
71                     // determines the kind of version to create
72
Version.VERSION_TYPE versionType;
73                     if (cform.isRelease() == true)
74                         versionType = Version.VERSION_TYPE.NEW_RELEASE;
75                     else if (cform.isSubversion() == true)
76                         versionType = Version.VERSION_TYPE.NEW_SUBVERSION;
77                     else
78                         versionType = Version.VERSION_TYPE.OLD_VERSION;
79                     
80                     try {
81                         // checkin the document; throws an exception if something goes wrong
82
CheckinDocUtil.checkinDocument(docId, formFile.getInputStream(),
83                                                        fileName, username, versionType,
84                                                        versionDesc);
85                         
86                         /* create positive log message */
87                         messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.action.savedoc"));
88                     } catch (Exception JavaDoc e) {
89                         if (logger.isEnabledFor(Level.ERROR))
90                             logger.error(e.getMessage());
91                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.savedoc"));
92                     }
93                     
94                     // if possible, do not show this strange doc frame jsp,
95
// instead show again the document in it's folder
96
int menuId = document.getMenuId();
97                     Menu menu = mdao.findByPrimaryKey(menuId);
98                     String JavaDoc parentId = "";
99                     parentId = String.valueOf(menu.getMenuParent());
100                     if (parentId != null && !parentId.equalsIgnoreCase(""))
101                         actionForward.setPath("/ShowFolderContent.do?menuid=" + parentId);
102                     else
103                         actionForward.setPath("/DocFrame.do?menuid=" + String.valueOf(menuId));
104                 } else {
105                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.required"));
106                     actionForward.setPath("/Checkin.do?menuid=" + document.getMenuId());
107                 }
108             } else {
109                 actionForward = mapping.findForward("noaccess");
110             }
111
112         } else
113             actionForward = mapping.findForward("invalid");
114             
115         saveErrors(request, errors);
116         saveMessages(request, messages);
117         return actionForward;
118     }
119
120
121     
122       
123 }
Popular Tags