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

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

/**
 * 管理者ログインクラス
 * 
 * 管理者メニューのログイン（データベースへの接続）を行う。
 */
public class LoginAction extends ActionBase  {

	/**
	 * @param gsc
	 */
	public LoginAction() {
		super(null);
		// TODO 自動生成されたコンストラクター・スタブ
	}
	/**
	 * 管理者メニューログインメイン処理
	 * 
	 * <pre>
	 * 入力情報"loginInfo"から、以下の処理を行う。
	 * ・GSCクラスの生成
	 * ・GSCクラスのデータベースコネクト（ログイン）
	 * ・GSCクラスのセッション・プロパティへ設定
	 * 
	 * </pre>
	 */
	public boolean login(LoginInfo login)  {
		// TODO Auto-generated method stub
		
		boolean ret = false;
		

		
		//入力情報取得
		String userName = login.getUser();
		String password = login.getPassword();

		//GSCクラス生成
		m_gsc = new GSCdata(userName, password);

		//接続情報設定
		String hostName = login.getHostname();
		String portNo = login.getPortno();
		String dbName = login.getDbname();
		if(dbName != null && dbName.compareTo("") != 0 ){
			m_gsc.addUrl(hostName, portNo, dbName);
		}
		
		
		//サーバへの接続(ログイン)
		try {
			if (!connect(m_gsc)) {
				return ret;
			}
			
			//GSC情報を更新
			if (!m_gsc.updateGscServer()) {
				setAccessErrs("errors.db.connect", m_gsc);
				return ret;
			}
			
			m_gsc.close();

			if (!connect(m_gsc)) {
				return ret;
			}

		} finally {
			m_gsc.close();
		}
		
		ret = true;
		
		return ret;


	}
	public GSCdata getGsc() {
		return m_gsc;
	}

}
