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;
    }
}

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

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

package service.impl;

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

import service.DomainDrivenService;
import service.FindRootMetaService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SopFindRootMetaService;
import util.CopyUtil;
import domain.MetaDataDomain;
import domain.MetaDataRepository;
import dto.MetaDataDto;

/**
 * ルートメタ検索サービス(実装)
 */
public class FindRootMetaServiceImpl implements DomainDrivenService,
        FindRootMetaService {

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

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

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

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

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

        // ルートメタ検索を実行する
        List<MetaDataDomain> metaDataDomainList = metaDataRepository
                .findRootMeta();

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

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

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

メタデータ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;
    }
}

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

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

package service.impl;

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

import service.DomainDrivenService;
import service.FindChildSubstanceService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipFindChildSubstanceService;
import service.param.SopFindChildSubstanceService;
import util.CopyUtil;
import domain.SubstanceDomain;
import domain.SubstanceRepository;
import dto.SubstanceDto;

/**
 * 子サブスタンス検索サービス(実装)
 */
public class FindChildSubstanceServiceImpl implements DomainDrivenService,
        FindChildSubstanceService {

    /** サブスタンスリポジトリ */
    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 substanceId = ((SipFindChildSubstanceService) sip)
                .getSubstanceId();

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

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

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

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

        // 子サブスタンス検索を実行する
        List<SubstanceDomain> substanceDomainList = substanceRepository
                .findChildSubstance(substanceId);

        // サブスタンスドメインリストをサブスタンス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;
    }
}

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

子メタ検索サービスの実装クラス。

package service.impl;

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

import service.DomainDrivenService;
import service.FindChildMetaService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipFindChildMetaService;
import service.param.SopFindChildMetaService;
import util.CopyUtil;
import domain.MetaDataDomain;
import domain.MetaDataRepository;
import dto.MetaDataDto;

/**
 * 子メタ検索サービス(実装)
 */
public class FindChildMetaServiceImpl implements DomainDrivenService,
        FindChildMetaService {

    /** メタデータリポジトリ */
    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 = ((SipFindChildMetaService) sip).getMetaDataId();

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

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

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

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

        // 子メタ検索を実行する
        List<MetaDataDomain> metaDataDomainList = metaDataRepository
                .findChildMeta(metaDataId);

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

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

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

サブスタンス削除サービスの実装クラス

package service.impl;

import service.DeleteSubstanceService;
import service.DomainDrivenService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipDeleteSubstanceService;
import service.param.SopDeleteSubstanceService;
import domain.SubstanceDomain;
import domain.SubstanceRepository;

/**
 * サブスタンス削除サービス(実装)
 */
public class DeleteSubstanceServiceImpl implements DomainDrivenService,
        DeleteSubstanceService {

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

        // 入力パラメータからサブスタンスIDを取得する
        Integer substanceId = ((SipDeleteSubstanceService) sip)
                .getSubstanceId();

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

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.DeleteSubstanceService#doService(java.lang.Integer)
     */
    @Override
    public void doService(Integer substanceId) {

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

        // ドメインの削除処理を呼び出す
        domain.delete();
    }
}

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

メタデータ削除サービスの実装クラス。

package service.impl;

import service.DeleteMetaDataService;
import service.DomainDrivenService;
import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;
import service.param.SipDeleteMetaDataService;
import service.param.SopDeleteMetaDataService;
import domain.MetaDataRepository;

/**
 * メタデータ削除サービス(実装)
 */
public class DeleteMetaDataServiceImpl implements DomainDrivenService,
        DeleteMetaDataService {

    /** メタデータリポジトリ */
    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 = ((SipDeleteMetaDataService) sip).getMetaDataId();

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

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

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

    /*
     * (非 Javadoc)
     *
     * @see service.DeleteMetaDataService#doService(java.lang.Integer)
     */
    @Override
    public void doService(Integer metaDataId) {

        // 全ての子メタを削除する
        metaDataRepository.deleteWithAllChild(metaDataRepository
                .getDomain(metaDataId));
    }
}

[メタデータエディタ]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();
    }
}

