package org.nextprot.api.commons.utils;
import com.google.common.base.Preconditions;
/**
* Format author name for publication
*
* Created by fnikitin on 31/08/15.
*/
public class AuthorNameFormatter {
public String formatForenameInitials(String forename) {
return formatForenameInitials(forename, null);
}
public String formatForenameInitials(String forename, String suffix) {
Preconditions.checkNotNull(forename);
StringBuilder sb = new StringBuilder();
// split names
for (String name : forename.split("\\s")) {
// composed name
if (name.contains("-")) {
String[] composedName = name.split("[-]");
for (int i=0 ; i<composedName.length ; i++) {
if (!composedName[i].isEmpty()) {
sb.append(composedName[i].charAt(0));
sb.append(".");
}
sb.append("-");
}
sb.delete(sb.length()-1, sb.length());
}
// standard name
else if (name.length()>0) {
sb.append(name.charAt(0));
sb.append('.');
}
}
if (suffix != null && !suffix.isEmpty())
sb.append(" ").append(formatSuffix(suffix));
return sb.toString();
}
public String formatSuffix(String suffix) {
switch (suffix) {
case "I":
case "1st":
return "I";
case "2nd":
return "II";
case "3rd":
return "III";
case "4th":
return "IV";
case "V":
case "5th":
return "V";
case "6th":
return "VI";
case "Filho":
case "Jr":
return "Jr.";
case "Sr":
return "Sr.";
}
return suffix;
}
}