/*
 * Copyright (C) 2005 NTT DATA Corporation
 * 
 */
package org.postgresforest.tool.action;

import java.sql.SQLException;
import java.util.ArrayList;

import org.postgresforest.tool.bean.BrokenLogInfo;
import org.postgresforest.tool.db.GSCdata;

/**
 * インスタンス登録クラス
 * 
 * インスタンス登録を行う。
 */
public class BrokenLogAction extends ActionBase{

	/**
	 * @param gsc
	 */
	public BrokenLogAction(GSCdata gsc) {
		super(gsc);
	}
	
	/**
	 * サーバステータス取得処理
	 * 
	 */
	public ArrayList getList() throws Exception{


		//データ作成
		ArrayList brokenLogList = null;
		try {
			//接続
			if (!connectSelect(m_gsc)) {
				throw new Exception();
			}
			
			//BrokenLog情報作成
			brokenLogList = m_gsc.getBrokenLogList();

		} catch (SQLException e) {
			setAccessErrs(m_gsc);
			throw e;

		} finally {
			m_gsc.close();
		}

		return brokenLogList;
	}
	
	/**
	 * 
	 */
	public BrokenLogInfo get(String id) throws Exception {


		//データ作成
		try {
			//接続
			if (!connectSelect(m_gsc)) {
				throw new Exception();
			}
			
			//BrokenLog情報作成
			return m_gsc.getBrokenLogInfo(id);

		} catch (SQLException e) {
			setAccessErrs(m_gsc);
			throw e;

		} finally {
			m_gsc.close();
		}

		
	}
	

	/**
	 * BrokenLogレコード削除処理
	 * 
	 */
	public boolean del(ArrayList list)  {
		int i = 0;
		
		if(list.isEmpty()){
			return false;
		}
		for (i=0; i<list.size(); i++){
		try {
			if (!connect(m_gsc)) {
				return false;
			}

			//データ更新
			BrokenLogInfo tmpBrokenLogInfo = (BrokenLogInfo)list.get(i);
			if (m_gsc.delBrokenLog(tmpBrokenLogInfo.getServerid(), tmpBrokenLogInfo.getDatetime())) {
				m_gsc.commit();
			} else {
				m_gsc.rollback();
			}

		} finally {
			m_gsc.close();
			if( m_gsc.isErrInfo() ){
				setAccessErrs(m_gsc);
				return false;
			}
		}
		}
		return true;
	}
	
	//TODOMASU いらない？BrokenLogをモディファイすることはない
	/**
	 * ハッシュ関数削除処理
	 * 
	 */
//	public boolean mod(BrokenLogInfo brokenLogInfo) {
////		
////		try {
////			if (!connect(m_gsc)) {
////				return false;
////			}
////
////			//データ更新
////			
////			//MASUCOMMENT ServerIDとタイムスタンプで削除するのがよいか？
////			if (m_gsc.delBrokenLog(brokenLogInfo.getServerid())&& m_gsc.addBrokenLog(brokenLogInfo)) {
////				m_gsc.commit();
////			} else {
////				m_gsc.rollback();
////			}
////
////		} finally {
////			m_gsc.close();
////			if( m_gsc.isErrInfo() ){
////				setAccessErrs(m_gsc);
////				return false;
////			}
////		}
//		return true;
//	}

	
}
