|
From: <chr...@us...> - 2019-02-04 03:23:08
|
Revision: 215
http://sourceforge.net/p/andspidclient/code/215
Author: chris-trapani
Date: 2019-02-04 03:23:05 +0000 (Mon, 04 Feb 2019)
Log Message:
-----------
EPR-5168 DOI minting fails when creator type is not set.
Modified Paths:
--------------
trunk/src/main/java/au/csiro/doiclient/business/Creator.java
trunk/src/main/java/au/csiro/doiclient/utils/ConverterUtils.java
trunk/src/test/java/au/csiro/doiclient/utils/TestDoiMetaDataGenerator.java
Modified: trunk/src/main/java/au/csiro/doiclient/business/Creator.java
===================================================================
--- trunk/src/main/java/au/csiro/doiclient/business/Creator.java 2018-12-11 04:34:18 UTC (rev 214)
+++ trunk/src/main/java/au/csiro/doiclient/business/Creator.java 2019-02-04 03:23:05 UTC (rev 215)
@@ -34,7 +34,7 @@
}
/**
- * Create Creator from first and last name.
+ * Create Creator from first and last name and name type.
*
* @param firstName
* The first name
@@ -49,6 +49,20 @@
this.lastName = lastName;
this.nameType = nameType;
}
+
+ /**
+ * Create Creator from first and last name.
+ *
+ * @param firstName
+ * The first name
+ * @param lastName
+ * The last name
+ */
+ public Creator(String firstName, String lastName)
+ {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
/**
* Get creator name, If not specified then last name + first name is returned.
Modified: trunk/src/main/java/au/csiro/doiclient/utils/ConverterUtils.java
===================================================================
--- trunk/src/main/java/au/csiro/doiclient/utils/ConverterUtils.java 2018-12-11 04:34:18 UTC (rev 214)
+++ trunk/src/main/java/au/csiro/doiclient/utils/ConverterUtils.java 2019-02-04 03:23:05 UTC (rev 215)
@@ -416,7 +416,7 @@
if (StringUtils.isNotEmpty(firstNode.getNameType()))
{
- updateAttribute(document, nameSpace, element, DoiMetaDataGenerator.NAME_TYPE, firstNode.getNameType());
+ baseElement.setAttribute(DoiMetaDataGenerator.NAME_TYPE, firstNode.getNameType());
}
setElementValueForParent(document, baseElement.getParentElement(), DoiMetaDataGenerator.GIVEN_NAME,
@@ -437,7 +437,10 @@
Creator creator = creators.get(counter);
childElement.setText(stripNonValidXMLCharacters(creator.getCreatorName()));
- childElement.setAttribute(DoiMetaDataGenerator.NAME_TYPE, creator.getNameType());
+ if (StringUtils.isNotEmpty(creator.getNameType()))
+ {
+ childElement.setAttribute(DoiMetaDataGenerator.NAME_TYPE, firstNode.getNameType());
+ }
setElementValueForParent(document, newCreatorNode, DoiMetaDataGenerator.GIVEN_NAME,
creator.getFirstName());
setElementValueForParent(document, newCreatorNode, DoiMetaDataGenerator.FAMILY_NAME,
Modified: trunk/src/test/java/au/csiro/doiclient/utils/TestDoiMetaDataGenerator.java
===================================================================
--- trunk/src/test/java/au/csiro/doiclient/utils/TestDoiMetaDataGenerator.java 2018-12-11 04:34:18 UTC (rev 214)
+++ trunk/src/test/java/au/csiro/doiclient/utils/TestDoiMetaDataGenerator.java 2019-02-04 03:23:05 UTC (rev 215)
@@ -78,13 +78,16 @@
/**
* Populates a DTO with values that will passed on the DOIMetaDataTemplate.
*
- * @param doiDTO
+ * @param withNameTypes
+ * for name type values to be populated pass in true
+ * @return doiDTO
* DTO with the values for the DOIMetaDataTemplate.
*/
- private DoiDTO populateDummydoiDTO()
+ private DoiDTO populateDummydoiDTO(boolean withNameTypes)
{
DoiDTO doiDTO = new DoiDTO();
- List<Creator> creators = createDummyCreators();
+ List<Creator> creators = withNameTypes? createDummyCreators(): createDummyCreatorsWithoutNameType();
+
// creators
doiDTO.setCreators(creators);
@@ -159,6 +162,22 @@
creators.add(new Creator("John", "Smith", "Personal"));
return creators;
}
+
+
+ private List<Creator> createDummyCreatorsWithoutNameType()
+ {
+ List<Creator> creators = new ArrayList<Creator>();
+ Creator c = new Creator();
+ c.setCreatorName("CSIRO");
+ creators.add(c);
+ creators.add(new Creator("David", "Phillips"));
+ creators.add(new Creator("Rahul", "Gandhi"));
+ creators.add(new Creator("Alison", "Chapman"));
+ creators.add(new Creator("Matt", "Green"));
+ creators.add(new Creator("Rahul", "Dravid"));
+ creators.add(new Creator("John", "Smith"));
+ return creators;
+ }
private DoiDTO populateDummydoiDTOMinimal()
@@ -194,8 +213,8 @@
*/
public final void testCreateDoiMetaDataXML() throws Exception
{
- String doiMetaDataXML = DoiMetaDataGenerator.createDoiMetaDataXML(populateDummydoiDTO());
- assertNotNull(doiMetaDataXML);
+ String doiMetaDataXML = DoiMetaDataGenerator.createDoiMetaDataXML(populateDummydoiDTO(true));
+ assertNotNull(doiMetaDataXML);
Document document = ConverterUtils.xmlToDoc(doiMetaDataXML);
XPath xPath = XPath.newInstance(CREATOR_NAME_XPATH);
@@ -205,6 +224,7 @@
assertEquals(7, nodes.size());
assertEquals("creatorName", ((Element) nodes.get(0)).getName());
+ assertEquals("Organizational",((Element) nodes.get(0)).getAttributeValue("nameType"));
assertEquals("CSIRO", ((Element) nodes.get(0)).getText());
assertEquals("Phillips, David", ((Element) nodes.get(1)).getText());
assertEquals("Gandhi, Rahul", ((Element) nodes.get(2)).getText());
@@ -212,6 +232,27 @@
assertEquals("Green, Matt", ((Element) nodes.get(4)).getText());
assertEquals("Dravid, Rahul", ((Element) nodes.get(5)).getText());
assertEquals("Smith, John", ((Element) nodes.get(6)).getText());
+
+ String doiMetaDataNoNameTypeXML = DoiMetaDataGenerator.createDoiMetaDataXML(populateDummydoiDTO(false));
+ assertNotNull(doiMetaDataNoNameTypeXML);
+ Document documentNoNameType = ConverterUtils.xmlToDoc(doiMetaDataNoNameTypeXML);
+ XPath xPathNoNameType = XPath.newInstance(CREATOR_NAME_XPATH);
+ xPathNoNameType.addNamespace("xsi", documentNoNameType.getRootElement().getNamespaceURI());
+ @SuppressWarnings("rawtypes")
+ List nodesx = xPathNoNameType.selectNodes(documentNoNameType);
+ assertEquals(7, nodesx.size());
+ assertEquals("Personal",((Element) nodesx.get(0)).getAttributeValue("nameType"));
+ assertEquals("creatorName", ((Element) nodesx.get(0)).getName());
+ assertEquals("CSIRO", ((Element) nodesx.get(0)).getText());
+
+ assertEquals("Phillips, David", ((Element) nodesx.get(1)).getText());
+ //nameType is from template even though its no set in creator object
+ assertEquals("Personal", ((Element) nodesx.get(1)).getAttributeValue("nameType"));
+ assertEquals("Gandhi, Rahul", ((Element) nodesx.get(2)).getText());
+ assertEquals("Chapman, Alison", ((Element) nodesx.get(3)).getText());
+ assertEquals("Green, Matt", ((Element) nodesx.get(4)).getText());
+ assertEquals("Dravid, Rahul", ((Element) nodesx.get(5)).getText());
+ assertEquals("Smith, John", ((Element) nodesx.get(6)).getText());
XPath resourceTypeXPath = XPath.newInstance(RESOURCETYPE_NAME_XPATH);
resourceTypeXPath.addNamespace("xsi", document.getRootElement().getNamespaceURI());
@@ -358,7 +399,7 @@
*/
public final void testCreateDoiMetaDataXMLWithInvalidData() throws Exception
{
- DoiDTO doiDTO = populateDummydoiDTO();
+ DoiDTO doiDTO = populateDummydoiDTO(true);
doiDTO.setPublicationYear("234");
try
{
@@ -371,7 +412,7 @@
assertEquals(ex.getMessage(),"It is most likely that one parameter in DoiDTO is invalid");
}
- doiDTO = populateDummydoiDTO();
+ doiDTO = populateDummydoiDTO(true);
doiDTO.setTitle(null);
try
@@ -385,7 +426,7 @@
assertEquals(ex.getMessage(),"It is most likely that one parameter in DoiDTO is invalid");
}
- doiDTO = populateDummydoiDTO();
+ doiDTO = populateDummydoiDTO(true);
doiDTO.getCreators().clear();
try
@@ -399,7 +440,7 @@
assertEquals(ex.getMessage(),"It is most likely that one parameter in DoiDTO is invalid");
}
- doiDTO = populateDummydoiDTO();
+ doiDTO = populateDummydoiDTO(true);
doiDTO.setPublisher(null);
try
@@ -423,7 +464,7 @@
{
String doi = "10.5072/08/4F5838BF44E5A";
- String doiMetaDataXML = DoiMetaDataGenerator.createDoiMetaDataXML(populateDummydoiDTO());
+ String doiMetaDataXML = DoiMetaDataGenerator.createDoiMetaDataXML(populateDummydoiDTO(true));
assertNotNull(doiMetaDataXML);
String updatedMetaData = DoiMetaDataGenerator.updateDOI(doi, doiMetaDataXML);
@@ -450,7 +491,7 @@
public final void testUpdate() throws Exception
{
- DoiDTO dto = populateDummydoiDTO();
+ DoiDTO dto = populateDummydoiDTO(true);
String doiMetaDataXML = DoiMetaDataGenerator.createDoiMetaDataXML(dto);
List<Creator> creators = dto.getCreators();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|