у нас есть большой проект со старыми классами, в которых было
@GeneratePojoBuilder(intoPackage = "*.builder")
(из пакета net.karneim.pojobuilder).Мы заменили это на @Builder из Lombok, потому что мы думаем, что это более практично.
Есть ли какой-нибудь код, который заменяет все эти использования, когда это возможно? *
Если нет, я должен просто продолжитьс моими собственными попытками?Это как далеко я получил.Как вы уже догадались, у него много проблем:
private static String filepath = "...............";
public static void main(String[] args) {
String tmpFileName = "tmp.dat";
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(filepath));
bw = new BufferedWriter(new FileWriter(tmpFileName));
String line;
while ((line = br.readLine()) != null) {
line = workOnLine(line);
bw.write(line+"\n");
}
} catch (Exception e) {
return;
} finally {
try {
if(br != null)
br.close();
} catch (IOException e) {
//
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//
}
}
// Once everything is complete, delete old file..
File oldFile = new File(filepath);
oldFile.delete();
// And rename tmp file's name to old file name
File newFile = new File(tmpFileName);
newFile.renameTo(oldFile);
}
private static String workOnLine(String line) {
if (line.contains("Builder()")) {
int builderIndex = line.indexOf("Builder()");
String begin = line.substring(0, builderIndex);
if (begin.contains("new ")) {
int newIndex = begin.lastIndexOf("new ");
begin = begin.substring(0, newIndex) + begin.substring(newIndex + 4);
line = begin + ".builder" + line.substring(builderIndex + 7);
} else {
log.error("Builder with no new. Wtf ?");
}
}
if (line.contains(".with")) {
int withIndex = line.indexOf(".with");
String startChar = line.substring(withIndex + 5, withIndex + 6);
String replaceChar = startChar.toLowerCase();
line = line.substring(0, withIndex) + "." + replaceChar + line.substring(withIndex + 6);
}
return line;
}
Любые мысли по этому вопросу приветствуются.