From 6c95904dd1c5c0d7ed123a6de3df1ea22f276559 Mon Sep 17 00:00:00 2001 From: Ben Leinfelder Date: Fri, 6 Nov 2015 19:24:15 +0000 Subject: [PATCH 1/9] making branch for 0.9.x datamanager library --- .project | 11 +++++++++++ pom.xml | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 .project diff --git a/.project b/.project new file mode 100644 index 00000000..aeade26c --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + eml + + + + + + + + diff --git a/pom.xml b/pom.xml index c2c7b55e..ae43e10d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.ecoinformatics.eml datamanager jar - 0.9.0-SNAPSHOT + 0.9.0 datamanager http://maven.apache.org @@ -35,7 +35,7 @@ edu.ucsb.nceas utilities - 2.0.0-SNAPSHOT + 2.0.0 From 2c674983242d8111561c7e723b803483f7184d79 Mon Sep 17 00:00:00 2001 From: Jing Tao Date: Thu, 16 May 2019 10:33:07 -0700 Subject: [PATCH 2/9] Add the class fields language, abstract and keywords. --- .../datamanager/parser/DataPackage.java | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java index 78b7e642..2a4744fa 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java @@ -101,7 +101,9 @@ public class DataPackage private String system = null; private String title = null; private List creators = null; - + private String language = null; + private List keywords = null; + private String absctrac = null; /* * Constructors @@ -117,7 +119,7 @@ public DataPackage(String packageId) this.packageId = packageId; this.qualityReport = new QualityReport(this); this.creators = new ArrayList(); - + this.keywords = new ArrayList (); qualityCheckPackageId(packageId); } @@ -252,6 +254,56 @@ public Entity getEntity(String name) { return null; } + /** + * Get the language used in this eml document + * @return the language + */ + public String getLanguage() { + return language; + } + + /** + * Set the language description + * @param language + */ + public void setLanguage(String language) { + this.language = language; + } + + + /** + * Get the list of keywords in this eml document + * @return + */ + public List getKeywords() { + return keywords; + } + + /** + * Set the keywords list + * @param keywords + */ + public void setKeywords(List keywords) { + this.keywords = keywords; + } + + /** + * Get the abstract of this eml document + * @return the abstract + */ + public String getAbsctrac() { + return absctrac; + } + + /** + * Set the abstract + * @param absctrac + */ + public void setAbsctrac(String absctrac) { + this.absctrac = absctrac; + } + + /** * Determine whether the data package contains From 572441feea47d97e7c1e6e6f4ad478aa237374d2 Mon Sep 17 00:00:00 2001 From: Jing Tao Date: Thu, 16 May 2019 12:00:36 -0700 Subject: [PATCH 3/9] Add the code to parse and store keywords, abstract and language. --- .../generic/GenericDataPackageParser.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java index 421b3ce2..5aec8d1d 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java @@ -118,6 +118,8 @@ public class GenericDataPackageParser implements DataPackageParserInterface protected String datasetTitlePath = null; protected String datasetCreatorPath = null; protected String datasetAbstractPath = null; + protected String datasetLanguagePath = null; + protected String datasetKeywordPath =null; protected String entityAccessPath = null; //private Hashtable entityHash = new Hashtable(); @@ -227,6 +229,8 @@ private void initDefaultXPaths() { datasetTitlePath = "//dataset/title"; datasetCreatorPath = "//dataset/creator"; datasetAbstractPath = "//dataset/abstract"; + datasetLanguagePath = "//dataset/language"; + datasetKeywordPath = "//dataset/keywordSet/keyword"; entityAccessPath = "physical/distribution/access"; } @@ -391,9 +395,31 @@ private void parseDocument(Document doc) throws Exception } emlDataPackage.setPubDate(pubDate); - // Parse the dataset abstract text + // Store the language + String language = null; + Node languageNode = xpathapi.selectSingleNode(doc, datasetLanguagePath); + if (languageNode != null) { + language = languageNode.getTextContent().trim(); + } + emlDataPackage.setLanguage(language); + + // Parse and store the dataset abstract text NodeList datasetAbstractNodeList = xpathapi.selectNodeList(doc, datasetAbstractPath); parseDatasetAbstract(datasetAbstractNodeList); + + // Store the keywords + NodeList datasetKeywordNodeList = xpathapi.selectNodeList(doc, datasetKeywordPath); + if (datasetKeywordNodeList != null) { + for (int i=0; i Date: Thu, 16 May 2019 14:33:46 -0700 Subject: [PATCH 4/9] Add test code for new fields. --- .../parser/generic/Eml200DataPackageParserTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/java/org/ecoinformatics/datamanager/parser/generic/Eml200DataPackageParserTest.java b/src/test/java/org/ecoinformatics/datamanager/parser/generic/Eml200DataPackageParserTest.java index f4cf5027..099da820 100644 --- a/src/test/java/org/ecoinformatics/datamanager/parser/generic/Eml200DataPackageParserTest.java +++ b/src/test/java/org/ecoinformatics/datamanager/parser/generic/Eml200DataPackageParserTest.java @@ -2,6 +2,7 @@ import java.io.File; import java.io.FileInputStream; +import java.util.List; import junit.framework.Test; import junit.framework.TestCase; @@ -280,6 +281,13 @@ public void testParse() throws Exception String[] missingValue = att3.getMissingValueCode(); assertEquals(missingValue, null); + + List keywords = dataPackage.getKeywords(); + assertTrue(keywords.get(0).equals("Old field grassland")); + assertTrue(keywords.get(1).equals("biomass")); + assertTrue(keywords.get(2).equals("productivity")); + assertTrue(keywords.get(3).equals("species-area")); + assertTrue(keywords.get(4).equals("species richness")); } } From a1bf8f53905113bc0f4fca26f9f9ca7543c30844 Mon Sep 17 00:00:00 2001 From: Jing Tao Date: Thu, 16 May 2019 14:51:53 -0700 Subject: [PATCH 5/9] Bump the version to 0.9.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ae43e10d..4fca21e7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.ecoinformatics.eml datamanager jar - 0.9.0 + 0.9.1 datamanager http://maven.apache.org From b706d7d41c6c66553a7bbabe8cbfc75a130efd57 Mon Sep 17 00:00:00 2001 From: Jing Tao Date: Mon, 20 May 2019 13:51:42 -0700 Subject: [PATCH 6/9] Add the code to parse the userId in the party element. --- .../datamanager/parser/Party.java | 25 +++++- .../datamanager/parser/UserId.java | 85 +++++++++++++++++++ .../generic/GenericDataPackageParser.java | 21 ++++- 3 files changed, 127 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/ecoinformatics/datamanager/parser/UserId.java diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/Party.java b/src/main/java/org/ecoinformatics/datamanager/parser/Party.java index bbc27f6e..8ccb5566 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/Party.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/Party.java @@ -32,6 +32,7 @@ package org.ecoinformatics.datamanager.parser; +import java.util.ArrayList; import java.util.List; /** @@ -47,6 +48,7 @@ public class Party { private String surName; private List givenNames; private String organization; + private List userIdList = new ArrayList(); /** @@ -87,6 +89,27 @@ public String getOrganization() { public void setOrganization(String organization) { this.organization = organization; } + + + public List getUserIdList() { + return userIdList; + } + + + public void setUserIdList(List userIdList) { + this.userIdList = userIdList; + } - + /** + * Add a given userId object to the list + * @param userId + */ + public void addUserId(UserId userId) { + if(userId != null) { + if(this.userIdList == null) { + this.userIdList = new ArrayList(); + } + this.userIdList.add(userId); + } + } } \ No newline at end of file diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/UserId.java b/src/main/java/org/ecoinformatics/datamanager/parser/UserId.java new file mode 100644 index 00000000..505ffc49 --- /dev/null +++ b/src/main/java/org/ecoinformatics/datamanager/parser/UserId.java @@ -0,0 +1,85 @@ +/** + * '$RCSfile: UserId.java,v $' + * + * '$Author$' + * '$Date$' + * '$Revision$' + * + * For Details: http://kepler.ecoinformatics.org + * + * Copyright (c) 2019 The Regents of the University of California. + * All rights reserved. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY + * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + * PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY + * OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, + * UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ +package org.ecoinformatics.datamanager.parser; + + +/** + * This object represent the userId - part of the party. + * It has a value and attribute - directory. + * @author tao + * + */ +public class UserId { + + private String value = null; + private String directory = null; + + /** + * Default constructor + */ + public UserId() { + + } + + /** + * Get the value of the user id + * @return the value + */ + public String getValue() { + return value; + } + + /** + * Set the value of the user id + * @param value + */ + public void setValue(String value) { + this.value = value; + } + + /** + * Get the value of the directory + * @return + */ + public String getDirectory() { + return directory; + } + + /** + * Set the value of the directory + * @param directory + */ + public void setDirectory(String directory) { + this.directory = directory; + } + +} diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java index 5aec8d1d..c94f5a0b 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java @@ -65,7 +65,7 @@ import org.ecoinformatics.datamanager.parser.TextDelimitedDataFormat; import org.ecoinformatics.datamanager.parser.TextDomain; import org.ecoinformatics.datamanager.parser.TextWidthFixedDataFormat; - +import org.ecoinformatics.datamanager.parser.UserId; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; @@ -381,8 +381,23 @@ private void parseDocument(Document doc) throws Exception organization = orgNode.getTextContent(); } - Party party = new Party(surName, givenNames, organization); - emlDataPackage.getCreators().add(party ); + Party party = new Party(surName, givenNames, organization); + + NodeList userIds = xpathapi.selectNodeList(datasetCreatorNode, "userId"); + if(userIds!=null) { + for(int j=0; j Date: Wed, 29 May 2019 16:20:39 -0700 Subject: [PATCH 7/9] Add the publisher and pubDate to the parser. --- .../datamanager/parser/DataPackage.java | 43 +++++-- .../datamanager/parser/Party.java | 19 +++ .../generic/GenericDataPackageParser.java | 113 +++++++++++------- 3 files changed, 124 insertions(+), 51 deletions(-) diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java index 2a4744fa..fde8c748 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java @@ -103,7 +103,9 @@ public class DataPackage private List creators = null; private String language = null; private List keywords = null; - private String absctrac = null; + private String absctract = null; + private Party publisher = null; + /* * Constructors @@ -291,16 +293,16 @@ public void setKeywords(List keywords) { * Get the abstract of this eml document * @return the abstract */ - public String getAbsctrac() { - return absctrac; + public String getAbsctract() { + return absctract; } /** * Set the abstract * @param absctrac */ - public void setAbsctrac(String absctrac) { - this.absctrac = absctrac; + public void setAbsctract(String absctract) { + this.absctract = absctract; } @@ -1095,6 +1097,14 @@ public void setPubDate(String pubDate) { } } + /** + * Get the publication date of this package + * @return + */ + public String getPubDate() { + return this.pubDate; + } + /** * Sets the value of the 'system' to the specified String @@ -1155,12 +1165,29 @@ public String getTitle() { public List getCreators() { return creators; -} + } -public void setCreators(List creators) { + public void setCreators(List creators) { this.creators = creators; -} + } + + /** + * Get the publisher of this package + * @return + */ + public Party getPublisher() { + return publisher; + } + + /** + * Set the publisher of this package + * @param publisher + */ + public void setPublisher(Party publisher) { + this.publisher = publisher; + } + /** diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/Party.java b/src/main/java/org/ecoinformatics/datamanager/parser/Party.java index 8ccb5566..1af60a08 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/Party.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/Party.java @@ -48,6 +48,7 @@ public class Party { private String surName; private List givenNames; private String organization; + private String positionName; private List userIdList = new ArrayList(); @@ -112,4 +113,22 @@ public void addUserId(UserId userId) { this.userIdList.add(userId); } } + + /** + * Get the position name of this party + * @return + */ + public String getPositionName() { + return positionName; + } + + /** + * Set the position name of this party + * @param positionName + */ + public void setPositionName(String positionName) { + this.positionName = positionName; + } + + } \ No newline at end of file diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java index c94f5a0b..33a33cfa 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java @@ -107,6 +107,7 @@ public class GenericDataPackageParser implements DataPackageParserInterface // previously these were constants, now member variables with defaults protected String packageIdPath = null; protected String pubDatePath = null; + protected String publisherPath = null; protected String tableEntityPath = null; protected String spatialRasterEntityPath = null; protected String spatialVectorEntityPath = null; @@ -219,6 +220,7 @@ private void initDefaultXPaths() { // sets the default path values for documents packageIdPath = "//*/@packageId"; pubDatePath = "//dataset/pubDate"; + publisherPath = "//dataset/publisher"; tableEntityPath = "//dataset/dataTable"; spatialRasterEntityPath = "//dataset/spatialRaster"; spatialVectorEntityPath = "//dataset/spatialVector"; @@ -358,48 +360,11 @@ private void parseDocument(Document doc) throws Exception if (datasetCreatorNodeList != null) { for (int i = 0; i < datasetCreatorNodeList.getLength(); i++) { Node datasetCreatorNode = datasetCreatorNodeList.item(i); - - String surName = null; - List givenNames = null; - String organization = null; - - Node surNameNode = xpathapi.selectSingleNode(datasetCreatorNode, "individualName/surName"); - if (surNameNode != null) { - surName = surNameNode.getTextContent(); + Party party = transformPartyNode(xpathapi, datasetCreatorNode); + if(party != null) { + emlDataPackage.getCreators().add(party ); } - - Node givenNameNode = xpathapi.selectSingleNode(datasetCreatorNode, "individualName/givenName"); - if (givenNameNode != null) { - if (givenNames == null) { - givenNames = new ArrayList(); - } - givenNames.add(givenNameNode.getTextContent()); - } - - Node orgNode = xpathapi.selectSingleNode(datasetCreatorNode, "organizationName"); - if (orgNode != null) { - organization = orgNode.getTextContent(); - } - - Party party = new Party(surName, givenNames, organization); - - NodeList userIds = xpathapi.selectNodeList(datasetCreatorNode, "userId"); - if(userIds!=null) { - for(int j=0; j givenNames = null; + String organization = null; + String positionName = null; + Node surNameNode = xpathapi.selectSingleNode(partyNode, "individualName/surName"); + if (surNameNode != null) { + surName = surNameNode.getTextContent(); + } + + Node givenNameNode = xpathapi.selectSingleNode(partyNode, "individualName/givenName"); + if (givenNameNode != null) { + if (givenNames == null) { + givenNames = new ArrayList(); + } + givenNames.add(givenNameNode.getTextContent()); + } + + Node orgNode = xpathapi.selectSingleNode(partyNode, "organizationName"); + if (orgNode != null) { + organization = orgNode.getTextContent(); + } + + Party party = new Party(surName, givenNames, organization); + + Node positionNameNode = xpathapi.selectSingleNode(partyNode, "positionName"); + if(positionNameNode != null) { + positionName = positionNameNode.getTextContent(); + party.setPositionName(positionName); + } + + NodeList userIds = xpathapi.selectNodeList(partyNode, "userId"); + if(userIds!=null) { + for(int j=0; j Date: Wed, 29 May 2019 16:29:22 -0700 Subject: [PATCH 8/9] Bump the version to 0.9.2. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4fca21e7..41b72636 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.ecoinformatics.eml datamanager jar - 0.9.1 + 0.9.2 datamanager http://maven.apache.org From 8d8d35cfc35b385fb938f2f11200f84a06112b51 Mon Sep 17 00:00:00 2001 From: Jing Tao Date: Mon, 3 Jun 2019 10:09:58 -0700 Subject: [PATCH 9/9] Fixed a typo on the word "abstract". The abstract is a keyword on the java code, somehow the editor auto changed the word. --- .../ecoinformatics/datamanager/parser/DataPackage.java | 10 +++++----- .../parser/generic/GenericDataPackageParser.java | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java index fde8c748..984109b1 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/DataPackage.java @@ -103,7 +103,7 @@ public class DataPackage private List creators = null; private String language = null; private List keywords = null; - private String absctract = null; + private String abstract_str = null; private Party publisher = null; @@ -293,16 +293,16 @@ public void setKeywords(List keywords) { * Get the abstract of this eml document * @return the abstract */ - public String getAbsctract() { - return absctract; + public String getAbstract() { + return abstract_str; } /** * Set the abstract * @param absctrac */ - public void setAbsctract(String absctract) { - this.absctract = absctract; + public void setAbstract(String abstract_str) { + this.abstract_str = abstract_str; } diff --git a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java index 33a33cfa..33067746 100644 --- a/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java +++ b/src/main/java/org/ecoinformatics/datamanager/parser/generic/GenericDataPackageParser.java @@ -1887,7 +1887,7 @@ private void parseDatasetAbstract(NodeList datasetAbstractNodeList) { stringBuffer.append(" " + paraText); } String abstractText = stringBuffer.toString(); - emlDataPackage.setAbsctract(abstractText); + emlDataPackage.setAbstract(abstractText); emlDataPackage.checkDatasetAbstract(abstractText); } }