2015年7月19日日曜日

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

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

package dao.impl;

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

import dao.TextConvertDefDao;
import entity.TextConvertDef;

/**
 * テキスト変換定義DAO(実装)
 */
public class TextConvertDefDaoImpl implements TextConvertDefDao {

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

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

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

    /** 基準ディレクトリインデックス */
    private static final int INDEX_BASE_DIR = 2;

    /** パッケージインデックス */
    private static final int INDEX_PKG = 3;

    /** ファイル名インデックス */
    private static final int INDEX_FILE_NAME = 4;

    /** テキスト変換定義ID最大値 */
    private int maxTextConvertDefId = 0;

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

        // テキスト変換定義IDの最大値を算出する(採番のため)
        maxTextConvertDefId = 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_DEF_ID)) > maxTextConvertDefId) {
                maxTextConvertDefId = Integer.parseInt(svLine
                        .get(INDEX_TEXT_CONVERT_DEF_ID));
            }
        }
    }

    /*
     * (非 Javadoc)
     *
     * @see dao.TextConvertDefDao#insert(entity.TextConvertDef)
     */
    @Override
    public int insert(TextConvertDef textConvertDef) {

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

        // メタデータをSV行データに変換する
        List<String> svLine = new ArrayList<String>();
        svLine.add(INDEX_TABLE_NAME, TABLE_NAME);
        svLine.add(INDEX_TEXT_CONVERT_DEF_ID,
                Integer.toString(maxTextConvertDefId));
        if (textConvertDef.getBaseDir() == null) {
            svLine.add(INDEX_BASE_DIR, "");
        } else {
            svLine.add(INDEX_BASE_DIR, textConvertDef.getBaseDir());
        }
        if (textConvertDef.getPkg() == null) {
            svLine.add(INDEX_PKG, "");
        } else {
            svLine.add(INDEX_PKG, textConvertDef.getPkg());
        }
        svLine.add(INDEX_FILE_NAME, textConvertDef.getFileName());

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

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

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

    /*
     * (非 Javadoc)
     *
     * @see dao.TextConvertDefDao#get(java.lang.Integer)
     */
    @Override
    public TextConvertDef get(Integer textConvertDefId) {

        // 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_DEF_ID))
                            .equals(textConvertDefId)) {

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

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

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

        // 行データからエンティティを作成する
        TextConvertDef entity = new TextConvertDef();
        entity.setTextConvertDefId(Integer.valueOf(svLine
                .get(INDEX_TEXT_CONVERT_DEF_ID)));
        entity.setBaseDir(svLine.get(INDEX_BASE_DIR));
        entity.setPkg(svLine.get(INDEX_PKG));
        entity.setFileName(svLine.get(INDEX_FILE_NAME));

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

0 件のコメント:

コメントを投稿