com.globalsight.everest.webapp.pagehandler.tm.management.RemoveTmHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.globalsight.everest.webapp.pagehandler.tm.management.RemoveTmHandler.java

Source

/**
 *  Copyright 2009 Welocalize, Inc. 
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  
 *  You may obtain a copy of the License at 
 *  http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  
 */

package com.globalsight.everest.webapp.pagehandler.tm.management;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ResourceBundle;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;

import com.globalsight.everest.projecthandler.ProjectHandler;
import com.globalsight.everest.servlet.EnvoyServletException;
import com.globalsight.everest.servlet.util.ServerProxy;
import com.globalsight.everest.servlet.util.SessionManager;
import com.globalsight.everest.tm.TmRemover;
import com.globalsight.everest.webapp.WebAppConstants;
import com.globalsight.everest.webapp.pagehandler.PageHandler;
import com.globalsight.everest.webapp.webnavigation.WebPageDescriptor;
import com.globalsight.util.StringUtil;

/**
 * <p>
 * This PageHandler is responsible for removing TMs.
 * </p>
 */

public class RemoveTmHandler extends PageHandler implements WebAppConstants {
    private static final Logger logger = Logger.getLogger(RemoveTmHandler.class);

    private static ProjectHandler projectHandler = null;
    String m_userId;

    public RemoveTmHandler() {
        super();

        if (projectHandler == null) {
            try {
                projectHandler = ServerProxy.getProjectHandler();
            } catch (Exception ex) {
                logger.error("Initialization failed.", ex);
            }
        }
    }

    /**
     * Invoke this PageHandler.
     * 
     * @param p_pageDescriptor
     *            the page desciptor
     * @param p_request
     *            the original request sent from the browser
     * @param p_response
     *            the original response object
     * @param p_context
     *            context the Servlet context
     */
    public void invokePageHandler(WebPageDescriptor p_pageDescriptor, HttpServletRequest p_request,
            HttpServletResponse p_response, ServletContext p_context)
            throws ServletException, IOException, EnvoyServletException {
        HttpSession session = p_request.getSession();
        SessionManager sessionMgr = (SessionManager) session.getAttribute(SESSION_MANAGER);
        m_userId = (String) session.getAttribute(WebAppConstants.USER_NAME);
        String action = (String) p_request.getParameter(TM_ACTION);
        ResourceBundle bundle = PageHandler.getBundle(session);
        String errorMsg = null;
        StringBuilder errors = new StringBuilder();

        try {
            if (TM_ACTION_DELETE.equals(action) || TM_ACTION_DELETE_LANGUAGE.equals(action)
                    || TM_ACTION_DELETE_TULISTING.equals(action)) {
                DiskFileItemFactory factory = new DiskFileItemFactory();
                factory.setSizeThreshold(1024000);
                ServletFileUpload upload = new ServletFileUpload(factory);

                List<FileItem> fileItems = upload.parseRequest(p_request);

                String tmIdArray = (String) p_request.getParameter(TM_TM_ID);
                String language = null;
                File tmxFile = null;
                for (FileItem item : fileItems) {
                    if (TM_TM_ID.equals(item.getFieldName())) {
                        tmIdArray = item.getString();
                    } else if ("tmxFile".equals(item.getFieldName())) {
                        tmxFile = File.createTempFile("GSTUListing", null);
                        String fileName = item.getName();
                        item.write(tmxFile);
                    } else if ("LanguageList".equals(item.getFieldName())) {
                        language = item.getString();
                    }
                }

                String[] tmIds = tmIdArray.split(",");
                if (!TM_ACTION_DELETE_LANGUAGE.equals(action)) {
                    language = null;
                }

                long tmId = -1l;
                errorMsg = removeTM(sessionMgr, tmIds, bundle, language, tmxFile);
            } else if (TM_ACTION_CANCEL.equals(action)) {
                TmRemover tmRemover = (TmRemover) sessionMgr.getAttribute(TM_REMOVER);
                tmRemover.cancelProcess();
            }
        } catch (Throwable ex) {
            logger.error("Tm removal error", ex);
            sessionMgr.setAttribute(TM_ERROR, ex.getMessage());
        }

        sessionMgr.setAttribute(TM_ERROR, errorMsg);

        super.invokePageHandler(p_pageDescriptor, p_request, p_response, p_context);
    }

    private String removeTM(SessionManager sessionManager, String[] tmIds, ResourceBundle bundle,
            String languageList, File tmxFile) {
        logger.info("Removing TM (tm id = " + Arrays.toString(tmIds) + ")");

        ArrayList<String> tmIdsArray = new ArrayList<String>();
        if (tmIds != null) {
            for (String tmp : tmIds)
                tmIdsArray.add(tmp);
        }

        String errorMsg = null;
        try {
            // Start remove TM in a separate thread.
            TmRemover tmRemover = new TmRemover(tmIdsArray, m_userId);

            if (tmxFile != null && tmxFile.exists()) {
                tmRemover.setTmxFile(tmxFile);
                tmRemover.SetDeleteTUListingFlag(true);
                tmRemover.SetDeleteLanguageFlag(false);
            } else if (!StringUtil.isEmpty(languageList)) {
                tmRemover.setLocaleId(Long.parseLong(languageList));
                tmRemover.SetDeleteTUListingFlag(false);
                tmRemover.SetDeleteLanguageFlag(true);
            } else {
                tmRemover.SetDeleteTUListingFlag(false);
                tmRemover.SetDeleteLanguageFlag(false);
            }
            tmRemover.setResourceBundle(bundle);
            tmRemover.initReplacingMessage();
            sessionManager.setAttribute(TM_REMOVER, tmRemover);

            tmRemover.start();
        } catch (Exception e) {
            logger.error("Tm removal error", e);
            errorMsg = e.getMessage();
        }

        return errorMsg;
    }
}