package net.sf.gazpachoquest.domain.support;
// See more at http://www.eclipse.org/eclipselink/documentation/2.4/moxy/advanced_concepts002.htm
/**
* @hidden
*/
public class XMLCustomizer implements org.eclipse.persistence.oxm.XMLNameTransformer {
// Use the unqualified class name as our root element name.
@Override
public String transformRootElementName(String name) {
String className = name.substring(name.lastIndexOf('.') + 1);
char[] characters = className.toCharArray();
StringBuilder builder = new StringBuilder();
builder.append(Character.toLowerCase(characters[0]));
for (int idx = 1; idx < characters.length; idx++) {
char character = characters[idx];
if (Character.isUpperCase(character)) {
builder.append('-');
builder.append(Character.toLowerCase(character));
} else {
builder.append(character);
}
}
return builder.toString();
}
// The same algorithm as root element name plus "Type" appended to the end.
@Override
public String transformTypeName(String name) {
return transformRootElementName(name) + "Type";
}
// The name will be lower-case with word breaks represented by '-'.
// Note: A capital letter in the original name represents the start of a new
// word.
@Override
public String transformElementName(String name) {
StringBuilder strBldr = new StringBuilder();
for (char character : name.toCharArray()) {
if (Character.isUpperCase(character)) {
strBldr.append('-');
strBldr.append(Character.toLowerCase(character));
} else {
strBldr.append(character);
}
}
return strBldr.toString();
}
// The original name converted to upper-case.
@Override
public String transformAttributeName(String name) {
return name.toUpperCase();
}
}