Project

General

Profile

« Previous | Next » 

Revision 71614d18

Added by Katja Luther over 7 years ago

fix #5893: fauna europaea reference import with more atomized data

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/faunaEuropaea/FaunaEuropaeaAuthorImport.java
39 39
	private static int modCount = 1000;
40 40
	private final static String authorSeparator = ", ";
41 41
	private final static String lastAuthorSeparator = " & ";
42
	 protected static String fWs = "\\s*";
43
	 protected static String oWs = "\\s+";
44
	 protected static String finalTeamSplitter = "(" + fWs + "(&)" + fWs + "|" + oWs + "et" + oWs + ")";
45
	protected static String notFinalTeamSplitter = "((?:" + fWs + "," + fWs + ")(?!([A-Z][\\.]))"+"|" + finalTeamSplitter + ")";
46
	protected static String test = "(,\\s(?![A-Z][.|\\s|$]))|" + finalTeamSplitter ;
42 47

  
43 48

  
44 49
	/* (non-Javadoc)
......
199 204
        return author;
200 205
	}
201 206

  
207
    /**
208
     * @param refAuthor
209
     * @return
210
     */
211
    public static TeamOrPersonBase<?> parseNomAuthorString(String refAuthor) {
212
        TeamOrPersonBase<?> author = null;
213
        //possible strings: Lastname, A., Lastname B. & Lastname C.
214
        //Lastname A, Lastname B & Lastname
215
        //Lastname A Lastname B & Lastname C
216
        String[] teamMembers = refAuthor.split(test);
217

  
218
        String lastMember;
219

  
220
        Person teamMember;
221
        author = Team.NewInstance();
222
        if (teamMembers.length>1){
223
            for(String member:teamMembers){
224
                if (!member.trim().equals("")){
225
                    teamMember = Person.NewInstance();
226
                    teamMember.setTitleCache(member, true);
227
                   ((Team)author).addTeamMember(teamMember);
228
                }
229
            }
230
        }else{
231
            author = Person.NewInstance();
232
            author.setTitleCache(refAuthor, true);
233

  
234
        }
235
        author.getTitleCache();
236
        return author;
237
    }
238

  
202 239
}

Also available in: Unified diff