[メタデータエディタ]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();
    }
}

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

サブスタンス更新サービスのインターフェース。

package service;

import dto.SubstanceDto;

/**
 * サブスタンス更新サービス
 */
public interface UpdateSubstanceService {

    /**
     * サービスを実行します。
     *
     * @param substanceDto
     *            更新するサブスタンス
     */
    public void doService(SubstanceDto substanceDto);
}

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

メタデータ更新サービスのインターフェース。

package service;

import dto.MetaDataDto;

/**
 * メタデータ更新サービス
 */
public interface UpdateMetaDataService {

    /**
     * サービスを実行します。
     *
     * @param metaDataDto
     *            更新するメタデータ
     */
    public void doService(MetaDataDto metaDataDto);
}

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

ファイル保存サービスのインターフェース。

package service;


/**
 * ファイル保存サービス
 */
public interface SaveFileService {

    /**
     * サービスを実行します。
     *
     * @param fileName
     *            ファイル名
     */
    public void doService(String fileName);
}

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

テンプレートファイルインポートサービスのインターフェイス。

package service;

import java.util.List;

import dto.TextConvertDefDto;

/**
 * テンプレートファイルインポートサービス
 */
public interface ImportTemplateFileService {

    /**
     * サービスを実行します。
     *
     * @param textConvertDefDto
     *            新規作成するテキスト変換定義の情報
     * @return 新規作成したテキスト変換定義のテキスト変換定義ID
     */
    public List<Integer> doService(TextConvertDefDto textConvertDefDto);
}

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

ルートメタIDによるサブスタンス検索サービスのインターフェース。

package service;

import java.util.List;

import dto.SubstanceDto;

/**
 * メタデータIDによるサブスタンス検索サービス
 */
public interface FindSubstanceByMetaDataIdService {

    /**
     * サービスを実行します。
     *
     * @param metaDataId
     *            メタデータID
     * @return サブスタンスのリスト
     */
    public List<SubstanceDto> doService(Integer metaDataId);
}

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

ルートサブスタンス検索サービスのインターフェース。

package service;

import java.util.List;

import dto.SubstanceDto;

/**
 * ルートサブスタンス検索サービス
 */
public interface FindRootSubstanceService {

    /**
     * サービスを実行します。
     *
     * @return ルートサブスタンスのリスト
     */
    public List<SubstanceDto> doService();
}

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

ルートメタ検索サービスのインターフェース。

package service;

import java.util.List;

import dto.MetaDataDto;

/**
 * ルートメタ検索サービス
 */
public interface FindRootMetaService {

    /**
     * サービスを実行します。
     *
     * @return ルートメタのリスト
     */
    public List<MetaDataDto> doService();
}

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

メタデータIDによるルートメタ検索サービスのインターフェース。

package service;

import dto.MetaDataDto;

/**
 * メタデータIDによるルートメタ検索サービス
 */
public interface FindRootMetaByMetaDataIdService {

    /**
     * サービスを実行します。
     *
     * @return ルートメタ
     */
    public MetaDataDto doService(Integer metaDataId);
}

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

子サブスタンス検索サービスのインターフェース。

package service;

import java.util.List;

import dto.SubstanceDto;

/**
 * 子サブスタンス検索サービス
 */
public interface FindChildSubstanceService {

    /**
     * サービスを実行します。
     *
     * @param substanceId
     *            サブスタンスID
     * @return 子サブスタンスのリスト
     */
    public List<SubstanceDto> doService(Integer substanceId);
}

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

子メタ検索サービスのインターフェース。

package service;

import java.util.List;

import dto.MetaDataDto;

/**
 * 子メタ検索サービス
 */
public interface FindChildMetaService {

    /**
     * サービスを実行します。
     *
     * @param metaDataId
     *            メタデータID
     * @return 子メタのリスト
     */
    public List<MetaDataDto> doService(Integer metaDataId);
}

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

