/**
* Copyright (c) 2007, Aberystwyth University
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* - Neither the name of the Centre for Advanced Software and
* Intelligent Systems (CASIS) nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
package org.purl.sword;
/**
* Author : $Author: nst $
* Date : $Date: 2007/09/21 15:18:57 $
* Revision : $Revision: 1.3 $
* Name : $Name: HEAD $
*/
import org.purl.sword.atom.Author;
import org.purl.sword.atom.Content;
import org.purl.sword.atom.ContentType;
import org.purl.sword.atom.Contributor;
import org.purl.sword.atom.Generator;
import org.purl.sword.atom.Link;
import org.purl.sword.atom.Rights;
import org.purl.sword.atom.Source;
import org.purl.sword.atom.Title;
import org.purl.sword.base.Collection;
import org.purl.sword.base.DepositResponse;
import org.purl.sword.base.HttpHeaders;
import org.purl.sword.base.SWORDEntry;
import org.purl.sword.base.Service;
import org.purl.sword.base.ServiceDocument;
import org.purl.sword.base.Workspace;
/**
* Simple test class for the ServiceDocument and DepositResponse
* classes in the SWORD common classes.
*
* @author Neil Taylor
*/
public class SwordTest
{
/**
* Start the test of the ServiceDocument followed by the
* DepositResponse.
*
* @param args
*/
public static void main(String[] args)
{
SwordTest test = new SwordTest();
test.serviceDocumentTest();
test.depositResponseTest();
}
/**
* Create a test ServiceDocument class. Marshall and Unmarshall the
* data to ensure that it is preserved when transformed to and
* from an XML string.
*/
public void serviceDocumentTest()
{
// create a new service document
Service service = new Service();
service.setVerbose(true);
service.setNoOp(false);
// add some workspace/collections
Workspace workspace = new Workspace();
workspace.setTitle("This is a test");
Collection collection = new Collection();
collection.setTitle("The first collection");
collection.setLocation("http://www.somewhere.com/here");
workspace.addCollection(collection);
service.addWorkspace(workspace);
workspace = new Workspace();
workspace.setTitle("This is a second test");
collection = new Collection();
collection.setTitle("The second collection");
collection.setLocation("http://www.somewhere.com/here/something");
collection.addAccepts("application/zip");
collection.addAccepts("application/xml");
collection.setAbstract("An abstract goes in here");
collection.setCollectionPolicy("A collection policy");
collection.setMediation(true);
collection.setTreatment("treatment in here too");
workspace.addCollection(collection);
service.addWorkspace(workspace);
// create the service document, marshall, unmarshall and marshall again.
ServiceDocument document = new ServiceDocument(service);
// display the XML document that has been constructed
String doc = document.marshall();
System.out.println(doc);
try
{
ServiceDocument unmarshalledDocument = new ServiceDocument();
unmarshalledDocument.unmarshall(doc);
System.out.println(unmarshalledDocument.marshall());
}
catch( Exception e )
{
e.printStackTrace();
}
}
/**
* Create a test DepositResponse class. Marshall and Unmarshall the
* data to ensure that it is preserved when transformed to and
* from an XML string.
*/
public void depositResponseTest()
{
try
{
DepositResponse response = new DepositResponse(HttpHeaders.ACCEPTED);
SWORDEntry entry = new SWORDEntry();
entry.setId("atom:com.intrallect.atomTest3p0:60");
Title title = new Title();
title.setContent("Burning Stubble");
title.setType(ContentType.TEXT);
entry.setTitle(title);
// add authors
Author author = new Author();
author.setName("Sword Tester");
author.setEmail("sword@ukoln.ac.uk");
author.setUri("http://www.ukoln.ac.uk/repositories/digirep/index/SWORD");
entry.addAuthors(author);
author = new Author();
author.setName("CASIS Tester");
author.setEmail("nst@aber.ac.uk");
author.setUri("http://www.aber.ac.uk/casis/");
entry.addAuthors(author);
// add links
Link link = new Link();
link.setRel("edit-media");
link.setHref("http://bagel.intrallect.com:5555/intralibrary3p0/IntraLibrary-Deposit/edit-media/learning_object_id60");
link.setHreflang("en");
link.setTitle("Edit Media Title");
link.setType("edit media type");
link.setContent("some content in here");
entry.addLink(link);
link = new Link();
link.setRel("edit");
link.setHref("http://bagel.intrallect.com:5555/intralibrary3p0/IntraLibrary-Deposit/edit/learning_object_id60");
link.setHreflang("en");
link.setTitle("Edit Title");
link.setType("edit type");
link.setContent("some content in here");
entry.addLink(link);
entry.addCategory("test category");
entry.addCategory("second test category");
Contributor contributor = new Contributor();
contributor.setName("Neil Taylor");
contributor.setEmail("nst@aber.ac.uk");
contributor.setUri("http://www.aber.ac.uk/casis/");
entry.addContributor(contributor);
Rights rights = new Rights();
rights.setType(ContentType.TEXT);
rights.setContent("Rights declaration.");
entry.setRights(rights);
Content content = new Content();
content.setSource("http://bagel.intrallect.com:5555/intralibrary3p0/IntraLibrary?command=open-preview&learning_object_key=i189n4207t");
content.setType("application/zip");
entry.setContent(content);
Generator generator = new Generator();
generator.setContent("Test Generator ID");
generator.setUri("http://www.somewhere.com/");
generator.setVersion("1.1");
entry.setGenerator(generator);
entry.setPublished("2007-08-02T10:13:14Z");
entry.setUpdated("2007-08-02T10:22:17Z");
entry.setTreatment("Treatment description");
entry.setNoOp(true);
entry.setVerboseDescription("A Verbose Description.");
response.setEntry( entry );
String test = response.marshall();
System.out.println(test);
System.out.println("=================");
DepositResponse unmarshalledDocument = new DepositResponse(HttpHeaders.CREATED);
unmarshalledDocument.unmarshall(test);
System.out.println(unmarshalledDocument.marshall());
}
catch( Exception e )
{
e.printStackTrace();
}
}
}