private static int modCount = 1000;\r
private final static String authorSeparator = ", ";\r
private final static String lastAuthorSeparator = " & ";\r
+ private static String capitalWord = "\\p{javaUpperCase}\\p{javaLowerCase}*";\r
protected static String fWs = "\\s*";\r
protected static String oWs = "\\s+";\r
protected static String finalTeamSplitter = "(" + fWs + "(&)" + fWs + "|" + oWs + "et" + oWs + ")";\r
protected static String notFinalTeamSplitter = "((?:" + fWs + "," + fWs + ")(?!([A-Z][\\.]))"+"|" + finalTeamSplitter + ")";\r
- protected static String test = "(,\\s(?![A-Z][.|\\s|$]))|" + finalTeamSplitter ;\r
+ protected static String test = "(, \\s(?!([A-Z].|\\s|$))|,$)" ;\r
+ //protected static String test = "((,\\s("+capitalWord+")+)|(,($|,?!(\\s))))";\r
\r
\r
/* (non-Javadoc)\r
//Lastname A, Lastname B & Lastname\r
//Lastname A Lastname B & Lastname C\r
//Lastname, J & Lastname, L\r
- String[] teamMembers = refAuthor.split(test);\r
-\r
- String lastMember;\r
+ String[] firstTeamMembers = refAuthor.split(finalTeamSplitter);\r
+ String[] teamMembers = null;\r
+ String lastMember = null;\r
+ lastMember = firstTeamMembers[firstTeamMembers.length-1];\r
\r
+ if (firstTeamMembers.length == 2){\r
+ teamMembers = firstTeamMembers[0].split(test);\r
+ }\r
Person teamMember;\r
author = Team.NewInstance();\r
- if (teamMembers.length>1){\r
+ if (teamMembers != null){\r
for(String member:teamMembers){\r
if (!member.trim().equals("")){\r
teamMember = Person.NewInstance();\r
((Team)author).addTeamMember(teamMember);\r
}\r
}\r
+ teamMember = Person.NewInstance();\r
+ teamMember.setTitleCache(lastMember, true);\r
+ ((Team)author).addTeamMember(teamMember);\r
+\r
}else{\r
- author = Person.NewInstance();\r
- author.setTitleCache(refAuthor, true);\r
+ teamMembers = lastMember.split(test);\r
+ if (teamMembers.length >1){\r
+ for(String member:teamMembers){\r
+ if (!member.trim().equals("")){\r
+ teamMember = Person.NewInstance();\r
+ teamMember.setTitleCache(member, true);\r
+ ((Team)author).addTeamMember(teamMember);\r
+ }\r
+ }\r
+ }else{\r
+ author = Person.NewInstance();\r
+ author.setTitleCache(lastMember, true);\r
+ }\r
+\r
\r
}\r
author.getTitleCache();\r
private static final Logger logger = Logger.getLogger(FaunaEuropaeaVernacularNamesImport.class);
private HashMap<String, Reference> sourceMap = new HashMap<String, Reference>();
+ private Reference pesiProject = ReferenceFactory.newDatabase();
@Override
protected void doInvoke(FaunaEuropaeaImportState state) {
int limit = state.getConfig().getLimitSave();
+ pesiProject.setTitle("PESI");
if (state.getConfig().isDoVernacularNames()){
/* Taxon store for retrieving taxa from and saving taxa to CDM */
+ taxonBase.getClass().getSimpleName() + " using accepted Taxon for vernacular name");
continue;
}
-
taxonDescription = TaxonDescription.NewInstance();
+ addOriginalSource(taxonDescription, null, "CommonNameDefaultImport", pesiProject);
+
taxon.addDescription(taxonDescription);
taxonUuid = taxonBase.getUuid();
verName.setArea(NamedArea.NORTH_AMERICA());
}
verName.setCreated(null);
- addOriginalSource(verName, null, null, sourceMap.get(fauEuHelperVernacularName.getSource()));
+ if (fauEuHelperVernacularName.getSource() != null){
+ addOriginalSource(verName, null, null, sourceMap.get(fauEuHelperVernacularName.getSource()));
+ }
taxonDescription.addElement(verName);
}