2015年7月19日日曜日

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

サブスタンス更新サービスの実装クラス。

package service.impl;

import service.DomainDrivenService;
import service.UpdateSubstanceService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipUpdateSubstanceService;
import service.param.SopUpdateSubstanceService;
import util.CopyUtil;
import domain.SubstanceDomain;
import domain.SubstanceRepository;
import dto.SubstanceDto;
import entity.Substance;

/**
 * サブスタンス更新サービス(実装)
 */
public class UpdateSubstanceServiceImpl implements DomainDrivenService,
        UpdateSubstanceService {

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

    public SubstanceRepository getSubstanceRepository() {
        return substanceRepository;
    }

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

    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

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

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

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

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

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

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

        // ドメインを取得する
        SubstanceDomain domain = substanceRepository.getDomain(substanceDto
                .getSubstanceId());

        // ドメインの更新処理を呼び出す
        domain.update(substance);
    }
}

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

メタデータ更新サービスの実装クラス。

package service.impl;

import service.DomainDrivenService;
import service.UpdateMetaDataService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipUpdateMetaDataService;
import service.param.SopUpdateMetaDataService;
import util.CopyUtil;
import domain.MetaDataDomain;
import domain.MetaDataRepository;
import dto.MetaDataDto;
import entity.MetaData;

/**
 * メタデータ更新サービス(実装)
 */
public class UpdateMetaDataServiceImpl implements DomainDrivenService,
        UpdateMetaDataService {

    /** メタデータリポジトリ */
    private MetaDataRepository metaDataRepository = null;

    public MetaDataRepository getMetaDataRepository() {
        return metaDataRepository;
    }

    public void setMetaDataRepository(MetaDataRepository metaDataRepository) {
        this.metaDataRepository = metaDataRepository;
    }

    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

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

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

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

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

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

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

        // ドメインを取得する
        MetaDataDomain domain = metaDataRepository.getDomain(metaDataDto
                .getMetaDataId());

        // ドメインの更新処理を呼び出す
        domain.update(metaData);
    }
}

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

サービスファクトリクラス。

package service.impl;

import di.DiConfig;

/**
 * サービスファクトリ
 */
public class ServiceFactory {

    /** サービスファクトリのインスタンス */
    private static ServiceFactory serviceFactory = null;

    /**
     * インスタンス取得
     *
     * @return インスタンス
     */
    public static ServiceFactory getInstance() {
        if (serviceFactory == null) {
            serviceFactory = new ServiceFactory();
        }
        return serviceFactory;
    }

    /**
     * サービス名をキーとして、サービスを取得します。
     *
     * @param serviceName
     *            サービス名
     * @return サービス
     */
    public Object getService(String serviceName) {
        return DiConfig.getInstance().getDiInstance(serviceName);
    }
}

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

ファイル保存サービスの実装クラス。

package service.impl;

import service.DomainDrivenService;
import service.SaveFileService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipSaveFileService;
import service.param.SopSaveFileService;
import domain.MetaDataRepository;

/**
 * ファイル保存サービス(実装)
 */
public class SaveFileServiceImpl implements DomainDrivenService,
        SaveFileService {

    /** メタデータリポジトリ */
    private MetaDataRepository metaDataRepository = null;

    public MetaDataRepository getMetaDataRepository() {
        return metaDataRepository;
    }

    public void setMetaDataRepository(MetaDataRepository metaDataRepository) {
        this.metaDataRepository = metaDataRepository;
    }

    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

        // 入力パラメータからサブスタンスIDを取得する
        String fileName = ((SipSaveFileService) sip).getFileName();

        // サービスを実行する
        doService(fileName);

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.SaveFileService#doService(java.lang.String)
     */
    @Override
    public void doService(String fileName) {

        // リポジトリの保存メソッドを呼び出す
        metaDataRepository.saveFile(fileName);
    }
}

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

テンプレートファイルインポートサービスの実装クラス。

package service.impl;

import java.util.ArrayList;
import java.util.List;

import service.DomainDrivenService;
import service.ImportTemplateFileService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipImportTemplateFileService;
import service.param.SopImportTemplateFileService;
import util.CopyUtil;
import domain.TextConvertDefDomain;
import domain.TextConvertDefRepository;
import dto.TextConvertDefDto;
import entity.TextConvertDef;

/**
 * テンプレートファイルインポートサービス(実装)
 */
