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

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

Step 16 その3 (検索結果 表示)

検索結果を 表示する クラス

人材一覧 表示

class JinzaiListView {
    private int page = 0;
    private Repository<Jinzai> jinzaiRepository;
    private Repository<Gyoshu> gyoshuRepository;

    JinzaiListView(Repository<Jinzai> jinzaiRepository) {
        this.jinzaiRepository = jinzaiRepository;

        // 業種一覧を作成
        gyoshuRepository = new Repository<Gyoshu>();
        gyoshuRepository.select("gyoshu.txt", false, new Matcher(null), Gyoshu.class);
    }

    public void prev() {
        page--;
    }
    public void next() {
        page++;
    }

    public void display() {
        while (true) {
            if (page < 0) page = 0;
            int min = page * 10;
            int max = min  +  9;
            boolean find = false;

            System.out.println("検索結果一覧");

            int cnt = -1;
            String jinzaiStr;

            // 人材一覧 表示
            List<Jinzai> jinzaiList = jinzaiRepository.getList();
            for (Jinzai jinzai: jinzaiList) {
                cnt++;
                if (cnt < min) continue;
                if (cnt > max) break;

                find = true;

                System.out.print(jinzai.getID()); // 人材ID
                System.out.print("\t");
                System.out.print(jinzai.getName()); // 人材名
                System.out.print("\t");

                Gyoshu gyoshu = (Gyoshu)(gyoshuRepository.seek(jinzai.getGyoshuID()));
                if (gyoshu != null)
                    System.out.print(gyoshu.getName()); // 業種ID

                System.out.println();
            }
            if (find) break;

            System.out.println("人材情報はありません。");

            if (page < 1) break;

            System.out.println();
            page--;
        }
    }
}

稼働状況 一覧表示

class KadouListView {
    private Repository<Kadou> kadouRepository;

    KadouListView (Repository<Kadou> kadouRepository) {
        this.kadouRepository = kadouRepository;
    }
    public void display() {
        // 取引先一覧を作成
        Repository<Torihiki> torihikiRepository = new Repository<Torihiki>();
        torihikiRepository.select("torihiki.txt", false, new Matcher(null), Torihiki.class);

        // 稼働状況 表示
        List<Kadou> kadouList = kadouRepository.getList();
        for (Kadou kadou: kadouList) {
            System.out.print(kadou.getID()); // 稼働状況番号
            System.out.print("\t");
            System.out.print(kadou.getStartDate()); // 稼働開始日
            System.out.print("〜");
            System.out.print(kadou.getEndDate()); // 稼働終了日
            System.out.print("\t");

            Torihiki torihiki = (Torihiki)(torihikiRepository.seek(kadou.getTorihikiID()));
            if (torihiki != null)
                System.out.print(torihiki.getName()); // 取引先ID

            System.out.println();
        }
    }
}

人材 詳細表示

interface DataViewer {
    public boolean display(EntityBase entity);
}
class JinzaiDetailView implements DataViewer {
    private Repository<Gyoshu> gyoshuRepository;

    JinzaiDetailView() {
        // 業種一覧を作成
        gyoshuRepository = new Repository<Gyoshu>();
        gyoshuRepository.select("gyoshu.txt", false, new Matcher(null), Gyoshu.class);
    }

    public boolean display(EntityBase entity) {
        if (entity == null) {
            System.out.println("入力された人材情報は登録されていません。");
            return false;
        }
        Jinzai jinzai = (Jinzai)entity;

        System.out.println("人材ID : " + jinzai.getID());
        System.out.println("氏名 : " + jinzai.getName());
        System.out.println("郵便番号 : " + jinzai.getZip());
        System.out.println("住所 : " + jinzai.getAddress());
        System.out.println("電話番号 : " + jinzai.getTel());
        System.out.println("FAX番号 : " + jinzai.getFax());
        System.out.println("e-mailアドレス : " + jinzai.getEmail());
        System.out.println("生年月日 : " + jinzai.getBirthDate());
        System.out.println("性別 : " + jinzai.getSex());

        System.out.print("業種 : ");
        Gyoshu gyoshu = (Gyoshu)(gyoshuRepository.seek(jinzai.getGyoshuID()));
        if (gyoshu != null)
            System.out.println(gyoshu.getName());
        else
            System.out.println();

        System.out.println("経験年数 : " + jinzai.getNensu() + "年");
        System.out.println("最終学歴 : " + jinzai.getGakureki());
        System.out.println("希望単価 : " + jinzai.getTanka() + "円");

        return true;
    }
}

稼働状況 詳細表示

class KadouDetailView implements DataViewer {
    public boolean display(EntityBase entity) {
        if (entity == null) {
            return false;
        }
        Kadou kadou = (Kadou)entity;

        // 取引先一覧を作成
        Repository<Torihiki> torihikiRepository = new Repository<Torihiki>();
        torihikiRepository.select("torihiki.txt", false, new Matcher(null), Torihiki.class);
        Torihiki torihiki = (Torihiki)(torihikiRepository.seek(kadou.getTorihikiID()));

        System.out.println("稼働状況番号 : " + kadou.getID());

        System.out.print("取引先 : ");
        if (torihiki != null)
            System.out.println(torihiki.getName());
        else
            System.out.println();

        System.out.println("稼働開始日 : " + kadou.getStartDate());
        System.out.println("稼働終了日 : " + kadou.getEndDate());
        System.out.println("契約単価 : " + kadou.getKeiyakuTanka());

        return true;
    }
}