Package com.adito.networkplaces

Source Code of com.adito.networkplaces.NetworkPlaceUploadHandler

        /*
*  Adito
*
*  Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
*
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU General Public License
*  as published by the Free Software Foundation; either version 2 of
*  the License, or (at your option) any later version.
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public
*  License along with this program; if not, write to the Free Software
*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
     
package com.adito.networkplaces;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;
import org.apache.struts.upload.FormFile;

import com.adito.core.CoreServlet;
import com.adito.core.UploadHandler;
import com.adito.policyframework.LaunchSession;
import com.adito.policyframework.LaunchSessionFactory;
import com.adito.security.LogonControllerFactory;
import com.adito.security.SessionInfo;
import com.adito.vfs.UploadDetails;
import com.adito.vfs.VFSResource;
import com.adito.vfs.webdav.DAVServlet;


/**
* Upload handler that uploads to a <i>VFS</i> resource.
*/
public class NetworkPlaceUploadHandler implements UploadHandler {
 
  public static final String TYPE_VFS = "VFS";

    public ActionForward performUpload(HttpServletRequest request, HttpServletResponse response, UploadDetails upload,
                                       FormFile uploadFile) throws Exception {

        /*
         * If an upload was attempted after session timeout, the login screen
         * would have interrupted the upload. In this case just go straight back
         * to the home page.
         */
        if (upload.getResourcePath() == null || upload.getResourcePath().length() == 0) {
            return upload.getUploadedForward();
        }

        if (uploadFile == null || uploadFile.getFileName() == null || uploadFile.getFileName().trim().equals("")) {
            return upload.getUploadedForward();
        }

        LaunchSession launchSession = null;
        VFSResource res = null;
        try {
           
            // Get the launch session
            SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request);
            launchSession = session == null ? null : LaunchSessionFactory.getInstance().getLaunchSession(session, upload.getExtraAttribute2());
            if(launchSession == null) {
                throw new Exception("No launch session.");
            }
            launchSession.checkAccessRights(null, session);

            res = DAVServlet.getDAVResource(launchSession, request, response, upload.getResourcePath() + "/" + uploadFile.getFileName());
           
            res.getFile().exists();
            InputStream in = uploadFile.getInputStream();
            OutputStream out = res.getOutputStream();
            try {
                byte[] buf = new byte[4096];
                int read;
                while (true) {
                    read = in.read(buf, 0, buf.length);
                    if (read == -1) {
                        break;
                    }
                    out.write(buf, 0, read);
                }
            } finally {
                in.close();
                out.close();
            }
            if (res.getMount().getStore().getProvider().isFireEvents()) {
                CoreServlet.getServlet().fireCoreEvent(
                    NetworkPlaceResourceType.getResourceAccessUploadEvent(this, launchSession, request, res.getFullPath(), res.getFile().getName().getURI(), uploadFile
                                    .getFileName(), null));
            }
            return upload.getUploadedForward();
        } catch (Exception e) {
            if (res != null && res.getMount().getStore().getProvider().isFireEvents()) {
                CoreServlet.getServlet().fireCoreEvent(
                    NetworkPlaceResourceType.getResourceAccessUploadEvent(this, launchSession, request, res.getFullPath(), res.getFile().getName().getURI(), uploadFile
                                    .getFileName(), e));
            }
            /*
             * Close the stream so the client gets an error straight away rather
             * than having to wait for the file to upload
             */
            try {
                request.getInputStream().close();
            } catch (IOException ioe) {
                throw ioe;
            }
            throw e;
        }
    }

    public boolean checkFileToUpload(HttpServletRequest request, HttpServletResponse response, UploadDetails fileUpload, FormFile file) throws IOException, Exception {

        if (fileUpload.getResourcePath() == null || fileUpload.getResourcePath().length() == 0) {
            return false;
        }

        if (file==null || file.getFileName() == null || file.getFileName().trim().equals("")) {
            return false;
        }
       
        // Get the launch session
        SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request);
        LaunchSession launchSession = session == null ? null : LaunchSessionFactory.getInstance().getLaunchSession(session, fileUpload.getExtraAttribute2());
        if(launchSession == null) {
            throw new Exception("No launch session.");
        }

        VFSResource res = DAVServlet.getDAVResource(launchSession, request, response, fileUpload.getResourcePath() + "/" + file.getFileName());

        return res.getFile().exists();
    }
   
}
TOP

Related Classes of com.adito.networkplaces.NetworkPlaceUploadHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.