ドメイン駆動サービスのインターフェース。

package service;

import service.param.ServiceInputParameter;
import service.param.ServiceOutputParameter;

/**
 * ドメイン駆動サービス
 */
public interface DomainDrivenService {

    /**
     * サービスを実行します。
     *
     * @param sip
     *            サービス入力パラメータ
     * @return サービス出力パラメータ
     */
    public ServiceOutputParameter doService(ServiceInputParameter sip);
}

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

サブスタンス削除サービスのインターフェース。

package service;


/**
 * サブスタンス削除サービス
 */
public interface DeleteSubstanceService {

    /**
     * サービスを実行します。
     *
     * @param substanceId
     *            削除するサブスタンスのサブスタンスID
     */
    public void doService(Integer substanceId);
}

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

メタデータ削除サービスのインターフェース。

package service;


/**
 * メタデータ削除サービス
 */
public interface DeleteMetaDataService {

    /**
     * サービスを実行します。
     *
     * @param metaDataId
     *            削除するメタデータのメタデータID
     */
    public void doService(Integer metaDataId);
}

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

サブスタンス新規作成サービスのインターフェース。

package service;

import dto.SubstanceDto;

/**
 * サブスタンス新規作成サービス
 */
public interface CreateSubstanceService {

    /**
     * サービスを実行します。
     *
     * @param substanceDto
     *            サブスタンスDTO
     * @return 新規作成したサブスタンスのサブスタンスID
     */
    public Integer doService(SubstanceDto substanceDto);
}

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

メタデータ新規作成サービスのインターフェース。
以降の記述では、実際に提供するサービスの実装を記述する。

package service;

import dto.MetaDataDto;

/**
 * メタデータ新規作成サービス
 */
public interface CreateMetaDataService {

    /**
     * サービスを実行します。
     *
     * @param metaDataDto
     *            新規作成するメタデータ
     * @return 新規作成したメタデータのメタデータID
     */
    public Integer doService(MetaDataDto metaDataDto);
}

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

ビジネスルール違反例外クラス。

package exception;

/**
 * ビジネスルール違反例外
 */
public class BusinessRuleViolationException extends RuntimeException {

    /** デフォルトシリアルバージョン */
    private static final long serialVersionUID = 1L;

    /**
     * ビジネスルール違反例外を初期化します。
     *
     * @param e
     *            例外
     */
    public BusinessRuleViolationException(Exception e) {

        // スーパークラスのコンストラクタを呼び出す
        super(e);
    }

    /**
     * ビジネスルール違反例外を初期化します。
     *
     * @param msg
     *            エラーメッセージ
     */
    public BusinessRuleViolationException(String msg) {

        // スーパークラスのコンストラクタを呼び出す
        super(msg);
    }
}

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

アプリケーション内部例外クラス。


package exception;

/**
 * アプリケーション内部例外
 */
public class ApplicationInternalException extends RuntimeException {

    /** デフォルトシリアルバージョン */
    private static final long serialVersionUID = 1L;

    /**
     * アプリケーション内部例外を初期化します。
     *
     * @param e
     *            例外
     */
    public ApplicationInternalException(Exception e) {

        // スーパークラスのコンストラクタを呼び出す
        super(e);
    }

    /**
     * アプリケーション内部例外を初期化します。
     *
     * @param msg
     *            エラーメッセージ
     */
    public ApplicationInternalException(String msg) {

        // スーパークラスのコンストラクタを呼び出す
        super(msg);
    }
}

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

テキスト変換行のエンティティクラス。

package entity;

/**
 * テキスト変換行
 */
public class TextConvertLine {

    /** テキスト変換行ID(主キー、サロゲートキー) */
    private Integer textConvertLineId = null;

    public Integer getTextConvertLineId() {
        return textConvertLineId;
    }

    public void setTextConvertLineId(Integer textConvertLineId) {
        this.textConvertLineId = textConvertLineId;
    }

    /** 行番号 */
    private Integer lineNo = null;

