2015年7月19日日曜日

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

以降の記事では、これまでの記事で取り上げたメタデータとサブスタンスをどのように取り扱うか、プログラム実装面で解説する。

メタデータを新規作成する場合に適用されるビジネスルールのクラス。
最上位のメタデータは、同じ名前を二重に作ることを禁止し、親を持つメタデータは親がない場合をエラーと扱う。
これ以外のソースコードも順次、解説しつつ記載していく。単体では分かりづらいが、リンクをたどって別ソースコードを見ていただければ、関連をつかみやすい。

package br;

import util.PropUtil;
import dao.MetaDataDao;
import entity.MetaData;
import exception.BusinessRuleViolationException;

/**
 * メタデータ新規作成ビジネスルール
 */
public class CreateMetaDataBusinessRule {

    /** メタデータDAO */
    private MetaDataDao metaDataDao = null;

    /**
     * コンストラクタ
     */
    public CreateMetaDataBusinessRule(MetaDataDao metaDataDao) {

        // メタデータDAOを設定する
        this.metaDataDao = metaDataDao;
    }

    /**
     * メタデータ新規作成時のチェックを行います。
     */
    public void check(MetaData metaData) {

        // 新規作成しようとしているメタデータがルートメタでない場合
        if (metaData.getParentMetaDataId() != null
                && metaData.getParentMetaDataId() > 0) {

            // 親データが存在しなければエラーとする
            if (metaDataDao.get(metaData.getParentMetaDataId()) == null) {
                throw new BusinessRuleViolationException(
                        PropUtil.get("msg.err.parentNotFound"));
            }
        }

        // ルートメタについては、メタデータ名の二重登録をエラーとする
        else if (metaDataDao.hasMetaData(metaData.getMetaDataName())) {
            throw new BusinessRuleViolationException(
                    PropUtil.get("msg.err.sameRootMetaName"));
        }
    }
}

0 件のコメント:

コメントを投稿