SVファイル(カンマやタブなど、特定のデリミタでデータを区切る形式のファイル)のクラス。
package dao.impl;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
import util.PropUtil;
import util.SvFile;
import exception.ApplicationInternalException;
/**
* セパレーテッドバリューファイルDAO(実装)
*/
public class SvFileDb {
/** シングルトンのインスタンス */
private static SvFileDb svFileDb = null;
/**
* シングルトンのインスタンスを取得します。
*
* @return インスタンス
*/
public static SvFileDb getInstance() {
if (svFileDb == null) {
svFileDb = new SvFileDb();
}
return svFileDb;
}
/**
* コンストラクタ
*/
private SvFileDb() {
try {
loadDb();
} catch (IOException e) {
throw new ApplicationInternalException(
PropUtil.get("msg.err.dbLoad"));
}
}
/** データベース */
private SvFile db = null;
/**
* データベースのインスタンスを取得します。
*
* @return データベースのインスタンス
*/
public SvFile getDb() {
if (db == null) {
db = new SvFile();
}
return db;
}
/**
* SV行データリストを取得します。
*
* @return 行データリスト
*/
public List<List<String>> getSvLineList() {
// SV行データリストを取得する
List<List<String>> svLineList;
svLineList = getDb().getSvLineList();
// SV行データリストを呼び出し側に戻す
return svLineList;
}
/**
* データベースをコミットします。
*/
public void commit() {
try {
getDb().save(PropUtil.get("db.sv.fileName"),
getDb().getSvLineList());
} catch (IOException e) {
throw new ApplicationInternalException(
PropUtil.get("msg.err.dbSave"));
}
}
/**
* データベースをロールバックします。
*/
public void rollback() {
try {
getDb().loadFile(PropUtil.get("db.sv.fileName"));
} catch (IOException e) {
throw new ApplicationInternalException(
PropUtil.get("msg.err.dbLoad"));
}
}
/**
* データベースからデータをロードします。
*/
private void loadDb() throws IOException {
// ファイルを開いてみる
String fileName = PropUtil.get("db.sv.fileName");
File f = new File(fileName);
// ファイルが存在しない場合は新規作成する
if (!f.exists()) {
FileWriter fw = new FileWriter(f);
fw.close();
}
// データベースファイルを開く
getDb().loadFile(PropUtil.get("db.sv.fileName"));
}
}
0 件のコメント:
コメントを投稿