    public Integer getLineNo() {
        return lineNo;
    }

    public void setLineNo(Integer lineNo) {
        this.lineNo = lineNo;
    }

    /** 行データ */
    private String line = null;

    public String getLine() {
        return line;
    }

    public void setLine(String line) {
        this.line = line;
    }

    /** テキスト変換定義ID(外部キー) */
    private Integer textConvertDefId = null;

    public Integer getTextConvertDefId() {
        return textConvertDefId;
    }

    public void setTextConvertDefId(Integer textConvertDefId) {
        this.textConvertDefId = textConvertDefId;
    }

    /** テキスト変換定義 */
    private TextConvertDef textConvertDef = null;

    public TextConvertDef getTextConvertDef() {
        return textConvertDef;
    }

    public void setTextConvertDef(TextConvertDef textConvertDef) {
        this.textConvertDef = textConvertDef;
    }
}

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

テキスト変換定義のエンティティクラス。

package entity;

/**
 * テキスト変換定義
 */
public class TextConvertDef {

    /** テキスト変換定義ID(主キー、サロゲートキー) */
    private Integer textConvertDefId = null;

    public Integer getTextConvertDefId() {
        return textConvertDefId;
    }

    public void setTextConvertDefId(Integer textConvertDefId) {
        this.textConvertDefId = textConvertDefId;
    }

    /** 基準ディレクトリ */
    private String baseDir = null;

    public String getBaseDir() {
        return baseDir;
    }

    public void setBaseDir(String baseDir) {
        this.baseDir = baseDir;
    }

    /** パッケージ */
    private String pkg = null;

    public String getPkg() {
        return pkg;
    }

    public void setPkg(String pkg) {
        this.pkg = pkg;
    }

    /** ファイル名 */
    private String fileName = null;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
}

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

サブスタンスのエンティティクラス。

package entity;

/**
 * サブスタンス
 */
public class Substance {

    /** サブスタンスID(主キー、サロゲートキー) */
    private Integer substanceId = null;

    public Integer getSubstanceId() {
        return substanceId;
    }

    public void setSubstanceId(Integer substanceId) {
        this.substanceId = substanceId;
    }

    /** データ */
    private String data = null;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    /** デフォルト値 */
    private String defaultValue = null;

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    /** 親サブスタンスID */
    private Integer parentSubstanceId = null;

    public Integer getParentSubstanceId() {
        return parentSubstanceId;
    }

    public void setParentSubstanceId(Integer parentSubstanceId) {
        this.parentSubstanceId = parentSubstanceId;
    }

    /** メタデータID(外部キー) */
    private Integer metaDataId = null;

    public Integer getMetaDataId() {
        return metaDataId;
    }

    public void setMetaDataId(Integer metaDataId) {
        this.metaDataId = metaDataId;
    }

    /** メタデータ */
    private MetaData metaData = null;

    public MetaData getMetaData() {
        return metaData;
    }

    public void setMetaData(MetaData metaData) {
        this.metaData = metaData;
    }
}

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

メタデータのエンティティクラス。

package entity;

/**
 * メタデータ
 */
public class MetaData {

    /** メタデータID(主キー、サロゲートキー) */
    private Integer metaDataId = null;

    public Integer getMetaDataId() {
        return metaDataId;
    }

    public void setMetaDataId(Integer metaDataId) {
        this.metaDataId = metaDataId;
    }

    /** メタデータ名 */
    private String metaDataName = null;

    public String getMetaDataName() {
        return metaDataName;
    }

    public void setMetaDataName(String metaDataName) {
        this.metaDataName = metaDataName;
    }

    /** 説明 */
    private String description = null;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    /** デフォルト値 */
    private String defaultValue = null;

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    /** 親メタデータID */
    private Integer parentMetaDataId = null;

    public Integer getParentMetaDataId() {
        return parentMetaDataId;
    }

    public void setParentMetaDataId(Integer parentMetaDataId) {
        this.parentMetaDataId = parentMetaDataId;
    }
}

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