public class ImportTemplateFileServiceImpl implements DomainDrivenService,
        ImportTemplateFileService {

    /** テキスト変換定義リポジトリ */
    private TextConvertDefRepository textConvertDefRepository = null;

    public TextConvertDefRepository getTextConvertDefRepository() {
        return textConvertDefRepository;
    }

    public void setTextConvertDefRepository(
            TextConvertDefRepository textConvertDefRepository) {
        this.textConvertDefRepository = textConvertDefRepository;
    }

    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

        // 入力パラメータからメタデータDTOを取得する
        TextConvertDefDto textConvertDefDto = ((SipImportTemplateFileService) sip)
                .getTextConvertDefDto();

        // サービスを実行する
        List<Integer> textConvertDevIdList = doService(textConvertDefDto);

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.ImportTemplateFileService#doService(dto.TextConvertDefDto)
     */
    @Override
    public List<Integer> doService(TextConvertDefDto textConvertDefDto) {

        // テンプレートファイルの内容をインポートする
        TextConvertDef textConvertDef = new TextConvertDef();
        CopyUtil.copy(textConvertDefDto, textConvertDef);
        List<TextConvertDefDomain> textConvertDefDomainList = textConvertDefRepository
                .importTemplateFile(textConvertDef);

        // 新規作成されたテキスト変換定義のテキスト変換定義IDを呼び出し側に戻す
        List<Integer> idList = new ArrayList<Integer>();
        for (TextConvertDefDomain textConvertDefDomain : textConvertDefDomainList) {
            idList.add(textConvertDefDomain.getEntity().getTextConvertDefId());
        }
        return idList;
    }
}

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

メタデータIDによるサブスタンス検索サービスの実装クラス。

package service.impl;

import java.util.ArrayList;
import java.util.List;

import service.DomainDrivenService;
import service.FindSubstanceByMetaDataIdService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipFindSubstanceByMetaDataIdService;
import service.param.SopFindSubstanceByMetaDataIdService;
import util.CopyUtil;
import domain.SubstanceDomain;
import domain.SubstanceRepository;
import dto.SubstanceDto;

/**
 * メタデータIDによるサブスタンス検索サービス(実装)
 */
public class FindSubstanceByMetaDataIdServiceImpl implements
        DomainDrivenService, FindSubstanceByMetaDataIdService {

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

    public SubstanceRepository getSubstanceRepository() {
        return substanceRepository;
    }

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

    @Override
    public ServiceOutputParameter doService(ServiceInputParameter sip) {

        // 入力パラメータからメタデータIDを取得する
        Integer metaDataId = ((SipFindSubstanceByMetaDataIdService) sip)
                .getMetaDataId();

        // サービスを実行する
        List<SubstanceDto> substanceDtoList = doService(metaDataId);

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

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

    /*
     * (非 Javadoc)
     *
     * @see
     * service.FindSubstanceByMetaDataIdService#doService(java.lang.Integer)
     */
    @Override
    public List<SubstanceDto> doService(Integer metaDataId) {

        // メタデータIDによるサブスタンス検索を実行する
        List<SubstanceDomain> substanceDomainList = substanceRepository
                .findSubstanceByMetaDataId(metaDataId);

        // メタデータドメインリストをメタデータDTOリストに変換する
        List<SubstanceDto> list = new ArrayList<SubstanceDto>();
        for (SubstanceDomain domain : substanceDomainList) {
            SubstanceDto dto = new SubstanceDto();
            CopyUtil.copy(domain.getEntity(), dto);
            list.add(dto);
        }

        // 作成したメタデータDTOリストを呼び出し側に戻す
        return list;
    }
}

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

ルートサブスタンス検索サービスの実装クラス。

package service.impl;

import java.util.ArrayList;
import java.util.List;

import service.DomainDrivenService;
import service.FindRootSubstanceService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SopFindRootSubstanceService;
import util.CopyUtil;
import domain.SubstanceDomain;
import domain.SubstanceRepository;
import dto.SubstanceDto;

/**
 * ルートサブスタンス検索サービス(実装)
 */
public class FindRootSubstanceServiceImpl implements DomainDrivenService,
        FindRootSubstanceService {

    /** サブスタンスリポジトリ */
    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) {

        // サービスを実行する
        List<SubstanceDto> substanceDtoList = doService();

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.FindRootSubstanceService#doService()
     */
    @Override
    public List<SubstanceDto> doService() {

        // ルートサブスタンス検索を実行する
        List<SubstanceDomain> substanceDomainList = substanceRepository
                .findRootSubstance();

        // サブスタンスドメインリストをサブスタンスDTOリストに変換する
        List<SubstanceDto> list = new ArrayList<SubstanceDto>();
        for (SubstanceDomain domain : substanceDomainList) {
            SubstanceDto dto = new SubstanceDto();
            CopyUtil.copy(domain.getEntity(), dto);
            list.add(dto);
        }

        // 作成したメタデータDTOリストを呼び出し側に戻す
        return list;
    }
}