package org.rosenvold.spring.convention.interfacemappers;
/**
* @author Kristian Rosenvold
*/
public class PackageManipulator {
private final String find;
private final String replace;
private final String appendAtEnd;
private PackageManipulator(String find, String replace, String appendAtEnd) {
this.find = find;
this.replace = replace;
this.appendAtEnd = appendAtEnd;
}
public static PackageManipulator createFindReplaceWithAppend(String find, String replace, String appendAtEnd) {
return new PackageManipulator(find, replace, appendAtEnd);
}
public static PackageManipulator createFindReplace(String find, String replace) {
return new PackageManipulator(find, replace, null);
}
public static PackageManipulator createApppend(String appendAtEnd) {
return new PackageManipulator(null, null, appendAtEnd);
}
public String getRemappedPackageName( String name){
StringBuilder result = new StringBuilder();
int i;
if ( find != null && (i = name.indexOf( find)) >= 0){
result.append(name.substring( 0, i));
result.append(replace);
result.append( name.substring( i + find.length()));
} else {
result.append( name);
}
if (appendAtEnd == null)
return result.toString();
final int dot = result.lastIndexOf(".");
if (dot >= 0){
result.insert( dot + 1, appendAtEnd + ".");
}
return result.toString();
}
}