eu.prestoprime.p4gui.ingest.UploadMasterFileServlet.java Source code

Java tutorial

Introduction

Here is the source code for eu.prestoprime.p4gui.ingest.UploadMasterFileServlet.java

Source

/**
 * UploadMasterFileServlet.java
 * Author: Francesco Rosso (rosso@eurix.it)
 * 
 * This file is part of PrestoPRIME Preservation Platform (P4).
 * 
 * Copyright (C) 2009-2012 EURIX Srl, Torino, Italy
 *  
 * 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 3 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, see <http://www.gnu.org/licenses/>.
 */
package eu.prestoprime.p4gui.ingest;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;

import eu.prestoprime.p4gui.P4GUI;
import eu.prestoprime.p4gui.model.User;
import eu.prestoprime.p4gui.services.auth.RoleManager;
import eu.prestoprime.p4gui.services.auth.RoleManager.USER_ROLE;
import eu.prestoprime.p4gui.util.Tools;

@WebServlet("/ingest/masterfile")
@MultipartConfig()
public class UploadMasterFileServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private static final Logger logger = Logger.getLogger(UploadMasterFileServlet.class);

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        User user = Tools.getSessionAttribute(request.getSession(), P4GUI.USER_BEAN_NAME, User.class);
        RoleManager.checkRequestedRole(USER_ROLE.producer, user.getCurrentP4Service().getRole(), response);

        // prepare dynamic variables
        Part masterQualityPart = request.getPart("masterFile");
        String targetName = new SimpleDateFormat("yyyyMMdd-HHmm").format(new Date()) + ".mxf";

        // prepare static variables
        String host = "p4.eurixgroup.com";
        int port = 21;
        String username = "pprime";
        String password = "pprime09";

        FTPClient client = new FTPClient();
        try {
            client.connect(host, port);
            if (FTPReply.isPositiveCompletion(client.getReplyCode())) {
                if (client.login(username, password)) {
                    client.setFileType(FTP.BINARY_FILE_TYPE);
                    // TODO add behavior if file name is already present in
                    // remote ftp folder
                    // now OVERWRITES
                    if (client.storeFile(targetName, masterQualityPart.getInputStream())) {
                        logger.info("Stored file on remote FTP server " + host + ":" + port);

                        request.setAttribute("masterfileName", targetName);
                    } else {
                        logger.error("Unable to store file on remote FTP server");
                    }
                } else {
                    logger.error("Unable to login on remote FTP server");
                }
            } else {
                logger.error("Unable to connect to remote FTP server");
            }
        } catch (IOException e) {
            e.printStackTrace();
            logger.fatal("General exception with FTPClient");
        }

        Tools.servletInclude(this, request, response, "/body/ingest/masterfile/listfiles.jsp");
    }
}