package org.genedb.web.mvc.model.types;
import org.apache.commons.lang.StringUtils;
public class SynonymType {
private String synonymName;
private String cvtName;
private boolean isCurrent;
public String getSynonymName() {
return synonymName;
}
public void setSynonymName(String synonymName) {
this.synonymName = synonymName;
}
public String getCvtName() {
return cvtName;
}
public void setCvtName(String cvtName) {
this.cvtName = cvtName;
}
public boolean isCurrent() {
return isCurrent;
}
public void setCurrent(boolean isCurrent) {
this.isCurrent = isCurrent;
}
/**
* Re-format the synonym type name
* @param rawName
* @return
*/
private String formatSynonymTypeName(String rawName){
char formattedName[] = rawName.toCharArray();
for(int i=0; i<formattedName.length; ++i){
//Replace underscores with spaces
if (formattedName[i]=='_'){
formattedName[i] = ' ';
//Replace first char lowercase to a uppercase char
}else if(i==0 && Character.isLowerCase(formattedName[i])){
formattedName[i] = Character.toUpperCase(formattedName[i]);
//Replace any occurrence of a lowercase char preceeded a space with a upper case char
}else if(i>0 && formattedName[i-1]==' ' && Character.isLowerCase(formattedName[i])){
formattedName[i] = Character.toUpperCase(formattedName[i]);
}
}
return String.valueOf(formattedName).trim();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("(");
sb.append("'");
sb.append(formatSynonymTypeName(formatStr(cvtName)));
sb.append("',");
sb.append("'");
sb.append(formatStr(synonymName));
sb.append("',");
sb.append(isCurrent);
sb.append(")");
return sb.toString();
}
private String formatStr(String value){
if (StringUtils.isEmpty(value) || "null".equalsIgnoreCase(value)){
return "";
}
value = value.replaceAll(",", "\\\\\\\\,");
value = value.replaceAll("\\(", "\\\\\\\\(");
value = value.replaceAll("\\)", "\\\\\\\\)");
return value;
}
}