Package org.dspace.app.webui.servlet

Source Code of org.dspace.app.webui.servlet.VersionHistoryServlet

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.webui.servlet;

import java.io.IOException;
import java.sql.SQLException;

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

import org.apache.log4j.Logger;
import org.dspace.app.webui.util.JSPManager;
import org.dspace.app.webui.util.UIUtil;
import org.dspace.app.webui.util.VersionUtil;
import org.dspace.authorize.AuthorizeException;
import org.dspace.authorize.AuthorizeManager;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.utils.DSpace;
import org.dspace.versioning.Version;
import org.dspace.versioning.VersionHistory;

/**
* Servlet for handling the operations in the version history page
*
* @author Pascarelli Luigi Andrea
* @version $Revision$
*/
public class VersionHistoryServlet extends DSpaceServlet
{

    /** log4j category */
    private static Logger log = Logger.getLogger(VersionHistoryServlet.class);

    protected void doDSGet(Context context, HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException,
            SQLException, AuthorizeException
    {
        Integer itemID = UIUtil.getIntParameter(request, "itemID");
        String versionID = request.getParameter("versionID");

        Item item = Item.find(context, itemID);

        if (item == null) {
          throw new IllegalArgumentException("Item is null");
        }
       
        if(!AuthorizeManager.isAdmin(context,
                        item.getOwningCollection()))
        {
            // Check if only administrators can view the item history
            if (new DSpace().getConfigurationService().getPropertyAsType(
                    "versioning.item.history.view.admin", true))
            {
                throw new AuthorizeException();
            }

        }

        // manage if versionID is not came by request
        VersionHistory history = VersionUtil.retrieveVersionHistory(context,
                item);
        if (versionID == null || versionID.isEmpty())
        {
            Version version = history.getVersion(item);
            if (version != null)
            {
                versionID = String.valueOf(version.getVersionId());
            }
        }
        String submit = UIUtil.getSubmitButton(request, "submit");
        if (submit != null && submit.equals("submit_cancel"))
        {
            // Pressed the cancel button, redirect us to the item page
            response.sendRedirect(request.getContextPath() + "/handle/"
                    + item.getHandle());
            context.complete();
            return;
        }
        else if (submit != null && submit.equals("submit_delete"))
        {
            String[] versionIDs = request.getParameterValues("remove");
            Integer result = doDeleteVersions(request, itemID, versionIDs);
            if (result != null)
            {
                response.sendRedirect(request.getContextPath()
                        + "/tools/history?delete=true&itemID="+history.getLatestVersion().getItemID());
            }
            else
            {
                // We have removed everything, redirect us to the home page !
                response.sendRedirect(request.getContextPath());
            }
            context.complete();
            return;

        }
        else if (submit != null && submit.equals("submit_restore"))
        {

            doRestoreVersion(request, itemID, versionID);
        }
        else if (submit != null && submit.equals("submit_update"))
        {
            doUpdateVersion(request, itemID, versionID);
            response.sendRedirect(request.getContextPath()
                    + "/tools/history?itemID=" + itemID + "&versionID="
                    + versionID);
            context.complete();
            return;
        }

        request.setAttribute("item", item);
        request.setAttribute("itemID", itemID);
        request.setAttribute("versionID", versionID);
        JSPManager.showJSP(request, response, "/tools/version-history.jsp");
    }

    protected void doDSPost(Context context, HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException,
            SQLException, AuthorizeException
    {
        // If this is not overridden, we invoke the raw HttpServlet "doGet" to
        // indicate that POST is not supported by this servlet.
        doDSGet(UIUtil.obtainContext(request), request, response);
    }

    /**
     * Delete the given version(s)
     *
     * @throws IOException
     * @throws AuthorizeException
     * @throws SQLException
     */
    private Integer doDeleteVersions(HttpServletRequest request,
            Integer itemID, String... versionIDs) throws SQLException,
            AuthorizeException, IOException
    {

        return VersionUtil.processDeleteVersions(UIUtil.obtainContext(request),
                itemID, versionIDs);

    }

    /**
     * Restore the given version
     *
     * @throws IOException
     * @throws AuthorizeException
     * @throws SQLException
     * @throws NumberFormatException
     */
    private Integer doRestoreVersion(HttpServletRequest request,
            Integer itemID, String versionID) throws NumberFormatException,
            SQLException, AuthorizeException, IOException
    {

        String summary = request.getParameter("summary");
        VersionUtil.processRestoreVersion(UIUtil.obtainContext(request),
                Integer.parseInt(versionID), summary);
        return itemID;
    }

    /**
     * Update the summary of the given version
     *
     * @throws IOException
     * @throws AuthorizeException
     * @throws SQLException
     */
    private Integer doUpdateVersion(HttpServletRequest request, Integer itemID,
            String versionID) throws SQLException, AuthorizeException,
            IOException
    {

        String summary = request.getParameter("summary");
        VersionUtil.processUpdateVersion(UIUtil.obtainContext(request), itemID,
                summary);
        return itemID;

    }

}
TOP

Related Classes of org.dspace.app.webui.servlet.VersionHistoryServlet

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.