テキスト変換行のDTOクラス。

package dto;

import util.CopyUtil;
import entity.TextConvertDef;

/**
 * テキスト変換行DTO
 */
public class TextConvertLineDto {

    /** テキスト変換行ID(主キー、サロゲートキー) */
    private Integer textConvertLineId = null;

    public Integer getTextConvertLineId() {
        return textConvertLineId;
    }

    public void setTextConvertLineId(Integer textConvertLineId) {
        this.textConvertLineId = textConvertLineId;
    }

    /** 行番号 */
    private Integer lineNo = null;

    public Integer getLineNo() {
        return lineNo;
    }

    public void setLineNo(Integer lineNo) {
        this.lineNo = lineNo;
    }

    /** 行データ */
    private String line = null;

    public String getLine() {
        return line;
    }

    public void setLine(String line) {
        this.line = line;
    }

    /** テキスト変換定義ID(外部キー) */
    private Integer textConvertDefId = null;

    public Integer getTextConvertDefId() {
        return textConvertDefId;
    }

    public void setTextConvertDefId(Integer textConvertDefId) {
        this.textConvertDefId = textConvertDefId;
    }

    /** テキスト変換定義DTO */
    private TextConvertDefDto textConvertDefDto = null;

    public TextConvertDefDto getTextConvertDefDto() {
        return textConvertDefDto;
    }

    public void setTextConvertDefDto(TextConvertDefDto textConvertDefDto) {
        this.textConvertDefDto = textConvertDefDto;
        if (textConvertDefDto != null) {
            textConvertDefId = textConvertDefDto.getTextConvertDefId();
        }
    }

    public void setTextConvertDef(TextConvertDef textConvertDef) {
        textConvertDefDto = new TextConvertDefDto();
        CopyUtil.copy(textConvertDef, textConvertDefDto);
    }
}

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

テキスト変換定義のDTOクラス。

package dto;

/**
 * テキスト変換定義DTO
 */
public class TextConvertDefDto {

    /** テキスト変換定義ID(主キー、サロゲートキー) */
    private Integer textConvertDefId = null;

    public Integer getTextConvertDefId() {
        return textConvertDefId;
    }

    public void setTextConvertDefId(Integer textConvertDefId) {
        this.textConvertDefId = textConvertDefId;
    }

    /** 基準ディレクトリ */
    private String baseDir = null;

    public String getBaseDir() {
        return baseDir;
    }

    public void setBaseDir(String baseDir) {
        this.baseDir = baseDir;
    }

    /** パッケージ */
    private String pkg = null;

    public String getPkg() {
        return pkg;
    }

    public void setPkg(String pkg) {
        this.pkg = pkg;
    }

    /** ファイル名 */
    private String fileName = null;

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
}

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

サブスタンスのDTOクラス。
 package dto;

import util.CopyUtil;
import entity.MetaData;

/**
 * サブスタンスDTO
 */
public class SubstanceDto {

    /** サブスタンスID(主キー、サロゲートキー) */
    private Integer substanceId = null;

    public Integer getSubstanceId() {
        return substanceId;
    }

    public void setSubstanceId(Integer substanceId) {
        this.substanceId = substanceId;
    }

    /** データ */
    private String data = null;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    /** デフォルト値 */
    private String defaultValue = null;

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    /** 親サブスタンスID */
    private Integer parentSubstanceId = null;

    public Integer getParentSubstanceId() {
        return parentSubstanceId;
    }

    public void setParentSubstanceId(Integer parentSubstanceId) {
        this.parentSubstanceId = parentSubstanceId;
    }

    /** メタデータID(外部キー) */
    private Integer metaDataId = null;

    public Integer getMetaDataId() {
        return metaDataId;
    }

    public void setMetaDataId(Integer metaDataId) {
        this.metaDataId = metaDataId;
    }

    /** メタデータDTO */
    private MetaDataDto metaDataDto = null;

    public MetaDataDto getMetaDataDto() {
        return metaDataDto;
    }

