/**
* 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 java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.dspace.app.sherpa.SHERPAJournal;
import org.dspace.app.sherpa.SHERPAPublisher;
import org.dspace.app.sherpa.SHERPAResponse;
import org.dspace.app.sherpa.submit.SHERPASubmitService;
import org.dspace.app.webui.util.JSPManager;
import org.dspace.app.webui.util.UIUtil;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.utils.DSpace;
/**
* This servlet use the SHERPASubmitService to build an html page with the
* publisher policy for the journal referred in the specified Item
*
* @author Andrea Bollini
*
*/
public class SHERPAPublisherPolicyServlet extends DSpaceServlet
{
private SHERPASubmitService sherpaSubmitService = new DSpace()
.getServiceManager().getServiceByName(
SHERPASubmitService.class.getCanonicalName(),
SHERPASubmitService.class);
/** log4j logger */
private static Logger log = Logger
.getLogger(SHERPAPublisherPolicyServlet.class);
protected void doDSGet(Context context, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException,
SQLException, AuthorizeException
{
int itemID = UIUtil.getIntParameter(request, "item_id");
Item item = Item.find(context, itemID);
if (item == null)
{
return;
}
SHERPAResponse shresp = sherpaSubmitService.searchRelatedJournals(
context, item);
if (shresp.isError())
{
request.setAttribute("error", new Boolean(true));
}
else
{
List<SHERPAJournal> journals = shresp.getJournals();
if (journals != null)
{
Object[][] results = new Object[journals.size()][];
if (journals.size() > 0)
{
Iterator<SHERPAJournal> ijourn = journals.iterator();
int idx = 0;
while (ijourn.hasNext())
{
SHERPAJournal journ = ijourn.next();
List<SHERPAPublisher> publishers = shresp
.getPublishers();
results[idx] = new Object[] {
journ,
publishers != null && publishers.size() > 0 ? publishers
.get(0) : null };
idx++;
}
}
request.setAttribute("result", results);
}
}
// Simply forward to the plain form
JSPManager.showJSP(request, response, "/sherpa/sherpa-policy.jsp");
}
protected void doDSPost(Context context, HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException,
SQLException, AuthorizeException
{
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
}
}