2015年7月19日日曜日

[メタデータエディタ]SubstanceRepository

サブスタンスのリポジトリクラス。

package domain;

import java.util.ArrayList;
import java.util.List;

import util.CopyUtil;
import dao.SubstanceDao;
import entity.Substance;

/**
 * サブスタンスリポジトリ
 */
public class SubstanceRepository {

    /** サブスタンスDAO */
    private SubstanceDao substanceDao = null;

    public SubstanceDao getSubstanceDao() {
        return substanceDao;
    }

    public void setSubstanceDao(SubstanceDao substanceDao) {
        this.substanceDao = substanceDao;
    }

    /** サブスタンスドメイン */
    private SubstanceDomain substanceDomain = null;

    public SubstanceDomain getSubstanceDomain() {
        return substanceDomain;
    }

    public void setSubstanceDomain(SubstanceDomain substanceDomain) {
        this.substanceDomain = substanceDomain;
    }

    /**
     * ドメインを生成します。
     *
     * @return 生成したドメイン
     */
    public SubstanceDomain createDomain(Substance substance) {

        // 指定されたデータで登録を行う
        substanceDao.insert(substance);

        // ドメインを取得し、呼び出し側に戻す
        return getDomain(substance.getSubstanceId());
    }

    /**
     * ドメインを取得します。
     *
     * @param substanceId
     *            メタデータID
     * @return 取得したドメイン
     */
    public SubstanceDomain getDomain(Integer substanceId) {

        // 引数をキーとして、データベースから該当データを取得する
        Substance entity = substanceDao.get(substanceId);

        // データが見つからなかった場合は、戻り値nullで呼び出し側に復帰する
        if (entity == null) {
            return null;
        }

        // ドメインを生成し、エンティティを設定する
        SubstanceDomain substanceDomain = new SubstanceDomain();
        CopyUtil.copy(this.substanceDomain, substanceDomain);
        substanceDomain.setEntity(entity);

        // デフォルト値を適用する
        substanceDomain.applyDefaultValue();

        // 生成したドメインを呼び出し側に戻す
        return substanceDomain;
    }

    /**
     * ルートサブスタンスを検索します。
     *
     * @return ルートサブスタンスドメインのリスト
     */
    public List<SubstanceDomain> findRootSubstance() {

        // DAOクラスのルートサブスタンス検索を実行する
        List<Substance> substanceList = substanceDao.findRootSubstance();

        // エンティティのリストをドメインのリストに変換する
        List<SubstanceDomain> substanceDomainList = new ArrayList<SubstanceDomain>();
        for (Substance entity : substanceList) {
            substanceDomainList.add(getDomain(entity.getSubstanceId()));
        }

        // 作成したドメインのリストを呼び出し側に戻す
        return substanceDomainList;
    }

    /**
     * 子サブスタンスを検索します。
     *
     * @return 子サブスタンスドメインのリスト
     */
    public List<SubstanceDomain> findChildSubstance(Integer substanceId) {

        // DAOクラスの子サブスタンス検索を実行する
        List<Substance> substanceList = substanceDao
                .findChildSubstance(substanceId);

        // エンティティのリストをドメインのリストに変換する
        List<SubstanceDomain> substanceDomainList = new ArrayList<SubstanceDomain>();
        for (Substance entity : substanceList) {
            substanceDomainList.add(getDomain(entity.getSubstanceId()));
        }

        // 作成したドメインのリストを呼び出し側に戻す
        return substanceDomainList;
    }

    /**
     * メタデータIDによってサブスタンスを検索します。
     *
     * @return サブスタンスドメインのリスト
     */
    public List<SubstanceDomain> findSubstanceByMetaDataId(Integer metaDataId) {

        // DAOクラスのメタデータIDによるサブスタンス検索を実行する
        List<Substance> substanceList = substanceDao
                .findSubstanceByMetaDataId(metaDataId);

        // エンティティのリストをドメインのリストに変換する
        List<SubstanceDomain> substanceDomainList = new ArrayList<SubstanceDomain>();
        for (Substance entity : substanceList) {
            substanceDomainList.add(getDomain(entity.getSubstanceId()));
        }

        // 作成したドメインのリストを呼び出し側に戻す
        return substanceDomainList;
    }
}

0 件のコメント:

コメントを投稿