Subversion Repositories bacoAlunos

Rev

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