mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-12 12:33:18 +00:00
DSpace refactored service api
This commit is contained in:
@@ -17,9 +17,18 @@ import org.apache.log4j.Logger;
|
||||
import org.dspace.AbstractUnitTest;
|
||||
import org.dspace.authorize.AuthorizeException;
|
||||
import org.dspace.content.*;
|
||||
import org.dspace.content.factory.ContentServiceFactory;
|
||||
import org.dspace.content.service.CollectionService;
|
||||
import org.dspace.content.service.CommunityService;
|
||||
import org.dspace.content.service.ItemService;
|
||||
import org.dspace.content.service.WorkspaceItemService;
|
||||
import org.dspace.identifier.factory.IdentifierServiceFactory;
|
||||
import org.dspace.identifier.service.DOIService;
|
||||
import org.dspace.services.ConfigurationService;
|
||||
import org.dspace.storage.rdbms.DatabaseManager;
|
||||
import org.dspace.storage.rdbms.TableRow;
|
||||
import org.dspace.utils.DSpace;
|
||||
import org.dspace.workflow.WorkflowException;
|
||||
import org.dspace.workflow.WorkflowItem;
|
||||
import org.dspace.workflow.factory.WorkflowServiceFactory;
|
||||
import org.junit.*;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assume.*;
|
||||
@@ -41,6 +50,13 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
private static ConfigurationService config = null;
|
||||
|
||||
protected DOIService doiService = IdentifierServiceFactory.getInstance().getDOIService();
|
||||
protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService();
|
||||
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
|
||||
protected ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
||||
protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
||||
|
||||
|
||||
private static Community community;
|
||||
private static Collection collection;
|
||||
|
||||
@@ -50,7 +66,7 @@ public class DOIIdentifierProviderTest
|
||||
public DOIIdentifierProviderTest()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method will be run before every test as per @Before. It will
|
||||
* initialize resources required for the tests.
|
||||
@@ -68,15 +84,14 @@ public class DOIIdentifierProviderTest
|
||||
{
|
||||
context.turnOffAuthorisationSystem();
|
||||
// Create an environment for our test objects to live in.
|
||||
community = Community.create(null, context);
|
||||
community.setMetadata("name", "A Test Community");
|
||||
community.update();
|
||||
collection = community.createCollection();
|
||||
collection.setMetadata("name", "A Test Collection");
|
||||
collection.update();
|
||||
community = communityService.create(null, context);
|
||||
communityService.setMetadata(context, community, "name", "A Test Community");
|
||||
communityService.update(context, community);
|
||||
collection = collectionService.create(context, community);
|
||||
collectionService.setMetadata(context, collection, "name", "A Test Collection");
|
||||
collectionService.update(context, collection);
|
||||
//we need to commit the changes so we don't block the table for testing
|
||||
context.restoreAuthSystemState();
|
||||
context.commit();
|
||||
|
||||
config = kernelImpl.getConfigurationService();
|
||||
// Configure the service under test.
|
||||
@@ -86,7 +101,7 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
connector = new MockDOIConnector();
|
||||
|
||||
provider = new DOIIdentifierProvider();
|
||||
provider = new DSpace().getServiceManager().getServiceByName(DOIIdentifierProvider.class.getName(), DOIIdentifierProvider.class);
|
||||
provider.setConfigurationService(config);
|
||||
provider.setDOIConnector(connector);
|
||||
}
|
||||
@@ -122,19 +137,6 @@ public class DOIIdentifierProviderTest
|
||||
super.destroy();
|
||||
}
|
||||
|
||||
|
||||
private static void dumpMetadata(Item eyetem)
|
||||
{
|
||||
Metadatum[] metadata = eyetem.getMetadata("dc", Item.ANY, Item.ANY, Item.ANY);
|
||||
for (Metadatum metadatum : metadata)
|
||||
System.out.printf("Metadata: %s.%s.%s(%s) = %s\n",
|
||||
metadatum.schema,
|
||||
metadatum.element,
|
||||
metadatum.qualifier,
|
||||
metadatum.language,
|
||||
metadatum.value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a fresh Item, installed in the repository.
|
||||
*
|
||||
@@ -143,54 +145,53 @@ public class DOIIdentifierProviderTest
|
||||
* @throws IOException
|
||||
*/
|
||||
private Item newItem()
|
||||
throws SQLException, AuthorizeException, IOException
|
||||
throws SQLException, AuthorizeException, IOException, IllegalAccessException, IdentifierException, WorkflowException
|
||||
{
|
||||
context.turnOffAuthorisationSystem();
|
||||
//Install a fresh item
|
||||
WorkspaceItem wsItem = WorkspaceItem.create(context, collection, false);
|
||||
Item item = InstallItem.installItem(context, wsItem);
|
||||
|
||||
item.addMetadata("dc", "contributor", "author", null, "Author, A. N.");
|
||||
item.addMetadata("dc", "title", null, null, "A Test Object");
|
||||
item.addMetadata("dc", "publisher", null, null, "DSpace Test Harness");
|
||||
WorkspaceItem wsItem = workspaceItemService.create(context, collection, false);
|
||||
|
||||
WorkflowItem wfItem = WorkflowServiceFactory.getInstance().getWorkflowService().start(context, wsItem);
|
||||
|
||||
Item item = wfItem.getItem();
|
||||
itemService.addMetadata(context, item, "dc", "contributor", "author", null, "Author, A. N.");
|
||||
itemService.addMetadata(context, item, "dc", "title", null, null, "A Test Object");
|
||||
itemService.addMetadata(context, item, "dc", "publisher", null, null, "DSpace Test Harness");
|
||||
|
||||
// If DOIIdentifierProvider is configured
|
||||
// (dspace/conf/spring/api/identifier-service.xml) the new created item
|
||||
// gets automatically a DOI. We remove this DOI as it can make problems
|
||||
// with the tests.
|
||||
String sql = "DELETE FROM Doi WHERE resource_type_id = ? AND resource_id = ?";
|
||||
DatabaseManager.updateQuery(context, sql, item.getType(), item.getID());
|
||||
provider.delete(context, item);
|
||||
|
||||
Metadatum[] metadata = item.getMetadata(
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item,
|
||||
DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
List<String> remainder = new ArrayList<String>();
|
||||
|
||||
for (Metadatum id : metadata)
|
||||
{
|
||||
if (!id.value.startsWith(DOI.RESOLVER))
|
||||
for (MetadataValue id : metadata) {
|
||||
if (!id.getValue().startsWith(DOI.RESOLVER))
|
||||
{
|
||||
remainder.add(id.value);
|
||||
remainder.add(id.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
item.clearMetadata(
|
||||
itemService.clearMetadata(context, item,
|
||||
DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
item.addMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
itemService.addMetadata(context, item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null,
|
||||
remainder.toArray(new String[remainder.size()]));
|
||||
remainder);
|
||||
|
||||
item.update();
|
||||
itemService.update(context, item);
|
||||
//we need to commit the changes so we don't block the table for testing
|
||||
context.restoreAuthSystemState();
|
||||
context.commit();
|
||||
|
||||
return item;
|
||||
}
|
||||
@@ -223,33 +224,24 @@ public class DOIIdentifierProviderTest
|
||||
+ random.nextInt(997);
|
||||
}
|
||||
|
||||
TableRow doiRow = DatabaseManager.create(context, "Doi");
|
||||
doiRow.setColumn("doi", doi.substring(DOI.SCHEME.length()));
|
||||
doiRow.setColumn("resource_type_id", item.getType());
|
||||
doiRow.setColumn("resource_id", item.getID());
|
||||
if (status == null)
|
||||
{
|
||||
doiRow.setColumnNull("status");
|
||||
}
|
||||
else
|
||||
{
|
||||
doiRow.setColumn("status", status);
|
||||
}
|
||||
assumeTrue(1 == DatabaseManager.update(context, doiRow));
|
||||
DOI doiRow = doiService.create(context);
|
||||
doiRow.setDoi(doi.substring(DOI.SCHEME.length()));
|
||||
doiRow.setDSpaceObject(item);
|
||||
doiRow.setStatus(status);
|
||||
doiService.update(context, doiRow);
|
||||
|
||||
if (metadata)
|
||||
{
|
||||
item.addMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
itemService.addMetadata(context, item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null,
|
||||
DOI.DOIToExternalForm(doi));
|
||||
item.update();
|
||||
doiService.DOIToExternalForm(doi));
|
||||
itemService.update(context, item);
|
||||
}
|
||||
|
||||
//we need to commit the changes so we don't block the table for testing
|
||||
context.restoreAuthSystemState();
|
||||
context.commit();
|
||||
return doi;
|
||||
}
|
||||
|
||||
@@ -301,7 +293,7 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
@Test
|
||||
public void testStore_DOI_as_item_metadata()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, IllegalAccessException, WorkflowException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = DOI.SCHEME + PREFIX + "/" + NAMESPACE_SEPARATOR
|
||||
@@ -310,14 +302,14 @@ public class DOIIdentifierProviderTest
|
||||
provider.saveDOIToObject(context, item, doi);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
Metadatum[] metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
boolean result = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi)))
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
@@ -327,52 +319,52 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
@Test
|
||||
public void testGet_DOI_out_of_item_metadata()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, IllegalAccessException, WorkflowException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = DOI.SCHEME + PREFIX + "/" + NAMESPACE_SEPARATOR
|
||||
+ Long.toHexString(new Date().getTime());
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
item.addMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
itemService.addMetadata(context, item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null,
|
||||
DOI.DOIToExternalForm(doi));
|
||||
item.update();
|
||||
doiService.DOIToExternalForm(doi));
|
||||
itemService.update(context, item);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
assertTrue("Failed to recognize DOI in item metadata.",
|
||||
doi.equals(DOIIdentifierProvider.getDOIOutOfObject(item)));
|
||||
doi.equals(provider.getDOIOutOfObject(item)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemove_DOI_from_item_metadata()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = DOI.SCHEME + PREFIX + "/" + NAMESPACE_SEPARATOR
|
||||
+ Long.toHexString(new Date().getTime());
|
||||
|
||||
context.turnOffAuthorisationSystem();
|
||||
item.addMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
itemService.addMetadata(context, item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null,
|
||||
DOI.DOIToExternalForm(doi));
|
||||
item.update();
|
||||
doiService.DOIToExternalForm(doi));
|
||||
itemService.update(context, item);
|
||||
|
||||
provider.removeDOIFromObject(context, item, doi);
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
Metadatum[] metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
boolean foundDOI = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi)))
|
||||
{
|
||||
foundDOI = true;
|
||||
}
|
||||
@@ -381,23 +373,23 @@ public class DOIIdentifierProviderTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGet_DOI_by_DSpaceObject()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException
|
||||
public void testGet_DOI_by_DSpaceObject()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, false);
|
||||
|
||||
String retrievedDOI = DOIIdentifierProvider.getDOIByObject(context, item);
|
||||
String retrievedDOI = provider.getDOIByObject(context, item);
|
||||
|
||||
assertNotNull("Failed to load DOI by DSpaceObject.", retrievedDOI);
|
||||
assertTrue("Loaded wrong DOI by DSpaceObject.", doi.equals(retrievedDOI));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGet_DOI_lookup()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException
|
||||
public void testGet_DOI_lookup()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, false);
|
||||
@@ -409,14 +401,14 @@ public class DOIIdentifierProviderTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGet_DSpaceObject_by_DOI()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException
|
||||
public void testGet_DSpaceObject_by_DOI()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, false);
|
||||
|
||||
DSpaceObject dso = DOIIdentifierProvider.getObjectByDOI(context, doi);
|
||||
DSpaceObject dso = provider.getObjectByDOI(context, doi);
|
||||
|
||||
assertNotNull("Failed to load DSpaceObject by DOI.", dso);
|
||||
if (item.getType() != dso.getType() || item.getID() != dso.getID())
|
||||
@@ -426,9 +418,9 @@ public class DOIIdentifierProviderTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testResolve_DOI()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException
|
||||
public void testResolve_DOI()
|
||||
throws SQLException, AuthorizeException, IOException,
|
||||
IllegalArgumentException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, false);
|
||||
@@ -448,7 +440,7 @@ public class DOIIdentifierProviderTest
|
||||
*/
|
||||
@Test
|
||||
public void testRemove_two_DOIs_from_item_metadata()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
// add two DOIs.
|
||||
Item item = newItem();
|
||||
@@ -461,19 +453,19 @@ public class DOIIdentifierProviderTest
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
// assure that the right one was removed
|
||||
Metadatum[] metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
boolean foundDOI1 = false;
|
||||
boolean foundDOI2 = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi1)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi1)))
|
||||
{
|
||||
foundDOI1 = true;
|
||||
}
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi2)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi2)))
|
||||
{
|
||||
foundDOI2 = true;
|
||||
}
|
||||
@@ -488,19 +480,19 @@ public class DOIIdentifierProviderTest
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
// check it
|
||||
metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
foundDOI1 = false;
|
||||
foundDOI2 = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi1)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi1)))
|
||||
{
|
||||
foundDOI1 = true;
|
||||
}
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi2)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi2)))
|
||||
{
|
||||
foundDOI2 = true;
|
||||
}
|
||||
@@ -511,7 +503,7 @@ public class DOIIdentifierProviderTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMintDOI() throws SQLException, AuthorizeException, IOException
|
||||
public void testMintDOI() throws SQLException, AuthorizeException, IOException, IllegalAccessException, IdentifierException, WorkflowException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = null;
|
||||
@@ -531,7 +523,7 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
try
|
||||
{
|
||||
DOI.formatIdentifier(doi);
|
||||
doiService.formatIdentifier(doi);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -542,7 +534,7 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
@Test
|
||||
public void testMint_returns_existing_DOI()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, null, true);
|
||||
@@ -550,67 +542,64 @@ public class DOIIdentifierProviderTest
|
||||
String retrievedDOI = provider.mint(context, item);
|
||||
|
||||
assertNotNull("Minted DOI is null?!", retrievedDOI);
|
||||
assertTrue("Mint did not returned an existing DOI!", doi.equals(retrievedDOI));
|
||||
assertEquals("Mint did not returned an existing DOI!", doi, retrievedDOI);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReserve_DOI()
|
||||
throws SQLException, SQLException, AuthorizeException, IOException,
|
||||
IdentifierException
|
||||
IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, null, true);
|
||||
|
||||
provider.reserve(context, item, doi);
|
||||
|
||||
TableRow doiRow = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow = doiService.findByDoi(context, doi.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow);
|
||||
|
||||
assertTrue("Reservation of DOI did not set the corret DOI status.",
|
||||
DOIIdentifierProvider.TO_BE_RESERVED.intValue() == doiRow.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_RESERVED.equals(doiRow.getStatus()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegister_unreserved_DOI()
|
||||
throws SQLException, SQLException, AuthorizeException, IOException,
|
||||
IdentifierException
|
||||
IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, null, true);
|
||||
|
||||
provider.register(context, item, doi);
|
||||
|
||||
TableRow doiRow = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow = doiService.findByDoi(context, doi.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow);
|
||||
|
||||
assertTrue("Registration of DOI did not set the corret DOI status.",
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.intValue() == doiRow.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.equals(doiRow.getStatus()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegister_reserved_DOI()
|
||||
throws SQLException, SQLException, AuthorizeException, IOException,
|
||||
IdentifierException
|
||||
IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi = this.createDOI(item, DOIIdentifierProvider.IS_RESERVED, true);
|
||||
|
||||
provider.register(context, item, doi);
|
||||
|
||||
TableRow doiRow = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow = doiService.findByDoi(context, doi.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow);
|
||||
|
||||
assertTrue("Registration of DOI did not set the corret DOI status.",
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.intValue() == doiRow.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.equals(doiRow.getStatus()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreate_and_Register_DOI()
|
||||
throws SQLException, SQLException, AuthorizeException, IOException,
|
||||
IdentifierException
|
||||
IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
|
||||
@@ -618,20 +607,19 @@ public class DOIIdentifierProviderTest
|
||||
|
||||
// we want the created DOI to be returned in the following format:
|
||||
// doi:10.<prefix>/<suffix>.
|
||||
String formated_doi = DOI.formatIdentifier(doi);
|
||||
String formated_doi = doiService.formatIdentifier(doi);
|
||||
assertTrue("DOI was not in the expected format!", doi.equals(formated_doi));
|
||||
|
||||
TableRow doiRow = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow = doiService.findByDoi(context, doi.substring(DOI.SCHEME.length()));
|
||||
assertNotNull("Created DOI was not stored in database.", doiRow);
|
||||
|
||||
assertTrue("Registration of DOI did not set the corret DOI status.",
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.intValue() == doiRow.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_REGISTERED.equals(doiRow.getStatus()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDelete_specified_DOI()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, WorkflowException, IllegalAccessException
|
||||
{
|
||||
Item item = newItem();
|
||||
String doi1 = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, true);
|
||||
@@ -643,19 +631,19 @@ public class DOIIdentifierProviderTest
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
// assure that the right one was removed
|
||||
Metadatum[] metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
boolean foundDOI1 = false;
|
||||
boolean foundDOI2 = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi1)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi1)))
|
||||
{
|
||||
foundDOI1 = true;
|
||||
}
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi2)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi2)))
|
||||
{
|
||||
foundDOI2 = true;
|
||||
}
|
||||
@@ -663,23 +651,20 @@ public class DOIIdentifierProviderTest
|
||||
assertFalse("Cannot remove DOI from item metadata.", foundDOI1);
|
||||
assertTrue("Removed wrong DOI from item metadata.", foundDOI2);
|
||||
|
||||
TableRow doiRow1 = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi1.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow1 = doiService.findByDoi(context, doi1.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow1);
|
||||
assertTrue("Status of deleted DOI was not set correctly.",
|
||||
DOIIdentifierProvider.TO_BE_DELETED.intValue() == doiRow1.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_DELETED.equals(doiRow1.getStatus()));
|
||||
|
||||
TableRow doiRow2 = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi2.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow2 = doiService.findByDoi(context, doi2.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow2);
|
||||
assertTrue("While deleting a DOI the status of another changed.",
|
||||
DOIIdentifierProvider.IS_REGISTERED.intValue() == doiRow2.getIntColumn("status"));
|
||||
DOIIdentifierProvider.IS_REGISTERED.equals(doiRow2.getStatus()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDelete_all_DOIs()
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException
|
||||
{
|
||||
throws SQLException, AuthorizeException, IOException, IdentifierException, IllegalAccessException, WorkflowException {
|
||||
Item item = newItem();
|
||||
String doi1 = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, true);
|
||||
String doi2 = this.createDOI(item, DOIIdentifierProvider.IS_REGISTERED, true);
|
||||
@@ -690,19 +675,19 @@ public class DOIIdentifierProviderTest
|
||||
context.restoreAuthSystemState();
|
||||
|
||||
// assure that the right one was removed
|
||||
Metadatum[] metadata = item.getMetadata(DOIIdentifierProvider.MD_SCHEMA,
|
||||
List<MetadataValue> metadata = itemService.getMetadata(item, DOIIdentifierProvider.MD_SCHEMA,
|
||||
DOIIdentifierProvider.DOI_ELEMENT,
|
||||
DOIIdentifierProvider.DOI_QUALIFIER,
|
||||
null);
|
||||
boolean foundDOI1 = false;
|
||||
boolean foundDOI2 = false;
|
||||
for (Metadatum id : metadata)
|
||||
for (MetadataValue id : metadata)
|
||||
{
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi1)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi1)))
|
||||
{
|
||||
foundDOI1 = true;
|
||||
}
|
||||
if (id.value.equals(DOI.DOIToExternalForm(doi2)))
|
||||
if (id.getValue().equals(doiService.DOIToExternalForm(doi2)))
|
||||
{
|
||||
foundDOI2 = true;
|
||||
}
|
||||
@@ -710,17 +695,15 @@ public class DOIIdentifierProviderTest
|
||||
assertFalse("Cannot remove DOI from item metadata.", foundDOI1);
|
||||
assertFalse("Did not removed all DOIs from item metadata.", foundDOI2);
|
||||
|
||||
TableRow doiRow1 = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi1.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow1 = doiService.findByDoi(context, doi1.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow1);
|
||||
assertTrue("Status of deleted DOI was not set correctly.",
|
||||
DOIIdentifierProvider.TO_BE_DELETED.intValue() == doiRow1.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_DELETED.equals(doiRow1.getStatus()));
|
||||
|
||||
TableRow doiRow2 = DatabaseManager.findByUnique(context, "Doi", "doi",
|
||||
doi1.substring(DOI.SCHEME.length()));
|
||||
DOI doiRow2 = doiService.findByDoi(context, doi1.substring(DOI.SCHEME.length()));
|
||||
assumeNotNull(doiRow2);
|
||||
assertTrue("Did not set the status of all deleted DOIs as expected.",
|
||||
DOIIdentifierProvider.TO_BE_DELETED.intValue() == doiRow2.getIntColumn("status"));
|
||||
DOIIdentifierProvider.TO_BE_DELETED.equals(doiRow2.getStatus()));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user