Как я могу заменить все использование PojoBuilder на сборщики Lombok? - PullRequest
0 голосов
/ 25 сентября 2019

у нас есть большой проект со старыми классами, в которых было

@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;
}

Любые мысли по этому вопросу приветствуются.

...