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