    public void setMetaDataDto(MetaDataDto metaDataDto) {
        this.metaDataDto = metaDataDto;
        if (metaDataDto != null) {
            metaDataId = metaDataDto.getMetaDataId();
        }
    }

    public void setMetaData(MetaData metaData) {
        metaDataDto = new MetaDataDto();
        CopyUtil.copy(metaData, metaDataDto);
    }
}

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

メタデータのDTOクラス。
ドメイン駆動では、エンティティを直接サービス層に戻さない。これはエンティティが不正に操作され、誤ったデータ更新が行われることを防ぐためである。
DTOクラスはサービス単位で必要に応じて作成する。

package dto;

/**
 * メタデータDTO
 */
public class MetaDataDto {

    /** メタデータID(主キー、サロゲートキー) */
    private Integer metaDataId = null;

    public Integer getMetaDataId() {
        return metaDataId;
    }

    public void setMetaDataId(Integer metaDataId) {
        this.metaDataId = metaDataId;
    }

    /** メタデータ名 */
    private String metaDataName = null;

    public String getMetaDataName() {
        return metaDataName;
    }

    public void setMetaDataName(String metaDataName) {
        this.metaDataName = metaDataName;
    }

    /** 説明 */
    private String description = null;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    /** デフォルト値 */
    private String defaultValue = null;

    public String getDefaultValue() {
        return defaultValue;
    }

    public void setDefaultValue(String defaultValue) {
        this.defaultValue = defaultValue;
    }

    /** 親メタデータID */
    private Integer parentMetaDataId = null;

    public Integer getParentMetaDataId() {
        return parentMetaDataId;
    }

    public void setParentMetaDataId(Integer parentMetaDataId) {
        this.parentMetaDataId = parentMetaDataId;
    }
}

TextConvertLineRepository

テキスト変換行のリポジトリクラス。

package domain;

import util.CopyUtil;
import dao.TextConvertLineDao;
import entity.TextConvertLine;

/**
 * テキスト変換行リポジトリ
 */
public class TextConvertLineRepository {

    /** テキスト変換行DAO */
    private TextConvertLineDao textConvertLineDao = null;

    public TextConvertLineDao getTextConvertLineDao() {
        return textConvertLineDao;
    }

    public void setTextConvertLineDao(TextConvertLineDao textConvertLineDao) {
        this.textConvertLineDao = textConvertLineDao;
    }

    /** テキスト変換行ドメイン */
    private TextConvertLineDomain textConvertLineDomain = null;

    public TextConvertLineDomain getTextConvertLineDomain() {
        return textConvertLineDomain;
    }

    public void setTextConvertLineDomain(
            TextConvertLineDomain textConvertLineDomain) {
        this.textConvertLineDomain = textConvertLineDomain;
    }

    /**
     * ドメインを生成します。
     *
     * @return 生成したドメイン
     */
    public TextConvertLineDomain createDomain(TextConvertLine textConvertLine) {

        // 指定されたデータで登録を行う
        textConvertLineDao.insert(textConvertLine);

        // ドメインを取得し、呼び出し側に戻す
        return getDomain(textConvertLine.getTextConvertLineId());
    }

    /**
     * ドメインを取得します。
     *
     * @param textConvertLineId
     *            メタデータID
     * @return 取得したドメイン
     */
    public TextConvertLineDomain getDomain(Integer textConvertLineId) {

        // 引数をキーとして、データベースから該当データを取得する
        TextConvertLine entity = textConvertLineDao.get(textConvertLineId);

        // データが見つからなかった場合は、戻り値nullで呼び出し側に復帰する
        if (entity == null) {
            return null;
        }

        // ドメインを生成し、エンティティを設定する
        TextConvertLineDomain textConvertLineDomain = new TextConvertLineDomain();
        CopyUtil.copy(this.textConvertLineDomain, textConvertLineDomain);
        textConvertLineDomain.setEntity(entity);

        // 生成したドメインを呼び出し側に戻す
        return textConvertLineDomain;
    }
}

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

