mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-13 21:13:19 +00:00
127 lines
3.5 KiB
Java
127 lines
3.5 KiB
Java
/**
|
|
* 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.checker;
|
|
|
|
import java.sql.SQLException;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Iterator;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.dspace.content.Bitstream;
|
|
import org.dspace.content.DSpaceObject;
|
|
import org.dspace.content.factory.ContentServiceFactory;
|
|
import org.dspace.content.service.BitstreamService;
|
|
import org.dspace.core.Constants;
|
|
import org.dspace.core.Context;
|
|
import org.dspace.handle.factory.HandleServiceFactory;
|
|
import org.dspace.handle.service.HandleService;
|
|
|
|
/**
|
|
* A BitstreamDispatcher that checks all the bitstreams contained within an
|
|
* item, collection or community referred to by Handle.
|
|
*
|
|
* @author Jim Downing
|
|
* @author Grace Carpenter
|
|
* @author Nathan Sarr
|
|
*
|
|
*/
|
|
public class HandleDispatcher implements BitstreamDispatcher
|
|
{
|
|
|
|
/** Log 4j logger. */
|
|
private static final Logger LOG = Logger.getLogger(HandleDispatcher.class);
|
|
|
|
protected Context context;
|
|
|
|
/** Handle to retrieve bitstreams from. */
|
|
protected String handle = null;
|
|
|
|
/** Has the type of object the handle refers to been determined. */
|
|
protected boolean init = false;
|
|
|
|
/** the delegate to dispatch to. */
|
|
protected IteratorDispatcher delegate = null;
|
|
|
|
protected BitstreamService bitstreamService = ContentServiceFactory.getInstance().getBitstreamService();
|
|
protected HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
|
|
|
|
/**
|
|
* Blanked off, no-op constructor.
|
|
*/
|
|
private HandleDispatcher()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Main constructor.
|
|
*
|
|
* @param context Context
|
|
* @param hdl
|
|
* the handle to get bitstreams from.
|
|
*/
|
|
public HandleDispatcher(Context context, String hdl)
|
|
{
|
|
this.context = context;
|
|
handle = hdl;
|
|
}
|
|
|
|
/**
|
|
* Private initialization routine.
|
|
*
|
|
* @throws SQLException if database error
|
|
* if database access fails.
|
|
*/
|
|
protected synchronized void init() throws SQLException {
|
|
if (!init)
|
|
{
|
|
DSpaceObject dso = handleService.resolveToObject(context, handle);
|
|
|
|
Iterator<Bitstream> ids = new ArrayList<Bitstream>().iterator();
|
|
|
|
switch (dso.getType())
|
|
{
|
|
case Constants.BITSTREAM:
|
|
ids = Arrays.asList(((Bitstream) dso)).iterator();
|
|
break;
|
|
|
|
case Constants.ITEM:
|
|
ids = bitstreamService.getItemBitstreams(context, (org.dspace.content.Item) dso);
|
|
break;
|
|
|
|
case Constants.COLLECTION:
|
|
ids = bitstreamService.getCollectionBitstreams(context, (org.dspace.content.Collection) dso);
|
|
break;
|
|
|
|
case Constants.COMMUNITY:
|
|
ids = bitstreamService.getCommunityBitstreams(context, (org.dspace.content.Community) dso);
|
|
break;
|
|
}
|
|
|
|
delegate = new IteratorDispatcher(ids);
|
|
init = true;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Initializes this dispatcher on first execution.
|
|
*
|
|
* @throws SQLException if database error
|
|
* @see org.dspace.checker.BitstreamDispatcher#next()
|
|
*/
|
|
@Override
|
|
public Bitstream next() throws SQLException {
|
|
if (!init)
|
|
{
|
|
init();
|
|
}
|
|
|
|
return delegate.next();
|
|
}
|
|
}
|