/* 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.utilities;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.HashSet;
import org.apache.log4j.Logger;
import fedora.server.storage.types.MethodDef;
import fedora.server.storage.types.MethodParmDef;
import fedora.server.types.gen.Condition;
/**
* A utility class for converting back and forth from the internal Fedora type
* classes in fedora.server.storage.types and the generated type classes
* produced by the wsdl2java emitter in fedora.server.types.gen.
*
* @author Ross Wayland
*/
public abstract class TypeUtility {
/** Logger for this class. */
private static final Logger LOG =
Logger.getLogger(TypeUtility.class.getName());
public static fedora.server.types.gen.Datastream convertDatastreamToGenDatastream(fedora.server.storage.types.Datastream in) {
fedora.server.types.gen.Datastream out =
new fedora.server.types.gen.Datastream();
String group = in.DSControlGrp;
out.setControlGroup(fedora.server.types.gen.DatastreamControlGroup
.fromValue(group));
if (group.equals("R") || group.equals("E")) {
// only given location if it's a redirect or external datastream
out.setLocation(in.DSLocation);
}
out.setCreateDate(DateUtility.convertDateToString(in.DSCreateDT));
out.setID(in.DatastreamID);
out.setAltIDs(in.DatastreamAltIDs);
out.setLabel(in.DSLabel);
out.setVersionable(in.DSVersionable);
out.setMIMEType(in.DSMIME);
out.setFormatURI(in.DSFormatURI);
out.setSize(in.DSSize);
out.setState(in.DSState);
out.setVersionID(in.DSVersionID);
out.setChecksum(in.DSChecksum);
out.setChecksumType(in.DSChecksumType);
return out;
}
public static fedora.server.types.gen.FieldSearchResult convertFieldSearchResultToGenFieldSearchResult(fedora.server.search.FieldSearchResult result) {
fedora.server.types.gen.FieldSearchResult ret =
new fedora.server.types.gen.FieldSearchResult();
ret
.setResultList(convertSearchObjectFieldsListToGenObjectFieldsArray(result
.objectFieldsList()));
if (result.getToken() != null) {
fedora.server.types.gen.ListSession sess =
new fedora.server.types.gen.ListSession();
sess.setToken(result.getToken());
if (result.getCursor() > -1) {
sess.setCursor(new org.apache.axis.types.NonNegativeInteger(""
+ result.getCursor()));
}
if (result.getCompleteListSize() > -1) {
sess
.setCompleteListSize(new org.apache.axis.types.NonNegativeInteger(""
+ result.getCompleteListSize()));
}
if (result.getExpirationDate() != null) {
sess.setExpirationDate(DateUtility.convertDateToString(result
.getExpirationDate()));
}
ret.setListSession(sess);
}
return ret;
}
public static fedora.server.search.FieldSearchQuery convertGenFieldSearchQueryToFieldSearchQuery(fedora.server.types.gen.FieldSearchQuery gen)
throws fedora.server.errors.InvalidOperatorException,
fedora.server.errors.QueryParseException {
if (gen.getTerms() != null) {
return new fedora.server.search.FieldSearchQuery(gen.getTerms());
} else {
return new fedora.server.search.FieldSearchQuery(convertGenConditionArrayToSearchConditionList(gen
.getConditions()));
}
}
public static java.util.List convertGenConditionArrayToSearchConditionList(fedora.server.types.gen.Condition[] genConditions)
throws fedora.server.errors.InvalidOperatorException,
fedora.server.errors.QueryParseException {
java.util.ArrayList list = new java.util.ArrayList();
if (genConditions != null) {
for (Condition c : genConditions) {
list.add(new fedora.server.search.Condition(c.getProperty(), c
.getOperator().toString(), c.getValue()));
}
}
return list;
}
public static fedora.server.types.gen.ObjectFields[] convertSearchObjectFieldsListToGenObjectFieldsArray(java.util.List sfList) {
fedora.server.types.gen.ObjectFields[] genFields =
new fedora.server.types.gen.ObjectFields[sfList.size()];
for (int i = 0; i < sfList.size(); i++) {
fedora.server.types.gen.ObjectFields gf =
new fedora.server.types.gen.ObjectFields();
fedora.server.search.ObjectFields sf =
(fedora.server.search.ObjectFields) sfList.get(i);
// Repository key fields
if (sf.getPid() != null) {
gf.setPid(sf.getPid());
}
if (sf.getLabel() != null) {
gf.setLabel(sf.getLabel());
}
if (sf.getState() != null) {
gf.setState(sf.getState());
}
if (sf.getOwnerId() != null) {
gf.setOwnerId(sf.getOwnerId());
}
if (sf.getCDate() != null) {
gf.setCDate(DateUtility.convertDateToString(sf.getCDate()));
}
if (sf.getMDate() != null) {
gf.setMDate(DateUtility.convertDateToString(sf.getMDate()));
}
if (sf.getDCMDate() != null) {
gf.setDcmDate(DateUtility.convertDateToString(sf.getDCMDate()));
}
// Dublin core fields
if (sf.titles().size() != 0) {
gf.setTitle(toStringArray(sf.titles()));
}
if (sf.creators().size() != 0) {
gf.setCreator(toStringArray(sf.creators()));
}
if (sf.subjects().size() != 0) {
gf.setSubject(toStringArray(sf.subjects()));
}
if (sf.descriptions().size() != 0) {
gf.setDescription(toStringArray(sf.descriptions()));
}
if (sf.publishers().size() != 0) {
gf.setPublisher(toStringArray(sf.publishers()));
}
if (sf.contributors().size() != 0) {
gf.setContributor(toStringArray(sf.contributors()));
}
if (sf.dates().size() != 0) {
gf.setDate(toStringArray(sf.dates()));
}
if (sf.types().size() != 0) {
gf.setType(toStringArray(sf.types()));
}
if (sf.formats().size() != 0) {
gf.setFormat(toStringArray(sf.formats()));
}
if (sf.identifiers().size() != 0) {
gf.setIdentifier(toStringArray(sf.identifiers()));
}
if (sf.sources().size() != 0) {
gf.setSource(toStringArray(sf.sources()));
}
if (sf.languages().size() != 0) {
gf.setLanguage(toStringArray(sf.languages()));
}
if (sf.relations().size() != 0) {
gf.setRelation(toStringArray(sf.relations()));
}
if (sf.coverages().size() != 0) {
gf.setCoverage(toStringArray(sf.coverages()));
}
if (sf.rights().size() != 0) {
gf.setRights(toStringArray(sf.rights()));
}
genFields[i] = gf;
}
return genFields;
}
public static String[] toStringArray(java.util.List<DCField> l) {
String[] ret = new String[l.size()];
for (int i = 0; i < l.size(); i++) {
ret[i] = l.get(i).getValue();
}
return ret;
}
/**
* <p>
* Converts an array of fedora.server.storage.types.MethodDef into an array
* of fedora.server.types.gen.MethodDef.
* </p>
*
* @param methodDefs
* An array of fedora.server.storage.types.MethodDef.
* @return An array of fedora.server.types.gen.MethodDef.
*/
/*
* public static fedora.server.types.gen.MethodDef[]
* convertMethodDefArrayToGenMethodDefArray(
* fedora.server.storage.types.MethodDef[] methodDefs) { if (methodDefs !=
* null) { fedora.server.types.gen.MethodDef[] genMethodDefs = new
* fedora.server.types.gen.MethodDef[methodDefs.length]; for (int i=0; i<genMethodDefs.length;
* i++) { fedora.server.types.gen.MethodDef genMethodDef = new
* fedora.server.types.gen.MethodDef();
* genMethodDef.setMethodLabel(methodDefs[i].methodLabel);
* genMethodDef.setMethodName(methodDefs[i].methodName);
* fedora.server.storage.types.MethodParmDef[] methodParmDefs =
* methodDefs[i].methodParms; fedora.server.types.gen.MethodParmDef[]
* genMethodParmDefs = new fedora.server.types.gen.MethodParmDef[0]; if
* (methodParmDefs != null) { genMethodParmDefs = new
* fedora.server.types.gen.MethodParmDef[methodParmDefs.length]; for (int
* j=0; j<methodParmDefs.length; j++) { genMethodParmDefs[j] =
* convertMethodParmDefToGenMethodParmDef(methodParmDefs[j]); } }
* genMethodDef.setMethodParms(genMethodParmDefs); genMethodDefs[i] =
* genMethodDef; } return genMethodDefs; } else { return null; } }
*/
/**
* <p>
* Converts an instance of fedora.server.storage.types.MethodDef into an
* instance of fedora.server.types.gen.MethodDef.
* </p>
*
* @param methodDef
* An instance of fedora.server.storage.types.MethodDef.
* @return An instance of fedora.server.types.gen.MethodDef.
*/
/*
* public static fedora.server.types.gen.MethodDef
* convertMethodDefToGenMethodDef( fedora.server.storage.types.MethodDef
* methodDef) { if (methodDef != null ) { fedora.server.types.gen.MethodDef
* genMethodDefs = new fedora.server.types.gen.MethodDef();
* fedora.server.types.gen.MethodDef genMethodDef = new
* fedora.server.types.gen.MethodDef();
* genMethodDef.setMethodLabel(methodDef.methodLabel);
* genMethodDef.setMethodName(methodDef.methodName);
* fedora.server.storage.types.MethodParmDef[] methodParmDefs =
* methodDef.methodParms; fedora.server.types.gen.MethodParmDef[]
* genMethodParmDefs = new fedora.server.types.gen.MethodParmDef[0];
* genMethodParmDefs = convertMethodParmDefArrayToGenMethodParmDefArray(
* methodParmDefs); if (methodParmDefs != null) { genMethodParmDefs = new
* fedora.server.types.gen.MethodParmDef[methodParmDefs.length]; for (int
* j=0; j<methodParmDefs.length; j++) { genMethodParmDefs[j] =
* convertMethodParmDefToGenMethodParmDef(methodParmDefs[j]); } }
* genMethodDef.setMethodParms(genMethodParmDefs); return genMethodDefs; }
* else { return null; } }
*/
/**
* <p>
* Converts an array of fedora.server.types.gen.MethodDef into an array of
* fedora.server.storage.types.MethodDef.
* </p>
*
* @param genMethodDefs
* An array of fedora.server.types.gen.MethodDef.
* @return An array of fedora.server.storage.types.MethodDef.
*/
/*
* public static fedora.server.storage.types.MethodDef[]
* convertGenMethodDefArrayToMethodDefArray(
* fedora.server.types.gen.MethodDef[] genMethodDefs) { if (genMethodDefs !=
* null) { fedora.server.storage.types.MethodDef[] methodDefs = new
* fedora.server.storage.types.MethodDef[genMethodDefs.length]; for (int
* i=0; i<genMethodDefs.length; i++) {
* fedora.server.storage.types.MethodDef methodDef = new
* fedora.server.storage.types.MethodDef(); methodDef.methodLabel =
* genMethodDefs[i].getMethodLabel(); methodDef.methodName =
* genMethodDefs[i].getMethodName(); fedora.server.types.gen.MethodParmDef[]
* genMethodParmDefs = genMethodDefs[i].getMethodParms();
* fedora.server.storage.types.MethodParmDef[] methodParmDefs = new
* fedora.server.storage.types.MethodParmDef[0]; if (genMethodParmDefs !=
* null) { methodParmDefs = new fedora.server.storage.types.MethodParmDef[
* genMethodParmDefs.length]; for (int j=0; j<genMethodParmDefs.length;
* j++) { methodParmDefs[j] = convertGenMethodParmDefToMethodParmDef(
* genMethodParmDefs[j]); } } methodDef.methodParms = methodParmDefs;
* methodDefs[i] = methodDef; } return methodDefs; } else { return null; } }
*/
/**
* <p>
* Converts an instance of fedora.server.types.gen.MethodDef into an
* instance of fedora.server.storage.types.MethodDef.
* </p>
*
* @param genMethodDef
* An instance of fedora.server.types.gen.MethodDef.
* @return An instance of fedora.server.storage.types.MethodDef.
*/
/*
* public static fedora.server.storage.types.MethodDef
* convertGenMethodDefToMethodDef( fedora.server.types.gen.MethodDef
* genMethodDef) { if (genMethodDef != null) {
* fedora.server.storage.types.MethodDef methodDef = new
* fedora.server.storage.types.MethodDef(); methodDef.methodLabel =
* genMethodDef.getMethodLabel(); methodDef.methodName =
* genMethodDef.getMethodName(); fedora.server.types.gen.MethodParmDef[]
* genMethodParmDefs = genMethodDef.getMethodParms();
* fedora.server.storage.types.MethodParmDef[] methodParmDefs = new
* fedora.server.storage.types.MethodParmDef[0]; if (genMethodParmDefs !=
* null) { methodParmDefs =
* convertGenMethodParmDefArrayToMethodParmDefArray( genMethodParmDefs); }
* methodDef.methodParms = methodParmDefs; return methodDef; } else { return
* null; } }
*/
/**
* <p>
* Converts an array of fedora.server.storage.types.MethodParmDef into an
* array of fedora.server.types.gen.MethodParmDef.
* </p>
*
* @param methodParmDefs
* An array of fedora.server.storage.types.MethodParmDef.
* @return An array of fedora.server.types.gen.MethodParmDef.
*/
public static fedora.server.types.gen.MethodParmDef[] convertMethodParmDefArrayToGenMethodParmDefArray(fedora.server.storage.types.MethodParmDef[] methodParmDefs) {
if (methodParmDefs != null) {
fedora.server.types.gen.MethodParmDef[] genMethodParmDefs =
new fedora.server.types.gen.MethodParmDef[methodParmDefs.length];
for (int i = 0; i < genMethodParmDefs.length; i++) {
fedora.server.types.gen.MethodParmDef genMethodParmDef =
new fedora.server.types.gen.MethodParmDef();
genMethodParmDef =
convertMethodParmDefToGenMethodParmDef(methodParmDefs[i]);
genMethodParmDefs[i] = genMethodParmDef;
}
return genMethodParmDefs;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.storage.types.MethodParmDef into an
* instance of fedora.server.types.gen.MethodParmDef.
* </p>
*
* @param methodParmDef
* An instance of fedora.server.storage.types.MethodParmDef.
* @return An instance of fedora.server.types.gen.MethodParmDef.
*/
public static fedora.server.types.gen.MethodParmDef convertMethodParmDefToGenMethodParmDef(fedora.server.storage.types.MethodParmDef methodParmDef) {
if (methodParmDef != null) {
fedora.server.types.gen.MethodParmDef genMethodParmDef =
new fedora.server.types.gen.MethodParmDef();
genMethodParmDef.setParmName(methodParmDef.parmName);
genMethodParmDef.setParmLabel(methodParmDef.parmLabel);
genMethodParmDef
.setParmDefaultValue(methodParmDef.parmDefaultValue);
genMethodParmDef
.setParmDomainValues(methodParmDef.parmDomainValues);
genMethodParmDef.setParmRequired(methodParmDef.parmRequired);
genMethodParmDef.setParmType(methodParmDef.parmType);
genMethodParmDef.setParmPassBy(methodParmDef.parmPassBy);
return genMethodParmDef;
} else {
return null;
}
}
/**
* <p>
* Converts an array of fedora.server.types.gen.MethodParmDef into an array
* of fedora.server.storage.types.MethodParmDef.
* </p>
*
* @param genMethodParmDefs
* An array of fedora.server.types.gen.MethodParmDef.
* @return An array of fedora.server.storage.types.MethodParmDef.
*/
public static fedora.server.storage.types.MethodParmDef[] convertGenMethodParmDefArrayToMethodParmDefArray(fedora.server.types.gen.MethodParmDef[] genMethodParmDefs) {
if (genMethodParmDefs != null) {
fedora.server.storage.types.MethodParmDef[] methodParmDefs =
new fedora.server.storage.types.MethodParmDef[genMethodParmDefs.length];
for (int i = 0; i < genMethodParmDefs.length; i++) {
fedora.server.storage.types.MethodParmDef methodParmDef =
new fedora.server.storage.types.MethodParmDef();
methodParmDef =
convertGenMethodParmDefToMethodParmDef(genMethodParmDefs[i]);
methodParmDefs[i] = methodParmDef;
}
return methodParmDefs;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.storage.types.MethodParmDef into an
* instance of fedora.server.types.gen.MethodParmDef.
* </p>
*
* @param genMethodParmDef
* An instance of fedora.server.storage.types.MethodParmDef.
* @return An instance of fedora.server.types.gen.MethodParmDef.
*/
public static fedora.server.storage.types.MethodParmDef convertGenMethodParmDefToMethodParmDef(fedora.server.types.gen.MethodParmDef genMethodParmDef) {
if (genMethodParmDef != null) {
fedora.server.storage.types.MethodParmDef methodParmDef =
new fedora.server.storage.types.MethodParmDef();
methodParmDef.parmName = genMethodParmDef.getParmName();
methodParmDef.parmLabel = genMethodParmDef.getParmLabel();
methodParmDef.parmDefaultValue =
genMethodParmDef.getParmDefaultValue();
methodParmDef.parmDomainValues =
genMethodParmDef.getParmDomainValues();
methodParmDef.parmRequired = genMethodParmDef.isParmRequired();
methodParmDef.parmType = genMethodParmDef.getParmType();
methodParmDef.parmPassBy = genMethodParmDef.getParmPassBy();
return methodParmDef;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.storage.types.MIMETypedStream into
* an instance of fedora.server.types.gen.MIMETypedStream.
* </p>
*
* @param mimeTypedStream
* An instance of fedora.server.storage.types.MIMETypedStream.
* @return An instance of fedora.server.types.gen.MIMETypedStream.
*/
public static fedora.server.types.gen.MIMETypedStream convertMIMETypedStreamToGenMIMETypedStream(fedora.server.storage.types.MIMETypedStream mimeTypedStream) {
if (mimeTypedStream != null) {
fedora.server.types.gen.MIMETypedStream genMIMETypedStream =
new fedora.server.types.gen.MIMETypedStream();
genMIMETypedStream.setMIMEType(mimeTypedStream.MIMEType);
fedora.server.storage.types.Property[] header =
mimeTypedStream.header;
genMIMETypedStream
.setHeader(convertPropertyArrayToGenPropertyArray(header));
ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
InputStream is = mimeTypedStream.getStream();
int byteStream = 0;
try {
byte[] buffer = new byte[255];
while ((byteStream = is.read(buffer)) != -1) {
baos.write(buffer, 0, byteStream);
}
} catch (IOException ioe) {
LOG.error("Error converting types", ioe);
}
genMIMETypedStream.setStream(baos.toByteArray());
mimeTypedStream.close();
mimeTypedStream.setStream(new ByteArrayInputStream(baos
.toByteArray()));
return genMIMETypedStream;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.types.gen.MIMETypedStream into an
* instance of fedora.server.storage.types.MIMETypedStream.
* </p>
*
* @param genMIMETypedStream
* An instance of fedora.server.types.gen.MIMETypedStream.
* @return an instance of fedora.server.storage.types.MIMETypedStream.
*/
public static fedora.server.storage.types.MIMETypedStream convertGenMIMETypedStreamToMIMETypedStream(fedora.server.types.gen.MIMETypedStream genMIMETypedStream) {
if (genMIMETypedStream != null) {
InputStream is =
new ByteArrayInputStream(genMIMETypedStream.getStream());
fedora.server.types.gen.Property[] header =
genMIMETypedStream.getHeader();
fedora.server.storage.types.MIMETypedStream mimeTypedStream =
new fedora.server.storage.types.MIMETypedStream(genMIMETypedStream
.getMIMEType(),
is,
convertGenPropertyArrayToPropertyArray(header));
return mimeTypedStream;
} else {
return null;
}
}
/**
* <p>
* Converts an array of fedora.server.types.gen.ObjectMethodsDef into an
* array of fedora.server.storage.types.ObjectMethodsDef.
* </p>
*
* @param genObjectMethodDefs
* An array of fedora.server.types.gen.ObjectMethodsDef.
* @return An array of fedora.server.storage.types.ObjectMethodsDef.
*/
public static fedora.server.storage.types.ObjectMethodsDef[] convertGenObjectMethodsDefArrayToObjectMethodsDefArray(fedora.server.types.gen.ObjectMethodsDef[] genObjectMethodDefs) {
if (genObjectMethodDefs != null) {
fedora.server.storage.types.ObjectMethodsDef[] objectMethodDefs =
new fedora.server.storage.types.ObjectMethodsDef[genObjectMethodDefs.length];
for (int i = 0; i < genObjectMethodDefs.length; i++) {
fedora.server.storage.types.ObjectMethodsDef objectMethodDef =
new fedora.server.storage.types.ObjectMethodsDef();
objectMethodDef.PID = genObjectMethodDefs[i].getPID();
objectMethodDef.sDefPID =
genObjectMethodDefs[i].getServiceDefinitionPID();
objectMethodDef.methodName =
genObjectMethodDefs[i].getMethodName();
fedora.server.types.gen.MethodParmDef[] genMethodParmDefs =
genObjectMethodDefs[i].getMethodParmDefs();
fedora.server.storage.types.MethodParmDef[] methodParmDefs =
new fedora.server.storage.types.MethodParmDef[0];
if (genMethodParmDefs != null) {
methodParmDefs =
new fedora.server.storage.types.MethodParmDef[genMethodParmDefs.length];
for (int j = 0; j < genMethodParmDefs.length; j++) {
methodParmDefs[j] =
convertGenMethodParmDefToMethodParmDef(genMethodParmDefs[j]);
}
}
objectMethodDef.methodParmDefs = methodParmDefs;
objectMethodDefs[i] = objectMethodDef;
}
return objectMethodDefs;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.types.gen.ObjectMethodsDef into an
* instance of fedora.server.storage.types.ObjectMethodsDef.
* </p>
*
* @param genObjectMethodDef
* An instance of fedora.server.types.gen.ObjectMethodsDef.
* @return An instance of fedora.server.storage.types.ObjectMethodsDef.
*/
public static fedora.server.storage.types.ObjectMethodsDef convertGenObjectMethodsDefToObjectMethodsDef(fedora.server.types.gen.ObjectMethodsDef genObjectMethodDef) {
if (genObjectMethodDef != null) {
fedora.server.storage.types.ObjectMethodsDef objectMethodDef =
new fedora.server.storage.types.ObjectMethodsDef();
objectMethodDef.PID = genObjectMethodDef.getPID();
objectMethodDef.sDefPID =
genObjectMethodDef.getServiceDefinitionPID();
objectMethodDef.methodName = genObjectMethodDef.getMethodName();
fedora.server.types.gen.MethodParmDef[] genMethodParmDefs =
genObjectMethodDef.getMethodParmDefs();
fedora.server.storage.types.MethodParmDef[] methodParmDefs =
new fedora.server.storage.types.MethodParmDef[0];
if (genMethodParmDefs != null) {
methodParmDefs =
convertGenMethodParmDefArrayToMethodParmDefArray(genMethodParmDefs);
}
objectMethodDef.methodParmDefs = methodParmDefs;
return objectMethodDef;
} else {
return null;
}
}
/**
* <p>
* Converts an array of fedora.server.storage.types.ObjectMethodsDef into an
* array of fedora.server.types.gen.ObjectMethodsDef.
* </p>
*
* @param objectMethodDefs
* An array of fedora.server.storage.types.ObjectMethodsDef.
* @return An array of fedora.server.types.gen.ObjectMethodsDef.
*/
public static fedora.server.types.gen.ObjectMethodsDef[] convertObjectMethodsDefArrayToGenObjectMethodsDefArray(fedora.server.storage.types.ObjectMethodsDef[] objectMethodDefs) {
if (objectMethodDefs != null) {
fedora.server.types.gen.ObjectMethodsDef[] genObjectMethodDefs =
new fedora.server.types.gen.ObjectMethodsDef[objectMethodDefs.length];
for (int i = 0; i < objectMethodDefs.length; i++) {
fedora.server.types.gen.ObjectMethodsDef genObjectMethodDef =
new fedora.server.types.gen.ObjectMethodsDef();
genObjectMethodDef.setPID(objectMethodDefs[i].PID);
genObjectMethodDef
.setServiceDefinitionPID(objectMethodDefs[i].sDefPID);
genObjectMethodDef
.setMethodName(objectMethodDefs[i].methodName);
fedora.server.storage.types.MethodParmDef[] methodParmDefs =
objectMethodDefs[i].methodParmDefs;
fedora.server.types.gen.MethodParmDef[] genMethodParmDefs =
new fedora.server.types.gen.MethodParmDef[0];
if (methodParmDefs != null) {
genMethodParmDefs =
new fedora.server.types.gen.MethodParmDef[methodParmDefs.length];
for (int j = 0; j < methodParmDefs.length; j++) {
genMethodParmDefs[j] =
convertMethodParmDefToGenMethodParmDef(methodParmDefs[j]);
}
}
genObjectMethodDef.setMethodParmDefs(genMethodParmDefs);
genObjectMethodDefs[i] = genObjectMethodDef;
}
return genObjectMethodDefs;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.storage.types.ObjectMethodsDef into
* an instance of fedora.server.types.gen.ObjectMethodsDef.
* </p>
*
* @param objectMethodDef
* An instance of fedora.server.storage.types.ObjectMethodsDef.
* @return An instance of fedora.server.types.gen.ObjectMethodsDef.
*/
public static fedora.server.types.gen.ObjectMethodsDef convertObjectMethodsDefToGenObjectMethodsDef(fedora.server.storage.types.ObjectMethodsDef objectMethodDef) {
if (objectMethodDef != null) {
fedora.server.types.gen.ObjectMethodsDef genObjectMethodDef =
new fedora.server.types.gen.ObjectMethodsDef();
genObjectMethodDef.setPID(objectMethodDef.PID);
genObjectMethodDef.setServiceDefinitionPID(objectMethodDef.sDefPID);
genObjectMethodDef.setMethodName(objectMethodDef.methodName);
return genObjectMethodDef;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.types.gen.ObjectProfile into an
* instance of fedora.server.access.ObjectProfile.
* </p>
*
* @param genObjectProfile
* An instance of fedora.server.types.gen.ObjectProfile.
* @return An instance of fedora.server.access.ObjectProfile.
*/
public static fedora.server.access.ObjectProfile convertGenObjectProfileToObjectProfile(fedora.server.types.gen.ObjectProfile genObjectProfile) {
if (genObjectProfile != null) {
fedora.server.access.ObjectProfile objectProfile =
new fedora.server.access.ObjectProfile();
objectProfile.PID = genObjectProfile.getPid();
objectProfile.objectLabel = genObjectProfile.getObjLabel();
objectProfile.objectCreateDate =
DateUtility.convertStringToDate(genObjectProfile
.getObjCreateDate());
objectProfile.objectLastModDate =
DateUtility.convertStringToDate(genObjectProfile
.getObjLastModDate());
objectProfile.objectModels =
new HashSet<String>(Arrays.asList(genObjectProfile
.getObjModels()));
objectProfile.dissIndexViewURL =
genObjectProfile.getObjDissIndexViewURL();
objectProfile.itemIndexViewURL =
genObjectProfile.getObjItemIndexViewURL();
return objectProfile;
} else {
return null;
}
}
public static fedora.server.types.gen.ObjectProfile convertObjectProfileToGenObjectProfile(fedora.server.access.ObjectProfile objectProfile) {
if (objectProfile != null) {
fedora.server.types.gen.ObjectProfile genObjectProfile =
new fedora.server.types.gen.ObjectProfile();
genObjectProfile.setPid(objectProfile.PID);
genObjectProfile.setObjLabel(objectProfile.objectLabel);
genObjectProfile.setObjModels(objectProfile.objectModels
.toArray(new String[0]));
genObjectProfile.setObjCreateDate(DateUtility
.convertDateToString(objectProfile.objectCreateDate));
genObjectProfile.setObjLastModDate(DateUtility
.convertDateToString(objectProfile.objectLastModDate));
genObjectProfile
.setObjDissIndexViewURL(objectProfile.dissIndexViewURL);
genObjectProfile
.setObjItemIndexViewURL(objectProfile.itemIndexViewURL);
return genObjectProfile;
} else {
return null;
}
}
public static fedora.server.types.gen.RepositoryInfo convertReposInfoToGenReposInfo(fedora.server.access.RepositoryInfo repositoryInfo) {
if (repositoryInfo != null) {
fedora.server.types.gen.RepositoryInfo genRepositoryInfo =
new fedora.server.types.gen.RepositoryInfo();
genRepositoryInfo.setRepositoryName(repositoryInfo.repositoryName);
genRepositoryInfo
.setRepositoryBaseURL(repositoryInfo.repositoryBaseURL);
genRepositoryInfo
.setRepositoryVersion(repositoryInfo.repositoryVersion);
genRepositoryInfo
.setRepositoryPIDNamespace(repositoryInfo.repositoryPIDNamespace);
genRepositoryInfo
.setDefaultExportFormat(repositoryInfo.defaultExportFormat);
genRepositoryInfo.setOAINamespace(repositoryInfo.OAINamespace);
genRepositoryInfo.setAdminEmailList(repositoryInfo.adminEmailList);
genRepositoryInfo.setSamplePID(repositoryInfo.samplePID);
genRepositoryInfo
.setSampleOAIIdentifier(repositoryInfo.sampleOAIIdentifer);
genRepositoryInfo
.setSampleSearchURL(repositoryInfo.sampleSearchURL);
genRepositoryInfo
.setSampleAccessURL(repositoryInfo.sampleAccessURL);
genRepositoryInfo.setSampleOAIURL(repositoryInfo.sampleOAIURL);
genRepositoryInfo.setRetainPIDs(repositoryInfo.retainPIDs);
return genRepositoryInfo;
} else {
return null;
}
}
/**
* <p>
* Converts an array of fedora.server.types.gen.Property into an array of
* fedora.server.storage.types.Property.
* </p>
*
* @param genProperties
* An array of fedora.server.types.gen.Property.
* @return An array of fedora.server.storage.types.Property.
*/
public static fedora.server.storage.types.Property[] convertGenPropertyArrayToPropertyArray(fedora.server.types.gen.Property[] genProperties) {
if (genProperties != null) {
fedora.server.storage.types.Property[] properties =
new fedora.server.storage.types.Property[genProperties.length];
for (int i = 0; i < genProperties.length; i++) {
fedora.server.storage.types.Property property =
new fedora.server.storage.types.Property();
property = convertGenPropertyToProperty(genProperties[i]);
properties[i] = property;
}
return properties;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.types.gen.Property into an instance
* of fedora.server.storage.types.Property.
* </p>
*
* @param genProperty
* An instance of fedora.server.types.gen.Property.
* @return An instance of fedora.server.storage.types.Property.
*/
public static fedora.server.storage.types.Property convertGenPropertyToProperty(fedora.server.types.gen.Property genProperty) {
fedora.server.storage.types.Property property =
new fedora.server.storage.types.Property();
if (genProperty != null) {
property.name = genProperty.getName();
property.value = genProperty.getValue();
}
return property;
}
/**
* <p>
* Converts an array of fedora.server.storage.types.Property into an array
* of fedora.server.types.gen.Property.
* </p>
*
* @param properties
* An array of fedora.server.storage.typesProperty.
* @return An array of fedora.server.types.gen.Property.
*/
public static fedora.server.types.gen.Property[] convertPropertyArrayToGenPropertyArray(fedora.server.storage.types.Property[] properties) {
if (properties != null) {
fedora.server.types.gen.Property[] genProperties =
new fedora.server.types.gen.Property[properties.length];
for (int i = 0; i < properties.length; i++) {
fedora.server.types.gen.Property genProperty =
new fedora.server.types.gen.Property();
genProperty = convertPropertyToGenProperty(properties[i]);
genProperties[i] = genProperty;
}
return genProperties;
} else {
return null;
}
}
/**
* <p>
* Converts an instance of fedora.server.storage.types.Property into an
* instance of fedora.server.types.gen.Property.
* </p>
*
* @param property
* An instance of fedora.server.storage.types.Property.
* @return An instance of fedora.server.types.gen.Property.
*/
public static fedora.server.types.gen.Property convertPropertyToGenProperty(fedora.server.storage.types.Property property) {
fedora.server.types.gen.Property genProperty =
new fedora.server.types.gen.Property();
if (property != null) {
genProperty.setName(property.name);
genProperty.setValue(property.value);
}
return genProperty;
}
public static fedora.server.types.gen.RelationshipTuple convertRelsTupleToGenRelsTuple(fedora.server.storage.types.RelationshipTuple in) {
if (in == null) {
return null;
}
fedora.server.types.gen.RelationshipTuple out =
new fedora.server.types.gen.RelationshipTuple();
out.setSubject(in.subject);
out.setPredicate(in.predicate);
out.setObject(in.object);
out.setIsLiteral(in.isLiteral);
out.setDatatype(in.datatype);
return out;
}
public static fedora.server.types.gen.DatastreamDef convertDatastreamDefToGenDatastreamDef(fedora.server.storage.types.DatastreamDef in) {
fedora.server.types.gen.DatastreamDef out =
new fedora.server.types.gen.DatastreamDef();
out.setID(in.dsID);
out.setLabel(in.dsLabel);
out.setMIMEType(in.dsMIME);
return out;
}
public static fedora.server.storage.types.DatastreamDef convertGenDatastreamDefToDatastreamDef(fedora.server.types.gen.DatastreamDef genDatastreamDef) {
if (genDatastreamDef == null) {
return new fedora.server.storage.types.DatastreamDef(null,
null,
null);
} else {
return new fedora.server.storage.types.DatastreamDef(genDatastreamDef
.getID(),
genDatastreamDef
.getLabel(),
genDatastreamDef
.getMIMEType());
}
}
// public static fedora.server.types.gen.DatastreamBindingMap
// convertDSBindingMapToGenDatastreamBindingMap(
// fedora.server.storage.types.DSBindingMap in)
// {
// fedora.server.types.gen.DatastreamBindingMap out=
// new fedora.server.types.gen.DatastreamBindingMap();
// fedora.server.types.gen.DatastreamBinding datastreamBinding =
// new fedora.server.types.gen.DatastreamBinding();
// out.setDsBindings(convertDSBindingArrayToGenDatastreamBindingArray(in.dsBindings));
// out.setDsBindMapID(in.dsBindMapID);
// out.setDsBindMapLabel(in.dsBindMapLabel);
// out.setDsBindMechanismPID(in.dsBindMechanismPID);
// out.setState(in.state);
//
// return out;
// }
// public static fedora.server.storage.types.DSBindingMap
// convertGenDatastreamBindingMapToDSBindingMap(
// fedora.server.types.gen.DatastreamBindingMap genDatastreamBindingMap)
// {
// fedora.server.storage.types.DSBindingMap dsBindingMap =
// new fedora.server.storage.types.DSBindingMap();
// if (genDatastreamBindingMap != null)
// {
// dsBindingMap.dsBindings = convertGenDatastreamBindingArrayToDSBindingArray(genDatastreamBindingMap.getDsBindings());
// dsBindingMap.dsBindMapID = genDatastreamBindingMap.getDsBindMapID();
// dsBindingMap.dsBindMapLabel = genDatastreamBindingMap.getDsBindMapLabel();
// dsBindingMap.dsBindMechanismPID = genDatastreamBindingMap.getDsBindMechanismPID();
// dsBindingMap.state = genDatastreamBindingMap.getState();
// }
// return dsBindingMap;
// }
// public static fedora.server.types.gen.DatastreamBinding
// convertDSBindingToGenDatastreamBinding(
// fedora.server.storage.types.DSBinding in)
// {
// fedora.server.types.gen.DatastreamBinding out=
// new fedora.server.types.gen.DatastreamBinding();
// out.setBindKeyName(in.bindKeyName);
// out.setBindLabel(in.bindLabel);
// out.setDatastreamID(in.datastreamID);
// out.setSeqNo(in.seqNo);
// return out;
// }
//
// public static fedora.server.storage.types.DSBinding
// convertGenDatastreamBindingToDSBinding(
// fedora.server.types.gen.DatastreamBinding genDatastreamBinding)
// {
//
// fedora.server.storage.types.DSBinding dsBinding =
// new fedora.server.storage.types.DSBinding();
// if (genDatastreamBinding != null)
// {
// dsBinding.bindKeyName = genDatastreamBinding.getBindKeyName();
// dsBinding.bindLabel = genDatastreamBinding.getBindLabel();
// dsBinding.datastreamID = genDatastreamBinding.getDatastreamID();
// dsBinding.seqNo = genDatastreamBinding.getSeqNo();
// }
// return dsBinding;
// }
//
// public static fedora.server.types.gen.DatastreamBinding[]
// convertDSBindingArrayToGenDatastreamBindingArray(
// fedora.server.storage.types.DSBinding[] dsBindings)
// {
//
// if (dsBindings != null)
// {
// fedora.server.types.gen.DatastreamBinding[] genDatastreamBindings =
// new fedora.server.types.gen.DatastreamBinding[dsBindings.length];
// for (int i=0; i<genDatastreamBindings.length; i++)
// {
// fedora.server.types.gen.DatastreamBinding genDatastreamBinding =
// new fedora.server.types.gen.DatastreamBinding();
// genDatastreamBindings[i] =
// convertDSBindingToGenDatastreamBinding(dsBindings[i]);
// }
// return genDatastreamBindings;
//
// } else
// {
// return null;
// }
// }
public static fedora.server.types.gen.DatastreamDef[] convertDatastreamDefArrayToGenDatastreamDefArray(fedora.server.storage.types.DatastreamDef[] dsDefs) {
if (dsDefs != null) {
fedora.server.types.gen.DatastreamDef[] genDatastreamDefs =
new fedora.server.types.gen.DatastreamDef[dsDefs.length];
for (int i = 0; i < genDatastreamDefs.length; i++) {
fedora.server.types.gen.DatastreamDef genDatastreamDef =
new fedora.server.types.gen.DatastreamDef();
genDatastreamDefs[i] =
convertDatastreamDefToGenDatastreamDef(dsDefs[i]);
}
return genDatastreamDefs;
} else {
return null;
}
}
// public static fedora.server.storage.types.DSBinding[]
// convertGenDatastreamBindingArrayToDSBindingArray(
// fedora.server.types.gen.DatastreamBinding[] genDatastreamBindings)
// {
//
// if (genDatastreamBindings != null)
// {
// fedora.server.storage.types.DSBinding[] dsBindings =
// new fedora.server.storage.types.DSBinding[genDatastreamBindings.length];
// for (int i=0; i<genDatastreamBindings.length; i++)
// {
// fedora.server.storage.types.DSBinding dsBinding =
// new fedora.server.storage.types.DSBinding();
// dsBinding =
// convertGenDatastreamBindingToDSBinding(genDatastreamBindings[i]);
// dsBindings[i] = dsBinding;
// }
// return dsBindings;
//
// } else
// {
// return null;
// }
// }
public static fedora.server.storage.types.DatastreamDef[] convertGenDatastreamDefArrayToDatastreamDefArray(fedora.server.types.gen.DatastreamDef[] genDatastreamDefs) {
if (genDatastreamDefs != null) {
fedora.server.storage.types.DatastreamDef[] dsDefs =
new fedora.server.storage.types.DatastreamDef[genDatastreamDefs.length];
for (int i = 0; i < genDatastreamDefs.length; i++) {
dsDefs[i] =
convertGenDatastreamDefToDatastreamDef(genDatastreamDefs[i]);
}
return dsDefs;
} else {
return null;
}
}
public static void main(String[] args) {
try {
fedora.server.storage.types.MethodParmDef methodParmDef1 =
new fedora.server.storage.types.MethodParmDef();
methodParmDef1.parmName = "parm_name1";
methodParmDef1.parmLabel = "parm_label1";
methodParmDef1.parmDefaultValue = "parm_default_value1";
methodParmDef1.parmRequired = true;
fedora.server.storage.types.MethodParmDef methodParmDef2 =
new fedora.server.storage.types.MethodParmDef();
methodParmDef2.parmName = "parm_name2";
methodParmDef2.parmLabel = "parm_label2";
methodParmDef2.parmDefaultValue = "parm_default_value2";
methodParmDef2.parmRequired = false;
fedora.server.storage.types.MethodDef methodDef1 =
new fedora.server.storage.types.MethodDef();
methodDef1.methodName = "method_name1";
methodDef1.methodLabel = "method_label1";
fedora.server.storage.types.MethodParmDef[] methodParmDefs =
new fedora.server.storage.types.MethodParmDef[2];
methodParmDefs[0] = methodParmDef1;
methodParmDefs[1] = methodParmDef2;
methodDef1.methodParms = methodParmDefs;
fedora.server.storage.types.MethodDef methodDef2 =
new fedora.server.storage.types.MethodDef();
methodDef2.methodName = "method_name2";
methodDef2.methodLabel = "method_label2";
methodDef2.methodParms = null;
fedora.server.storage.types.MethodDef[] methodDef =
new fedora.server.storage.types.MethodDef[2];
methodDef[0] = methodDef1;
methodDef[1] = methodDef2;
fedora.server.storage.types.Property[] properties =
new fedora.server.storage.types.Property[2];
fedora.server.storage.types.Property prop1 =
new fedora.server.storage.types.Property();
fedora.server.storage.types.Property prop2 =
new fedora.server.storage.types.Property();
prop1.name = "prop1_name";
prop1.value = "prop1_value";
prop2.name = "prop2_name";
prop2.value = "prop2_value";
properties[0] = prop1;
properties[1] = prop2;
fedora.server.storage.types.ObjectMethodsDef[] objectMethods =
new fedora.server.storage.types.ObjectMethodsDef[2];
fedora.server.storage.types.ObjectMethodsDef objectMethod1 =
new fedora.server.storage.types.ObjectMethodsDef();
fedora.server.storage.types.ObjectMethodsDef objectMethod2 =
new fedora.server.storage.types.ObjectMethodsDef();
objectMethod1.PID = "PID1";
objectMethod1.sDefPID = "sDefPID1";
objectMethod1.methodName = "method1";
objectMethod2.PID = "PID2";
objectMethod2.sDefPID = "sDefPID2";
objectMethod2.methodName = "method2";
objectMethods[0] = objectMethod1;
objectMethods[1] = objectMethod2;
System.out.println("\n----- Started with these values:");
for (MethodDef element : methodDef) {
System.out.println("name: " + element.methodName + "\nlabel: "
+ element.methodLabel + "\nparms:\n");
fedora.server.storage.types.MethodParmDef[] methodParmDef =
null;
methodParmDef = element.methodParms;
if (methodParmDef != null) {
methodParmDef = element.methodParms;
for (MethodParmDef element2 : methodParmDef) {
System.out.println("parmname: " + element2.parmName
+ "\nparmLabel: " + element2.parmLabel
+ "\nparmDefault: " + element2.parmDefaultValue
+ "\nparmrequired: " + element2.parmRequired);
}
}
}
System.out.println("\nObjectMethod values:");
for (int i = 0; i < objectMethods.length; i++) {
System.out.println("ObjectMethod[" + i + "] = " + "\nPID = "
+ objectMethods[i].PID + "\nsDefPID = "
+ objectMethods[i].sDefPID + "\nmethod = "
+ objectMethods[i].methodName);
}
System.out.println("\nProperty values:");
for (int i = 0; i < properties.length; i++) {
System.out.println("Prop[" + i + "] = " + "\nname = "
+ properties[i].name + "\nvalue = "
+ properties[i].value);
}
System.out.println("\n----- Starting with MIMETypedStream of:");
String text = "this is some text for the bytestream";
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
java.io.PrintWriter pw = new java.io.PrintWriter(baos);
pw.println(text);
pw.close();
byte[] stream = baos.toByteArray();
InputStream is = new ByteArrayInputStream(stream);
fedora.server.storage.types.MIMETypedStream mimeTypedStream =
new fedora.server.storage.types.MIMETypedStream("text/plain",
is,
null);
System.out.println("MIMEType: " + mimeTypedStream.MIMEType);
int byteStream = 0;
byte[] buffer = new byte[255];
while ((byteStream = is.read()) >= 0) {
System.out.write(buffer, 0, byteStream);
}
System.out.println("\n----- Converting GenMIMETypedStream to "
+ " MIMETypedStream");
fedora.server.types.gen.MIMETypedStream genMIMETypedStream =
TypeUtility
.convertMIMETypedStreamToGenMIMETypedStream(mimeTypedStream);
System.out.println("MIMEType: " + genMIMETypedStream.getMIMEType());
ByteArrayInputStream bais = null;
bais = new ByteArrayInputStream(genMIMETypedStream.getStream());
byteStream = 0;
while ((byteStream = bais.read(buffer)) >= 0) {
System.out.write(buffer, 0, byteStream);
}
System.out.println("\n----- Converting MIMETypedStream to "
+ " GenMIMETypedStream");
mimeTypedStream =
TypeUtility
.convertGenMIMETypedStreamToMIMETypedStream(genMIMETypedStream);
System.out.println("MIMEType: " + mimeTypedStream.MIMEType);
is = mimeTypedStream.getStream();
byteStream = 0;
while ((byteStream = is.read(buffer)) >= -1) {
System.out.write(buffer, 0, byteStream);
}
mimeTypedStream.close();
System.out.println("\n----- Converting ObjectMethodsDefArray to "
+ "GenObjectMethodsDefArray");
fedora.server.types.gen.ObjectMethodsDef[] genObjectMethods = null;
genObjectMethods =
TypeUtility
.convertObjectMethodsDefArrayToGenObjectMethodsDefArray(objectMethods);
for (int i = 0; i < genObjectMethods.length; i++) {
System.out.println("GenProp[" + i + "]: " + "\nPID = "
+ genObjectMethods[i].getPID() + "\nsDefPID = "
+ genObjectMethods[i].getServiceDefinitionPID()
+ "\nmethod = " + genObjectMethods[i].getMethodName());
}
System.out
.println("\n----- Converting GenObjectMethodsDefArray to "
+ "ObjectMethodsDefArray");
objectMethods =
TypeUtility
.convertGenObjectMethodsDefArrayToObjectMethodsDefArray(genObjectMethods);
for (int i = 0; i < objectMethods.length; i++) {
System.out.println("ObjectMethods[" + i + "]: " + "\nPID = "
+ objectMethods[i].PID + "\nsDefPID = "
+ objectMethods[i].sDefPID + "\nmethod = "
+ objectMethods[i].methodName);
}
System.out.println("\n----- Converting PropertyArray to "
+ "GenPropertyArray");
fedora.server.types.gen.Property[] genProperties =
TypeUtility
.convertPropertyArrayToGenPropertyArray(properties);
for (int i = 0; i < genProperties.length; i++) {
System.out.println("GenProp[" + i + "]: " + "\nname = "
+ genProperties[i].getName() + "\nvalue = "
+ genProperties[i].getValue());
}
System.out.println("\n----- Converting GenPropertyArray to "
+ "PropertyArray");
properties =
TypeUtility
.convertGenPropertyArrayToPropertyArray(genProperties);
for (int i = 0; i < properties.length; i++) {
System.out.println("Prop[" + i + "]: " + "\nname = "
+ properties[i].name + "\nvalue = "
+ properties[i].value);
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}