テキスト変換定義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 件のコメント:
コメントを投稿