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

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

import org.postgresforest.tool.db.GSCdata;

/**
 * サーバステータスクラス
 * 
 * サーバステータスの取得・更新を行う。
 */
public class HashAction extends ActionBase{

	/**
	 * @param gsc
	 */
	public HashAction(GSCdata gsc) {
		super(gsc);
		// TODO 自動生成されたコンストラクター・スタブ
	}
	/**
	 * インスタンス登録処理
	 * 
	 */
	public boolean addHash(String name, String description, byte[] classImage) {
		
		try {
			//GSCへ接続
			if (!connect(m_gsc)) {
				return false;
			}
			
			//データ更新
			if (!m_gsc.addHash(name, description,classImage)) {
				m_gsc.rollback();
				return false;
			}

			//----------------
			//GSC更新日時更新
			//----------------
			if (!m_gsc.updateConfigDate()) {
				m_gsc.rollback();
				return false;
			}
			
			m_gsc.commit();
			
		} finally {
			m_gsc.close();
			if( m_gsc.isErrInfo() ){
				setAccessErrs(m_gsc);
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * ハッシュ関数削除処理
	 * 
	 */
	public boolean delHash(String id)  {
		
		try {
			if (!connect(m_gsc)) {
				return false;
			}

			//データ更新
			if (!m_gsc.delHash(id)) {
				m_gsc.rollback();
				return false;
			}
			//----------------
			//GSC更新日時更新
			//----------------
			if (!m_gsc.updateConfigDate()) {
				m_gsc.rollback();
				return false;
			}
			m_gsc.commit();

		} finally {
			m_gsc.close();
			if( m_gsc.isErrInfo() ){
				setAccessErrs(m_gsc);
				return false;
			}
		}
		return true;
	}	
	/**
	 * サーバステータス取得処理
	 * 
	 */
	public ArrayList getHashList() throws Exception {


		//データ作成
		ArrayList hashList = null;
		try {
			//接続
			if (!connectSelect(m_gsc)) {
				throw new Exception();
			}
			
			//サーバ情報作成
			hashList = m_gsc.getHashList();

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

		} finally {
			m_gsc.close();
		}

		return hashList;
	}
}
