Subversion Repositories bacoAlunos

Rev

Rev 1312 | Rev 1350 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
406 jmachado 1
package pt.estgp.estgweb.web;
2
 
3
import org.apache.commons.fileupload.FileItem;
4
import org.apache.commons.fileupload.FileUploadException;
5
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
6
import org.apache.commons.fileupload.servlet.ServletFileUpload;
7
import org.apache.log4j.Logger;
1286 jmachado 8
import pt.estgp.estgweb.domain.views.CourseUnitView;
406 jmachado 9
import pt.estgp.estgweb.services.ftpservices.FtpRequestForm;
1314 jmachado 10
import pt.estgp.estgweb.web.controllers.ApplicationController;
406 jmachado 11
import pt.estgp.estgweb.web.utils.RequestUtils;
12
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
13
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
14
 
15
import javax.servlet.http.HttpServletRequest;
16
import javax.servlet.http.HttpServletResponse;
17
import java.io.File;
18
import java.io.InputStream;
19
import java.util.ArrayList;
20
import java.util.List;
21
 
22
/**
23
 * @author Jorge
24
 * @date 27/Fev/2009
25
 * @time 1:19:57
26
 */
27
public class FtpManager
28
{
29
 
30
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(FtpManager.class);
31
 
1314 jmachado 32
    public static void checkIfAnyFilesToUploadFromRequest(ApplicationController messageBack, HttpServletRequest request, HttpServletResponse response)
406 jmachado 33
    {
34
        1.5.0/docs/api/java/lang/String.html">String formUploadStyle = "display:none;";
35
        int maxMegas = pt.estgp.estgweb.Globals.MAX_FILE_UPOLOAD_SIZE_MBYTES;
36
        try
37
        {
38
 
39
            // Check that we have a file upload request
40
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
41
            if (isMultipart)
42
            {
43
                // Create a factory for disk-based file items
44
                DiskFileItemFactory factory = new DiskFileItemFactory();
45
                // Set factory constraints
46
                factory.setSizeThreshold(maxMegas * 1024 * 1024);
47
                factory.setRepository(new 1.5.0/docs/api/java/io/File.html">File(pt.estgp.estgweb.Globals.TMP_DIR));
48
                // Create a new file upload handler
49
                ServletFileUpload upload = new ServletFileUpload(factory);
50
                // Set overall request size constraint
51
                upload.setSizeMax((maxMegas + 1) * 1024 * 1024);
52
                // Parse the request
53
                List<FileItem> items = upload.parseRequest(request);
54
                List<FileItem> items2import = new ArrayList<FileItem>();
55
                for (FileItem item : items)
56
                {
57
                    5+0%2Fdocs%2Fapi+InputStream">InputStream stream = item.getInputStream();
58
                    if (item.isFormField())
59
                    {
60
                        request.setAttribute(item.getFieldName(), item.getString());
61
                    }
62
                    if (stream != null && item.getSize() > 0 && item.getName() != null)
63
                    {
64
                        items2import.add(item);
65
                    }
1289 jmachado 66
                    else if(stream != null && item.getName() != null)
1286 jmachado 67
                    {
1290 jmachado 68
                        1.5.0/docs/api/java/lang/String.html">String newFolder = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("newFolder");
69
                        1.5.0/docs/api/java/lang/String.html">String deleteFile = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("deleteFile");
70
                        1.5.0/docs/api/java/lang/String.html">String deleteFolder = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("deleteFolder");
71
                        if((newFolder == null || newFolder.length() == 0) && (deleteFile == null || deleteFile.length() == 0) && (deleteFolder == null || deleteFolder.length() == 0))
72
                        {
73
                            logger.warn("ITEM:" + item.getName() + " not parameter and has ZERO BYTES will not import");
74
                            messageBack.addError(request,"errors.file.zero.bytes",item.getName());
75
                        }
1286 jmachado 76
                    }
406 jmachado 77
                }
78
                1.5.0/docs/api/java/lang/String.html">String username = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("username");
79
                1.5.0/docs/api/java/lang/String.html">String password = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("password");
80
                1.5.0/docs/api/java/lang/String.html">String server = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("server");
81
                1.5.0/docs/api/java/lang/String.html">String startPath = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute(DirWebProxy.FTP_ACTUAL_PATH_KEY);
82
                if (startPath == null)
83
                    startPath = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute(LayoutController.FTP_ACTUAL_PATH_KEY);
489 jmachado 84
                1.5.0/docs/api/java/lang/String.html">String serverConfName = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("serverConfName");
406 jmachado 85
                1.5.0/docs/api/java/lang/String.html">String savePassword = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("savePassword");
86
                1.5.0/docs/api/java/lang/String.html">String newFolder = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("newFolder");
87
                1.5.0/docs/api/java/lang/String.html">String deleteFile = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("deleteFile");
88
                1.5.0/docs/api/java/lang/String.html">String deleteFolder = (1.5.0/docs/api/java/lang/String.html">String) request.getAttribute("deleteFolder");
89
                if (items2import.size() > 0
90
                        ||
91
                        (newFolder != null && newFolder.trim().length() > 0)
92
                        ||
93
                        (deleteFile != null && deleteFile.trim().length() > 0)
94
                        ||
95
                        (deleteFolder != null && deleteFolder.trim().length() > 0))
96
                {
97
 
98
                    FtpRequestForm ftpRequestForm = new FtpRequestForm();
489 jmachado 99
                    CourseUnitView courseUnitView = (CourseUnitView) request.getAttribute("CourseUnitView");
100
                    if(courseUnitView != null)
101
                        ftpRequestForm.setCourseUnitView(courseUnitView);
102
                    ftpRequestForm.setServerConfName(serverConfName);
406 jmachado 103
                    ftpRequestForm.setUsername(username);
104
                    ftpRequestForm.setPassword(password);
105
                    if (savePassword != null && savePassword.trim().length() > 0)
106
                        ftpRequestForm.setSavePassword(true);
107
                    ftpRequestForm.setNewFolderName(newFolder);
108
                    ftpRequestForm.setFileToDelete(deleteFile);
109
                    ftpRequestForm.setFolderToDelete(deleteFolder);
110
                    ftpRequestForm.setServerUrl(server);
111
                    ftpRequestForm.setStartPath(startPath);
112
                    ftpRequestForm.setFilesToImport(items2import);
113
 
114
                    IServiceManager sm = ServiceManager.getInstance();
115
                    1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
116
                    5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{ftpRequestForm};
117
                    try
118
                    {
119
                        1.5.0/docs/api/java/lang/String.html">String result = (1.5.0/docs/api/java/lang/String.html">String) sm.execute(RequestUtils.getRequester(request, response), "FtpService", args, names);
120
                        if(result.indexOf("error") >= 0)
121
                            messageBack.addError(request, result);
122
                        else
123
                            messageBack.addMessage(request, result);
124
                    }
125
                    catch (1.5.0/docs/api/java/lang/Exception.html">Exception e)
126
                    {
127
                        response.sendError(500,e.toString());
128
                        return;
129
                    }
130
                    catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable throwable)
131
                    {
132
                        logger.error(throwable,throwable);
133
                    }
134
                }
1286 jmachado 135
                else
136
                {
137
                    logger.info("Zero items to import");
138
                }
406 jmachado 139
            }
140
        }
141
        catch (FileUploadException e)
142
        {
143
            formUploadStyle = "";
144
            messageBack.addError(request,"errors.file.too.long",""+maxMegas);
145
 
146
        }
147
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
148
        {
149
            logger.error(e,e);
150
        }
151
        request.setAttribute("formUploadStyle",formUploadStyle);
152
    }
153
}