メタデータIDによるルートメタ検索サービスの実装クラス。
package service.impl;
import service.DomainDrivenService;
import service.FindRootMetaByMetaDataIdService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipFindRootMetaByMetaDataIdService;
import service.param.SopFindRootMetaByMetaDataIdService;
import util.CopyUtil;
import domain.MetaDataDomain;
import domain.MetaDataRepository;
import dto.MetaDataDto;
/**
* メタデータIDによるルートメタ検索サービス(実装)
*/
public class FindRootMetaByMetaDataIdServiceImpl implements
DomainDrivenService, FindRootMetaByMetaDataIdService {
/** メタデータリポジトリ */
private MetaDataRepository metaDataRepository = null;
public MetaDataRepository getMetaDataRepository() {
return metaDataRepository;
}
public void setMetaDataRepository(MetaDataRepository metaDataRepository) {
this.metaDataRepository = metaDataRepository;
}
/*
* (非 Javadoc)
*
* @see
* service.DomainDrivenService#doService(service.param.ServiceInputParameter
* )
*/
@Override
public ServiceOutputParameter doService(ServiceInputParameter sip) {
// 入力パラメータからメタデータIDを取得する
Integer metaDataId = ((SipFindRootMetaByMetaDataIdService) sip)
.getMetaDataId();
// サービスを実行する
MetaDataDto metaDataDto = doService(metaDataId);
// サービス出力パラメータを作成する
SopFindRootMetaByMetaDataIdService sop = new SopFindRootMetaByMetaDataIdService(
metaDataDto);
// 出力パラメータを作成し、呼び出し側に戻す
return sop;
}
/*
* (非 Javadoc)
*
* @see service.FindRootMetaByMetaDataIdService#doService(java.lang.Integer)
*/
@Override
public MetaDataDto doService(Integer metaDataId) {
// 指定されたメタデータIDのルートメタを求める
MetaDataDomain domain = metaDataRepository.getDomain(metaDataId);
while (domain.getEntity().getParentMetaDataId() != null) {
domain = metaDataRepository.getDomain(domain.getEntity()
.getParentMetaDataId());
}
// メタデータドメインをメタデータDTOに変換する
MetaDataDto dto = new MetaDataDto();
CopyUtil.copy(domain.getEntity(), dto);
// ルートメタのメタデータDTOを呼び出し側に戻す
return dto;
}
}
0 件のコメント:
コメントを投稿