以降の記事では、これまでの記事で取り上げたメタデータとサブスタンスをどのように取り扱うか、プログラム実装面で解説する。
メタデータを新規作成する場合に適用されるビジネスルールのクラス。
最上位のメタデータは、同じ名前を二重に作ることを禁止し、親を持つメタデータは親がない場合をエラーと扱う。
これ以外のソースコードも順次、解説しつつ記載していく。単体では分かりづらいが、リンクをたどって別ソースコードを見ていただければ、関連をつかみやすい。
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 件のコメント:
コメントを投稿