2015年7月19日日曜日

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

サブスタンス新規作成サービスの実装クラス。

package service.impl;

import service.CreateSubstanceService;
import service.DomainDrivenService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipCreateSubstanceService;
import service.param.SopCreateSubstanceService;
import util.CopyUtil;
import domain.SubstanceDomain;
import domain.SubstanceRepository;
import dto.SubstanceDto;
import entity.Substance;

/**
 * サブスタンス新規作成サービス(実装)
 */
public class CreateSubstanceServiceImpl implements DomainDrivenService,
        CreateSubstanceService {

    /** サブスタンスリポジトリ */
    private SubstanceRepository substanceRepository = null;

    public SubstanceRepository getSubstanceRepository() {
        return substanceRepository;
    }

    public void setSubstanceRepository(SubstanceRepository substanceRepository) {
        this.substanceRepository = substanceRepository;
    }

    /*
     * (非 Javadoc)
     *
     * @see
     * service.DomainDrivenService#doService(service.param.ServiceInputParameter
     * )
     */
    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

        // 入力パラメータからサブスタンスDTOを取得する
        SubstanceDto substanceDto = ((SipCreateSubstanceService) sip)
                .getSubstanceDto();

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

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.CreateSubstanceService#doService(dto.SubstanceDto)
     */
    @Override
    public Integer doService(SubstanceDto substanceDto) {

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

        // ドメインを生成する
        SubstanceDomain substanceDomain = substanceRepository
                .createDomain(substance);

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

0 件のコメント:

コメントを投稿