テキスト変換行のドメインクラス。

package domain;

import dao.TextConvertLineDao;
import entity.TextConvertLine;

/**
 * テキスト変換行ドメイン
 */
public class TextConvertLineDomain {

    /** テキスト変換行DAO */
    private TextConvertLineDao textConvertLineDao = null;

    public TextConvertLineDao getTextConvertLineDao() {
        return textConvertLineDao;
    }

    public void setTextConvertLineDao(TextConvertLineDao textConvertLineDao) {
        this.textConvertLineDao = textConvertLineDao;
    }

    /** エンティティ */
    private TextConvertLine entity = null;

    public TextConvertLine getEntity() {
        return entity;
    }

    public void setEntity(TextConvertLine entity) {
        this.entity = entity;
    }
}

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

package domain;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import util.CnvUtil;
import util.CopyUtil;
import util.PropUtil;
import dao.SubstanceDao;
import dao.TextConvertDefDao;
import entity.TextConvertDef;
import entity.TextConvertLine;
import exception.ApplicationInternalException;

/**
 * テキスト変換定義リポジトリ
 */
public class TextConvertDefRepository {

    /** サブスタンスDAO */
    private SubstanceDao substanceDao = null;

    public SubstanceDao getSubstanceDao() {
        return substanceDao;
    }

    public void setSubstanceDao(SubstanceDao substanceDao) {
        this.substanceDao = substanceDao;
    }

    /** テキスト変換定義DAO */
    private TextConvertDefDao textConvertDefDao = null;

    public TextConvertDefDao getTextConvertDefDao() {
        return textConvertDefDao;
    }

    public void setTextConvertDefDao(TextConvertDefDao textConvertDefDao) {
        this.textConvertDefDao = textConvertDefDao;
    }

    /** テキスト変換定義ドメイン */
    private TextConvertDefDomain textConvertDefDomain = null;

    public TextConvertDefDomain getTextConvertDefDomain() {
        return textConvertDefDomain;
    }

    public void setTextConvertDefDomain(
            TextConvertDefDomain textConvertDefDomain) {
        this.textConvertDefDomain = textConvertDefDomain;
    }

    /** テキスト変換行リポジトリ */
    private TextConvertLineRepository textConvertLineRepository = null;

    public TextConvertLineRepository getTextConvertLineRepository() {
        return textConvertLineRepository;
    }

    public void setTextConvertLineRepository(
            TextConvertLineRepository textConvertLineRepository) {
        this.textConvertLineRepository = textConvertLineRepository;
    }

    /**
     * ドメインを生成します。
     *
     * @return 生成したドメイン
     */
    public TextConvertDefDomain createDomain(TextConvertDef textConvertDef) {

        // 指定されたデータで登録を行う
        textConvertDefDao.insert(textConvertDef);

        // ドメインを取得し、呼び出し側に戻す
        return getDomain(textConvertDef.getTextConvertDefId());
    }

    /**
     * ドメインを取得します。
     *
     * @param textConvertDefId
     *            メタデータID
     * @return 取得したドメイン
     */
    public TextConvertDefDomain getDomain(Integer textConvertDefId) {

        // 引数をキーとして、データベースから該当データを取得する
        TextConvertDef entity = textConvertDefDao.get(textConvertDefId);

        // データが見つからなかった場合は、戻り値nullで呼び出し側に復帰する
        if (entity == null) {
            return null;
        }

        // ドメインを生成し、エンティティを設定する
        TextConvertDefDomain textConvertDefDomain = new TextConvertDefDomain();
        CopyUtil.copy(this.textConvertDefDomain, textConvertDefDomain);
        textConvertDefDomain.setEntity(entity);

        // 生成したドメインを呼び出し側に戻す
        return textConvertDefDomain;
    }

