2015年7月19日日曜日

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

メタデータ新規作成サービスの実装クラス。
以降のサービス実装クラスは別掲記事にて記載したドメイン駆動サービス(DomainDrivenService)クラスも実装している。(試験的に実装)

package service.impl;

import service.CreateMetaDataService;
import service.DomainDrivenService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipCreateMetaDataService;
import service.param.SopCreateMetaDataService;
import util.CopyUtil;
import domain.MetaDataDomain;
import domain.MetaDataRepository;
import dto.MetaDataDto;
import entity.MetaData;

/**
 * メタデータ新規作成サービス(実装)
 */
public class CreateMetaDataServiceImpl implements DomainDrivenService,
        CreateMetaDataService {

    /** メタデータリポジトリ */
    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) {

        // 入力パラメータからメタデータDTOを取得する
        MetaDataDto metaDataDto = ((SipCreateMetaDataService) sip)
                .getMetaDataDto();

        // サービスを実行する
        Integer metaDataId = doService(metaDataDto);

        // サービス出力パラメータを作成する
        SopCreateMetaDataService sop = new SopCreateMetaDataService(metaDataId);

        // 出力パラメータを作成し、呼び出し側に戻す
        return sop;
    }

    /*
     * (非 Javadoc)
     *
     * @see service.CreateMetaDataService#doService(dto.MetaDataDto)
     */
    @Override
    public Integer doService(MetaDataDto metaDataDto) {

        // DTOからエンティティへの詰め替えを行う
        MetaData metaData = new MetaData();
        CopyUtil.copy(metaDataDto, metaData);

        // ドメインを生成する
        MetaDataDomain metaDataDomain = metaDataRepository
                .createDomain(metaData);

        // 新規作成したメタデータのメタデータIDを呼び出し側に戻す
        CopyUtil.copy(metaDataDomain.getEntity(), metaDataDto);
        return metaDataDomain.getEntity().getMetaDataId();
    }
}

0 件のコメント:

コメントを投稿