package org.dspace.app.xmlui.aspect.artifactbrowser; import java.util.Map; import org.apache.avalon.framework.parameters.ParameterException; import org.apache.avalon.framework.parameters.Parameters; import org.apache.cocoon.acting.AbstractAction; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Redirector; import org.apache.cocoon.environment.Request; import org.apache.cocoon.environment.SourceResolver; import org.dspace.app.xmlui.utils.ContextUtil; import org.dspace.app.xmlui.utils.UsageEvent; import org.dspace.content.DSpaceObject; import org.dspace.content.Item; import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.handle.HandleManager; /** * Cocoon action that records a jorum content package download. The download is * recorded by firing an event UsageEvent using the dspace item id and a * bitstream id of 0 */ public class RecordPackageDownload extends AbstractAction { /* * (non-Javadoc) * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters) */ @SuppressWarnings("unchecked") public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) throws Exception { Context context = ContextUtil.obtainContext(objectModel); DSpaceObject dso = null; String itemId = null; String handle = null; try { itemId = parameters.getParameter("item-id"); } catch(ParameterException ex){} if(itemId != null) { // item id has been given so find the dspace item dso = DSpaceObject.find( context, Constants.ITEM, Integer.parseInt(itemId)); } else { try { // handle has been given so find the dspace // item using the HandleManager handle = parameters.getParameter("handle"); dso = HandleManager.resolveToObject(context, handle); } catch(ParameterException ex){} } if(dso != null && dso instanceof Item) { // DSpace item has been found, fire event new UsageEvent().fire((Request) ObjectModelHelper.getRequest(objectModel), context, UsageEvent.VIEW, Constants.BUNDLE, ((Item)dso).getID()); } return null; } }