    /**
     * テンプレートファイルの内容を解析して、テキスト変換定義を作成します。
     *
     * @param textConvertDef
     *            テキスト変換定義
     * @return 新規作成したテキスト変換定義ドメイン
     */
    public List<TextConvertDefDomain> importTemplateFile(
            TextConvertDef textConvertDef) {

        // インポートするファイル(フルパス名)を取得する
        List<String> filePathList = getFileNameList(textConvertDef);

        // 全てのファイルをインポートし、テキスト変換定義ドメインのリストを作成する
        List<TextConvertDefDomain> textConvertDefDomainList = new ArrayList<TextConvertDefDomain>();
        for (String filePath : filePathList) {
            TextConvertDefDomain textConvertDefDomain = importTargetFile(
                    textConvertDef, filePath);
            if (textConvertDefDomain != null) {
                textConvertDefDomainList.add(textConvertDefDomain);
            }
        }

        // 作成したテキスト変換定義ドメインのリストを呼び出し側に戻す
        return textConvertDefDomainList;
    }

    /**
     * インポートするファイルの存在確認を行います。
     *
     * @param textConvertDef
     */
    private List<String> getFileNameList(TextConvertDef textConvertDef) {

        // パス区切り文字を取得する
        String pathDelm = PropUtil.get("path.delm");
        String pathDelmPkg = PropUtil.get("path.delm.pkg");

        // ファイルパスを作成する(パッケージはドットをパス区切り文字に変えてパス名に追加する)
        String path = textConvertDef.getBaseDir() + pathDelm
                + textConvertDef.getPkg().replace(pathDelmPkg, pathDelm);

        // パスが存在しなければエラーとする
        File dir = new File(path);
        if (!dir.exists()) {
            throw new ApplicationInternalException(
                    PropUtil.get("msg.err.dirNotFound") + path);
        }

        // ファイル名のみ、テキスト変換による複数指定を認める
        CnvUtil cnvUtil = new CnvUtil(substanceDao,
                textConvertDef.getFileName());
        List<String> fileNameList = cnvUtil.getAfterConvertList();

        // フルパスファイル名を作成し、存在するファイルのみ戻り値のリストに追加する
        List<String> filePathList = new ArrayList<String>();
        for (String fileName : fileNameList) {
            String filePath = path + pathDelm + fileName;
            File file = new File(filePath);
            if (file.exists()) {
                filePathList.add(filePath);
            }
        }

        // 作成したファイルパスリストを呼び出し側に戻す
        return filePathList;
    }

    // TODO 実装が完了。次回はインポートを実際に行ってみる。
    // インポートが成功したら、テキスト変換定義に基づきテキストを変換するサービスを実装する。

    /**
     * ファイルパスで示されるファイルを読み込み、テキスト変換定義をインポートします。
     *
     * @param filePath
     *            ファイルパス
     * @return テキスト変換定義ドメイン
     */
    private TextConvertDefDomain importTargetFile(
            TextConvertDef textConvertDef, String filePath) {

        BufferedReader br = null;
        try {
            // ファイルを開く
            br = new BufferedReader(new FileReader(filePath));

            // テキスト変換定義ドメインを作成する
            TextConvertDefDomain textConvertDefDomain = createDomain(textConvertDef);

            // ファイルを全て読み込むまでループ
            String line = "";
            int lineNo = 0;
            while ((line = br.readLine()) != null) {

                // テキスト変換行ドメインを作成する
                TextConvertLine textConvertLine = new TextConvertLine();
                textConvertLine.setLineNo(Integer.valueOf(lineNo));
                textConvertLine.setLine(line);
                textConvertLine.setTextConvertDefId(textConvertDefDomain
                        .getEntity().getTextConvertDefId());
                textConvertLineRepository.createDomain(textConvertLine);
            }

        } catch (FileNotFoundException e) {
            throw new ApplicationInternalException(
                    PropUtil.get("msg.err.fileNotFound") + filePath);
        } catch (IOException e) {
            throw new ApplicationInternalException(e);
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    throw new ApplicationInternalException(e);
                }
            }
        }

        // 作成したテキスト変換定義を呼び出し側に戻す
        return textConvertDefDomain;
    }
}