/* The contents of this file are subject to the license and copyright terms
* detailed in the license directory at the root of the source tree (also
* available online at http://fedora-commons.org/license/).
*/
package fedora.server.storage;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Date;
import org.xml.sax.InputSource;
import fedora.server.Context;
import fedora.server.errors.DatastreamNotFoundException;
import fedora.server.errors.GeneralException;
import fedora.server.errors.ObjectIntegrityException;
import fedora.server.errors.RepositoryConfigurationException;
import fedora.server.errors.ServerException;
import fedora.server.errors.StreamIOException;
import fedora.server.errors.UnsupportedTranslationException;
import fedora.server.storage.service.ServiceMapper;
import fedora.server.storage.translation.DOTranslator;
import fedora.server.storage.types.DigitalObject;
import fedora.server.storage.types.MethodDef;
/**
* A Service Definition Reader based on a DigitalObject.
*
* @author Chris Wilper
*/
public class SimpleServiceDefinitionReader
extends SimpleServiceAwareReader
implements ServiceDefinitionReader {
private final ServiceMapper serviceMapper;
public SimpleServiceDefinitionReader(Context context,
RepositoryReader repoReader,
DOTranslator translator,
String exportFormat,
String storageFormat,
String encoding,
InputStream serializedObject)
throws ObjectIntegrityException, StreamIOException,
UnsupportedTranslationException, ServerException {
super(context,
repoReader,
translator,
exportFormat,
storageFormat,
encoding,
serializedObject);
serviceMapper = new ServiceMapper(GetObjectPID());
}
/**
* Alternate constructor for when a DigitalObject is already available for
* some reason.
*/
public SimpleServiceDefinitionReader(Context context,
RepositoryReader repoReader,
DOTranslator translator,
String exportFormat,
String encoding,
DigitalObject obj) {
super(context, repoReader, translator, exportFormat, encoding, obj);
serviceMapper = new ServiceMapper(GetObjectPID());
}
public MethodDef[] getAbstractMethods(Date versDateTime)
throws DatastreamNotFoundException, ObjectIntegrityException,
RepositoryConfigurationException, GeneralException {
return serviceMapper
.getMethodDefs(new InputSource(new ByteArrayInputStream(getMethodMapDatastream(versDateTime).xmlContent)));
}
public InputStream getAbstractMethodsXML(Date versDateTime)
throws DatastreamNotFoundException, ObjectIntegrityException {
return new ByteArrayInputStream(getMethodMapDatastream(versDateTime).xmlContent);
}
}