com.silverpeas.importExportPeas.servlets.ImportExportRequestRouter.java Source code

Java tutorial

Introduction

Here is the source code for com.silverpeas.importExportPeas.servlets.ImportExportRequestRouter.java

Source

/**
 * Copyright (C) 2000 - 2013 Silverpeas
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * As a special exception to the terms and conditions of version 3.0 of
 * the GPL, you may redistribute this Program in connection with Free/Libre
 * Open Source Software ("FLOSS") applications as described in Silverpeas's
 * FLOSS exception.  You should have received a copy of the text describing
 * the FLOSS exception, and it is also available here:
 * "http://www.silverpeas.org/docs/core/legal/floss_exception.html"
 *
 * 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 Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.silverpeas.importExportPeas.servlets;

import com.silverpeas.importExport.report.ExportPDFReport;
import com.silverpeas.importExport.report.ExportReport;
import com.silverpeas.importExport.report.ImportReport;
import com.silverpeas.importExportPeas.control.ImportExportSessionController;
import org.silverpeas.servlet.FileUploadUtil;
import com.stratelia.silverpeas.peasCore.ComponentContext;
import com.stratelia.silverpeas.peasCore.MainSessionController;
import com.stratelia.silverpeas.peasCore.servlets.ComponentRequestRouter;
import com.stratelia.silverpeas.util.ResourcesWrapper;
import com.stratelia.webactiv.util.FileRepositoryManager;
import com.stratelia.webactiv.util.WAAttributeValuePair;
import com.stratelia.webactiv.util.node.model.NodePK;

import org.apache.commons.fileupload.FileItem;
import org.silverpeas.servlet.HttpRequest;

import java.io.File;
import java.util.List;

public class ImportExportRequestRouter extends ComponentRequestRouter<ImportExportSessionController> {

    private static final long serialVersionUID = 1L;

    @Override
    public ImportExportSessionController createComponentSessionController(MainSessionController mainSessionCtrl,
            ComponentContext componentContext) {
        return new ImportExportSessionController(mainSessionCtrl, componentContext,
                "org.silverpeas.importExportPeas.multilang.importExportPeasBundle",
                "org.silverpeas.importExportPeas.settings.importExportPeasIcons");
    }

    /**
     * This method has to be implemented in the component request rooter class. returns the session
     * control bean name to be put in the request object ex : for notificationUser, returns
     * "notificationUser"
     */
    @Override
    public String getSessionControlBeanName() {
        return "importExportPeas";
    }

    /**
     * This method has to be implemented by the component request rooter it has to compute a
     * destination page
     *
     * @param function The entering request function (ex : "Main.jsp")
     * @param importExportSC The component Session Control, build and initialised.
     * @param request The entering request. The request rooter need it to get parameters
     * @return The complete destination URL for a forward (ex :
     * "/notificationUser/jsp/notificationUser.jsp?flag=user")
     */
    @Override
    public String getDestination(String function, ImportExportSessionController importExportSC,
            HttpRequest request) {
        String destination = "";
        try {
            if (function.startsWith("Main")) {
                destination = "/importExportPeas/jsp/welcome.jsp";
            } else if ("Import".equals(function)) {
                File file = null;
                List<FileItem> items = request.getFileItems();
                for (FileItem item : items) {
                    if (!item.isFormField()) {
                        String fileName = FileUploadUtil.getFileName(item);
                        file = new File(FileRepositoryManager.getTemporaryPath(null, null) + fileName);
                        FileUploadUtil.saveToFile(file, item);
                    }
                }
                ImportReport importReport = importExportSC.processImport(file.getAbsolutePath(),
                        (ResourcesWrapper) request.getAttribute("resources"));
                request.setAttribute("importReport", importReport);
                destination = "/importExportPeas/jsp/viewSPExchange.jsp";
            } else if ("SelectExportMode".equals(function)) {
                List<WAAttributeValuePair> itemPKs = (List<WAAttributeValuePair>) request
                        .getAttribute("selectedResultsWa");
                NodePK rootPK = (NodePK) request.getAttribute("RootPK");
                importExportSC.saveItems(itemPKs, rootPK);
                destination = "/importExportPeas/jsp/selectExportMode.jsp";
            } else if ("ExportSavedItems".equals(function)) {
                String mode = request.getParameter("ExportMode");
                importExportSC.processExportOfSavedItems(mode);
                destination = "/importExportPeas/jsp/pingExport.jsp";
            } else if ("ExportItems".equals(function)) {
                @SuppressWarnings("unchecked")
                List<WAAttributeValuePair> itemPKs = (List<WAAttributeValuePair>) request
                        .getAttribute("selectedResultsWa");
                NodePK rootPK = (NodePK) request.getAttribute("RootPK");
                if (itemPKs != null && !itemPKs.isEmpty()) {
                    importExportSC.processExport(itemPKs, rootPK);
                    destination = "/importExportPeas/jsp/pingExport.jsp";
                } else {
                    destination = "/importExportPeas/jsp/nothingToExport.jsp";
                }
            } else if ("ExportItemsPing".equals(function)) {
                if (importExportSC.isExportInProgress()) {
                    destination = "/importExportPeas/jsp/pingExport.jsp";
                } else {
                    ExportReport report = importExportSC.getExportReport();
                    request.setAttribute("ExportReport", report);
                    destination = "/importExportPeas/jsp/downloadZip.jsp";
                }
            } else if ("ExportPDF".equals(function)) {
                List<WAAttributeValuePair> itemPKs = (List<WAAttributeValuePair>) request
                        .getAttribute("selectedResultsWa");
                String rootId = (String) request.getAttribute("RootId");

                if (itemPKs != null && !itemPKs.isEmpty()) {
                    ExportPDFReport report = importExportSC.processExportPDF(itemPKs);

                    if (report != null) {
                        request.setAttribute("ExportPDFReport", report);
                        destination = "/importExportPeas/jsp/downloadPdf.jsp";
                    } else {
                        destination = "/importExportPeas/jsp/nothingToExport.jsp";
                    }

                } else {
                    destination = "/importExportPeas/jsp/nothingToExport.jsp";
                }
            } else if (function.equals("KmaxExportComponent")) {
                @SuppressWarnings("unchecked")
                List<WAAttributeValuePair> itemPKs = (List<WAAttributeValuePair>) request
                        .getAttribute("selectedResultsWa");
                if (itemPKs != null && !itemPKs.isEmpty()) {
                    ExportReport report = importExportSC.processExportKmax(importExportSC.getLanguage(), itemPKs,
                            null, null);
                    request.setAttribute("ExportReport", report);
                    destination = "/importExportPeas/jsp/downloadZip.jsp";
                } else {
                    destination = "/importExportPeas/jsp/nothingToExport.jsp";
                }
            } else if (function.equals("KmaxExportPublications")) {
                @SuppressWarnings("unchecked")
                List<WAAttributeValuePair> itemPKs = (List<WAAttributeValuePair>) request
                        .getAttribute("selectedResultsWa");
                List combination = (List) request.getAttribute("Combination");
                String timeCriteria = (String) request.getAttribute("TimeCriteria");

                if (itemPKs != null && !itemPKs.isEmpty()) {
                    ExportReport report = importExportSC.processExportKmax(importExportSC.getLanguage(), itemPKs,
                            combination, timeCriteria);
                    request.setAttribute("ExportReport", report);
                    destination = "/importExportPeas/jsp/downloadZip.jsp";
                } else {
                    destination = "/importExportPeas/jsp/nothingToExport.jsp";
                }
            } else {
                destination = "/importExportPeas/jsp/" + function;
            }
        } catch (Exception e) {
            request.setAttribute("javax.servlet.jsp.jspException", e);
            return "/admin/jsp/errorpageMain.jsp";
        }

        return destination;
    }
}