Pass the name to parse as parameter to the parse method
Project: http://git-wip-us.apache.org/repos/asf/commons-text/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-text/commit/df7e7a7b Tree: http://git-wip-us.apache.org/repos/asf/commons-text/tree/df7e7a7b Diff: http://git-wip-us.apache.org/repos/asf/commons-text/diff/df7e7a7b Branch: refs/heads/master Commit: df7e7a7b0aba73a1bf09c41dbd32e913252a8707 Parents: aa29350 Author: Benedikt Ritter <brit...@apache.org> Authored: Sun Apr 19 16:02:55 2015 +0200 Committer: Benedikt Ritter <brit...@apache.org> Committed: Sun Apr 19 16:02:55 2015 +0200 ---------------------------------------------------------------------- .../commons/text/names/HumanNameParser.java | 52 ++++++-------------- .../commons/text/names/HumanNameParserTest.java | 4 +- 2 files changed, 16 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-text/blob/df7e7a7b/src/main/java/org/apache/commons/text/names/HumanNameParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/text/names/HumanNameParser.java b/src/main/java/org/apache/commons/text/names/HumanNameParser.java index 5088bba..bf8f9ed 100644 --- a/src/main/java/org/apache/commons/text/names/HumanNameParser.java +++ b/src/main/java/org/apache/commons/text/names/HumanNameParser.java @@ -65,10 +65,6 @@ import org.apache.commons.lang3.StringUtils; public class HumanNameParser { /** - * Name parsed. - */ - private Name name; - /** * Leading init part. */ private String leadingInit; @@ -103,21 +99,8 @@ public class HumanNameParser { /** * Creates a parser given a string name. - * - * @param name string name - */ - public HumanNameParser(String name) { - this(new Name(name)); - } - - /** - * Creates a parser given a {@code Name} object. - * - * @param name {@code Name} */ - public HumanNameParser(Name name) { - this.name = name; - + public HumanNameParser() { this.leadingInit = ""; this.first = ""; this.nickname = ""; @@ -125,9 +108,9 @@ public class HumanNameParser { this.last = ""; this.suffix = ""; - this.suffixes = Arrays.asList(new String[] { + this.suffixes = Arrays.asList(new String[]{ "esq", "esquire", "jr", - "sr", "2", "ii", "iii", "iv" }); + "sr", "2", "ii", "iii", "iv"}); this.prefixes = Arrays .asList(new String[] { "bar", "ben", "bin", "da", "dal", @@ -137,15 +120,6 @@ public class HumanNameParser { } /** - * Gets the {@code Name} object. - * - * @return the {@code Name} object - */ - public Name getName() { - return name; - } - - /** * Gets the leading init part of the name. * * @return the leading init part of the name @@ -220,9 +194,11 @@ public class HumanNameParser { /** * Consumes the string and creates the name parts. * + * @param nameStr the name to parse. * @throws NameParseException if the parser fails to retrieve the name parts */ - public void parse() { + public void parse(String nameStr) { + Name name = new Name(nameStr); String suffixes = StringUtils.join(this.suffixes, "\\.*|") + "\\.*"; String prefixes = StringUtils.join(this.prefixes, " |") + " "; @@ -238,28 +214,28 @@ public class HumanNameParser { String firstRegex = "(?i)^([^ ]+)"; // get nickname, if there is one - this.nickname = this.name.chopWithRegex(nicknamesRegex, 2); + this.nickname = name.chopWithRegex(nicknamesRegex, 2); // get suffix, if there is one - this.suffix = this.name.chopWithRegex(suffixRegex, 1); + this.suffix = name.chopWithRegex(suffixRegex, 1); // flip the before-comma and after-comma parts of the name - this.name.flip(","); + name.flip(","); // get the last name - this.last = this.name.chopWithRegex(lastRegex, 0); + this.last = name.chopWithRegex(lastRegex, 0); // get the first initial, if there is one - this.leadingInit = this.name.chopWithRegex(leadingInitRegex, 1); + this.leadingInit = name.chopWithRegex(leadingInitRegex, 1); // get the first name - this.first = this.name.chopWithRegex(firstRegex, 0); + this.first = name.chopWithRegex(firstRegex, 0); if (StringUtils.isBlank(this.first)) { - throw new NameParseException("Couldn't find a first name in '{" + this.name.getStr() + "}'"); + throw new NameParseException("Couldn't find a first name in '{" + name.getStr() + "}'"); } // if anything's left, that's the middle name - this.middle = this.name.getStr(); + this.middle = name.getStr(); } } http://git-wip-us.apache.org/repos/asf/commons-text/blob/df7e7a7b/src/test/java/org/apache/commons/text/names/HumanNameParserTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/text/names/HumanNameParserTest.java b/src/test/java/org/apache/commons/text/names/HumanNameParserTest.java index 5ff7805..478d19c 100644 --- a/src/test/java/org/apache/commons/text/names/HumanNameParserTest.java +++ b/src/test/java/org/apache/commons/text/names/HumanNameParserTest.java @@ -64,8 +64,8 @@ public class HumanNameParserTest { * @param record a CSVRecord representing one record in the input file. */ private void validateRecord(CSVRecord record) { - HumanNameParser parser = new HumanNameParser(record.get(Colums.Name)); - parser.parse(); + HumanNameParser parser = new HumanNameParser(); + parser.parse(record.get(Colums.Name)); long recordNum = record.getRecordNumber(); assertThat("Wrong LeadingInit in record " + recordNum,