2015年7月19日日曜日

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

テキスト変換行DAOの実装クラス。

package dao.impl;

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

import dao.TextConvertDefDao;
import dao.TextConvertLineDao;
import entity.TextConvertLine;

/**
 * テキスト変換行DAO(実装)
 */
public class TextConvertLineDaoImpl implements TextConvertLineDao {

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

    public TextConvertDefDao getTextConvertDefDao() {
        return textConvertDefDao;
    }

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

    /** テーブル名 */
    private static final String TABLE_NAME = "TEXT_CONVERT_LINE";

    /** テーブル名インデックス */
    private static final int INDEX_TABLE_NAME = 0;

    /** テキスト変換行IDインデックス */
    private static final int INDEX_TEXT_CONVERT_LINE_ID = 1;

    /** 行番号 */
    private static final int INDEX_LINE_NO = 2;

    /** 行データ */
    private static final int INDEX_LINE = 3;

    /** テキスト変換定義IDインデックス */
    private static final int INDEX_TEXT_CONVERT_DEF_ID = 1;

    /** テキスト変換行ID最大値 */
    private int maxTextConvertLineId = 0;

    /**
     * コンストラクタ
     */
    public TextConvertLineDaoImpl() {

        // テキスト変換行IDの最大値を算出する(採番のため)
        maxTextConvertLineId = 0;
        List<List<String>> svLineList = SvFileDb.getInstance().getSvLineList();
        for (List<String> svLine : svLineList) {
            if (svLine.get(INDEX_TABLE_NAME).equals(TABLE_NAME)
                    && Integer.parseInt(svLine.get(INDEX_TEXT_CONVERT_LINE_ID)) > maxTextConvertLineId) {
                maxTextConvertLineId = Integer.parseInt(svLine
                        .get(INDEX_TEXT_CONVERT_LINE_ID));
            }
        }
    }

    /*
     * (非 Javadoc)
     *
     * @see dao.TextConvertLineDao#insert(entity.TextConvertLine)
     */
    @Override
    public int insert(TextConvertLine textConvertLine) {

        // テキスト変換定義IDを採番するので、テキスト変換定義ID最大値をインクリメントする
        maxTextConvertLineId++;

        // メタデータをSV行データに変換する
        List<String> svLine = new ArrayList<String>();
        svLine.add(INDEX_TABLE_NAME, TABLE_NAME);
        svLine.add(INDEX_TEXT_CONVERT_LINE_ID,
                Integer.toString(maxTextConvertLineId));
        svLine.add(INDEX_LINE_NO, Integer.toString(textConvertLine.getLineNo()));
        svLine.add(INDEX_LINE, textConvertLine.getLine());
        svLine.add(INDEX_TEXT_CONVERT_DEF_ID,
                Integer.toString(textConvertLine.getTextConvertDefId()));

        // 作成した行データを追加する
        List<List<String>> svLineList = SvFileDb.getInstance().getSvLineList();
        svLineList.add(svLine);

        // 引数のエンティティには採番したメタデータIDを設定する
        textConvertLine.setTextConvertLineId(Integer
                .valueOf(maxTextConvertLineId));

        // 戻り値は常に1とする
        return 1;
    }

    /*
     * (非 Javadoc)
     *
     * @see dao.TextConvertLineDao#get(java.lang.Integer)
     */
    @Override
    public TextConvertLine get(Integer textConvertLineId) {

        // SV行データリストを取得する
        List<List<String>> svLineList = SvFileDb.getInstance().getSvLineList();

        // 全てのSV行を処理するまでループ
        for (List<String> svLine : svLineList) {

            // 該当データを発見した場合
            if (svLine.get(INDEX_TABLE_NAME).equals(TABLE_NAME)
                    && Integer.valueOf(svLine.get(INDEX_TEXT_CONVERT_LINE_ID))
                            .equals(textConvertLineId)) {

                // 行データからエンティティを作成し、呼び出し側に戻す
                return createEntity(svLine);
            }
        }

        // データが見つからない場合はnullを戻す
        return null;
    }

    /**
     * SV行データからエンティティを作成します。
     *
     * @param svLine
     *            SV行データ
     * @return SV行データから作成したエンティティ
     */
    private TextConvertLine createEntity(List<String> svLine) {

        // 行データからエンティティを作成する
        TextConvertLine entity = new TextConvertLine();
        entity.setTextConvertLineId(Integer.valueOf(svLine
                .get(INDEX_TEXT_CONVERT_LINE_ID)));
        entity.setLineNo(Integer.valueOf(svLine.get(INDEX_LINE_NO)));
        entity.setLine(svLine.get(INDEX_LINE));
        entity.setTextConvertDefId(Integer.valueOf(svLine
                .get(INDEX_TEXT_CONVERT_DEF_ID)));

        // テキスト変換定義DAOが存在する場合は、テキスト変換定義も読み込む
        if (textConvertDefDao != null) {
            entity.setTextConvertDef(textConvertDefDao.get(entity
                    .getTextConvertDefId()));
        }

        // エンティティを呼び出し側に戻す
        return entity;
    }
}

0 件のコメント:

コメントを投稿