Package org.dspace.app.webui.components

Source Code of org.dspace.app.webui.components.VersioningItemHome

/**
* 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.components;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

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

import org.apache.log4j.Logger;
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.ConfigurationManager;
import org.dspace.core.Context;
import org.dspace.handle.HandleManager;
import org.dspace.plugin.ItemHomeProcessor;
import org.dspace.plugin.PluginException;
import org.dspace.versioning.Version;
import org.dspace.versioning.VersionHistory;

public class VersioningItemHome implements ItemHomeProcessor {

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

  @Override
  public void process(Context context, HttpServletRequest request,
      HttpServletResponse response, Item item) throws PluginException,
      AuthorizeException {
    boolean versioningEnabled = ConfigurationManager.getBooleanProperty(
        "versioning", "enabled");
    boolean newVersionAvailable = false;
    boolean showVersionWorkflowAvailable = false;
    boolean hasVersionButton = false;
    boolean hasVersionHistory = false;
   
    VersionHistory history = null;
    List<Version> historyVersions = new ArrayList<Version>();
    String latestVersionHandle = null;
    String latestVersionURL = null;
    if (versioningEnabled) {
      try {
        if(item.canEdit()) {
          if (VersionUtil.isLatest(context, item) && item.isArchived()) {
            hasVersionButton = true;
          }
        }
      } catch (SQLException e) {
        throw new PluginException(e.getMessage());
      }

      if (VersionUtil.hasVersionHistory(context, item)) {
        hasVersionHistory = true;
        history = VersionUtil.retrieveVersionHistory(context, item);
        for(Version versRow : history.getVersions()) { 
         
                //Skip items currently in submission
                try {
            if(VersionUtil.isItemInSubmission(context, versRow.getItem()))
            {
                continue;
            }
            else {
              historyVersions.add(versRow);
            }
          } catch (SQLException e) {
            throw new PluginException(e.getMessage());
          }
        }
      }

      // Check if we have a history for the item
      Version latestVersion;
      try {
        latestVersion = VersionUtil.checkLatestVersion(context, item);
      } catch (SQLException e) {
        throw new PluginException(e.getMessage());
      }

      if (latestVersion != null) {
        if (latestVersion != null
            && latestVersion.getItemID() != item.getID()) {
          // We have a newer version
          Item latestVersionItem = latestVersion.getItem();
          if (latestVersionItem.isArchived()) {
            // Available, add a link for the user alerting him that
            // a new version is available
            newVersionAvailable = true;
            try {
              latestVersionURL = HandleManager.resolveToURL(
                  context, latestVersionItem.getHandle());
            } catch (SQLException e) {
              throw new PluginException(e.getMessage());
            }
            latestVersionHandle = latestVersionItem.getHandle();
          } else {
            // We might be dealing with a workflow/workspace item
            showVersionWorkflowAvailable = true;
          }
        }
      }
    }

    request.setAttribute("versioning.enabled", versioningEnabled);
    request.setAttribute("versioning.hasversionbutton", hasVersionButton);
    request.setAttribute("versioning.hasversionhistory", hasVersionHistory);
    request.setAttribute("versioning.history", history);
    request.setAttribute("versioning.historyversions", historyVersions);
    request.setAttribute("versioning.newversionavailable",
        newVersionAvailable);
    request.setAttribute("versioning.showversionwfavailable",
        showVersionWorkflowAvailable);
    request.setAttribute("versioning.latestversionhandle",
        latestVersionHandle);
    request.setAttribute("versioning.latestversionurl", latestVersionURL);

  }

}
TOP

Related Classes of org.dspace.app.webui.components.VersioningItemHome

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.