/* 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.translation; import java.util.Date; import org.custommonkey.xmlunit.XMLTestCase; import org.jrdf.graph.URIReference; import org.junit.Before; import fedora.common.Constants; import fedora.common.PID; import fedora.server.storage.types.BasicDigitalObject; import fedora.server.storage.types.DSBinding; import fedora.server.storage.types.DSBindingMap; import fedora.server.storage.types.DatastreamReferencedContent; import fedora.server.storage.types.DatastreamXMLMetadata; import fedora.server.storage.types.DigitalObject; import fedora.server.storage.types.Disseminator; /** * Convenience superclass for serializer and deserializer tests. * * @author Chris Wilper */ @SuppressWarnings("deprecation") public abstract class TranslationTest extends XMLTestCase { protected static final String TEST_PID = "test:pid"; //--- // Setup/Teardown //--- @Override @Before public void setUp() { // HACK: make DOTranslationUtility happy System.setProperty("fedoraServerHost", "localhost"); System.setProperty("fedoraServerPort", "8080"); System.setProperty("fedoraAppServerContext", Constants.FEDORA_DEFAULT_APP_CONTEXT); } //--- // Static helpers //--- protected static DigitalObject createTestObject(URIReference... contentModelURIs) { DigitalObject obj = new BasicDigitalObject(); obj.setPid(TEST_PID); DatastreamXMLMetadata ds = createXDatastream("RELS-EXT"); StringBuilder rdf = new StringBuilder(); rdf .append("<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " + "xmlns:fedora-model=\"info:fedora/fedora-system:def/model#\">\n" + "<rdf:Description rdf:about=\""); rdf.append(PID.getInstance(TEST_PID).toURI() + "\">\n"); for (URIReference model : contentModelURIs) { rdf.append("<fedora-model:hasModel rdf:resource=\"" + model.getURI().toString() + "\"></fedora-model:hasModel>\n"); } rdf.append("</rdf:Description></rdf:RDF>"); ds.xmlContent = rdf.toString().getBytes(); obj.addDatastreamVersion(ds, false); obj.setCreateDate(new Date()); obj.setLastModDate(new Date()); obj.setCreateDate(new Date()); obj.setLastModDate(new Date()); return obj; } protected static DatastreamXMLMetadata createXDatastream(String id) { DatastreamXMLMetadata ds = new DatastreamXMLMetadata(); ds.DatastreamID = id; ds.DSVersionID = id + ".0"; ds.DSControlGrp = "X"; ds.xmlContent = "<doc/>".getBytes(); ds.DSCreateDT = new Date(); return ds; } protected static DatastreamReferencedContent createRDatastream(String id, String url) { DatastreamReferencedContent ds = new DatastreamReferencedContent(); ds.DatastreamID = id; ds.DSVersionID = id + ".0"; ds.DSControlGrp = "R"; ds.DSLocation = url; return ds; } protected static Disseminator createDisseminator(String id, int numBindings) { Disseminator diss = new Disseminator(); diss.dissID = id; diss.dissVersionID = id + ".0"; diss.bDefID = TEST_PID + "bdef"; diss.sDepID = TEST_PID + "bmech"; diss.dsBindMap = new DSBindingMap(); // the following is only needed for METS diss.dsBindMapID = id + "bindMap"; DSBinding[] dsBindings = new DSBinding[numBindings]; for (int i = 1; i <= numBindings; i++) { dsBindings[i - 1] = new DSBinding(); dsBindings[i - 1].bindKeyName = "KEY" + i; dsBindings[i - 1].datastreamID = "DS" + i; } diss.dsBindMap.dsBindings = dsBindings; return diss; } }