「Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート」に触発されて

ryoasai さんの「Javaプログラミング能力認定試験課題プログラムのリファクタリングレポート」に触発されたので、
Java の勉強がてら、同様なプログラムを作成してみる。

Step 16 その6 (人材削除)

処理フローを 制御する クラス (人材削除)

人材ID を 入力

class JinzaiDelete extends AbstractDispatcher {
    // 選択肢 を 表示
    @Override
    protected boolean displayMenu() {
        System.out.println();
        System.out.println("人材IDを入力してください。");
        System.out.print("[人材ID, E]>");
        return true;
    }

    // 選択した処理 を 実行
    @Override
    protected String runFunction(String inputCode) {
        // 人材一覧 取得
        Repository<Jinzai> jinzaiRepository = new Repository<Jinzai>();
        jinzaiRepository.select("jinzai.txt", false, new Matcher(null), Jinzai.class);
        Jinzai jinzai = (Jinzai)(jinzaiRepository.seek(inputCode));

        if (jinzai == null) {
            System.out.println();
            System.out.println("入力された人材情報は登録されていません。");
            return ""; // 「人材IDを入力してください」に 戻る
        }

        // 内容確認後 削除処理
        DataViewer dataViewer = new JinzaiDetailView();
        DeleteConfirm<Jinzai> ad = new DeleteConfirm<Jinzai>();
        String s = ad.run(reader, Jinzai.class, jinzai, dataViewer, "jinzai.txt", new JinzaiMatcher(jinzai));
        if (s == null) return "E";

        // "N" なら 人材IDを入力
        if (s.equals("N")) return "";

        return s;
    }
}