package com.eactive.eai.adapter.wca.jdbc;

import java.util.Hashtable;
import java.util.Vector;

/** 
* 1. 기능 : 검색된 SQL 데이타 저장한 Object
* 2. 처리 개요 : 
* 3. 주의사항 
*
* @author  : 
* @version : v 1.0.0
* @see : 
* @since   : 
*/
public class SQLData
{
	Hashtable ht_data = new Hashtable();    // SQL DATA 저장
	Vector    v_colName = new Vector();     // Column Name 저장
    
	int i_total_rows_cnt; 				    // 전체 데이타 수
	int i_total_columns_cnt; 				 	// 전체 컬럼의 수
	int i_total_pages_cnt; 					// 전체 페이지 수
	int i_disp_rows_cnt; 						// 한 화면에 보여줄수 있는 데이타수
	int i_disp_pages_cnt; 					// 한 화면에 보여줄수 있는 페이지수
	int i_current_page_num; 					// 현재 page 번호
	int i_disp_datas_cnt = -1; 				// 한 화면에 보여주는 데이타 수
  
	String DEFAULT_FIRST_BUTTON = "/btn_first_page.gif";
	String DEFAULT_PREV_BUTTON  = "/btn_pre_page.gif";
	String DEFAULT_NEXT_BUTTON  = "/btn_next_page.gif";
	String DEFAULT_LAST_BUTTON  = "/btn_end_page.gif";
  
	/**    
	 *   Hashtable에 검색된 SQL 데이타를 SET
	 *               key -> (s_name + i_row_num )
	 *               value -> s_value   
	 */
	public void setHashData (int i_row_num, String s_name, String s_value) {
		this.i_disp_datas_cnt = i_row_num;
		String s_key = s_name + i_row_num;
	
		if (s_value == null) {
			s_value = "";
		}
		ht_data.put((Object)s_key, s_value);
	}
  
	/**
	 *  Column Name을 SET
	 */
	public void setColumnName(String s_name) {
		v_colName.addElement(s_name);
	}

	/**
	 *   Column Name들을 GET  
	 */
	public Vector getColumnName() {
		return v_colName;
	}


	/**
	 *  검색된 전체 데이타 ROW 수 SET   
	 */
	public void setTotalRowsCount(int i_total_rows_cnt) {
		this.i_total_rows_cnt = i_total_rows_cnt;
	}

	/**
	 *   검색된 전체 데이타 COLUMN 수 SET
	 */
	public void setTotalColumnsCount(int i_total_columns_cnt) {
		this.i_total_columns_cnt = i_total_columns_cnt;
	}

	/**
	 *   한화면에 표시될 데이타 ROW 수 SET   
	 */
	public void setDispRowsCount(int i_disp_rows_cnt) {
		this.i_disp_rows_cnt = i_disp_rows_cnt;
	}

	/**
	 *   현재 page번호 SET   
	 */
	public void setCurrentPageNum(int i_current_page_num) {
		this.i_current_page_num = i_current_page_num;
	}

	/**
	 *   한 화면에 표시될 페이지이동번호 수 SET
	 *   @param i_disp_pages_cnt     페이지번호의 수
	 */
	public void setDispPagesCount(int i_disp_pages_cnt) {
		this.i_disp_pages_cnt = i_disp_pages_cnt;
	}

	/**
	 *   전체 페이지 수 SET   
	 */
	public void setTotalPagesCount(int i_total_pages_cnt) {
		if (i_disp_rows_cnt != 0) {
			this.i_total_pages_cnt = i_total_pages_cnt;
		}
	}

	/**
	 *   검색된 전체 데이타 ROW 수 GET
	 */
	public int getTotalRowsCount() {
		return i_total_rows_cnt;
	}

	/**
	 *   검색된 전체 데이타 COLUMN 수 GET
	 */
	public int getTotalColumnsCount() {
		return i_total_columns_cnt;
	}

	/**
	 *   한화면에 표시될 데이타 ROW 수 SET	 
	 **/
	public int getDispRowsCount() {
		return i_disp_rows_cnt;
	}

	/**
	 *   전체 page 수를 GET
	 *   @return 전체 page 수
	 */
	public int getTotalPagesCount() {
		return i_total_pages_cnt;
	}

	/**
	 *   현재 page번호 SET   
	 */
	public int getCurrentPageNum() {
		return i_current_page_num;
	}
	 
	/**
	 *   전체 페이지 수 GET	 
	 */
	public int getDispDatasCount() {
		if (i_disp_datas_cnt == -1) {
			return i_disp_datas_cnt;
		}
		else {
			return i_disp_datas_cnt + 1;
		}
	}
	
	/**
	 *   s_key에 해당되는 value를 GET   
	 */
	public String getSQLStringData(String s_key) {
		Object o = ht_data.get( (Object) s_key);
	
		if (o == null) {
			return ""; 
		}
		else {	
			return o.toString().trim();
		}
	}
  
	public String getSQLStringData(String keyStr, int index) {
		return getSQLStringData(keyStr + index);  
	}

	public int getSQLIntData(String s_key) {
		//return Integer.parseInt(ht_data.get( (Object) s_key).toString().trim());
		Object o = ht_data.get( (Object) (s_key));
		if (o == null || o.equals("")) {
			o = (Object)"0";
		}
		return Integer.parseInt((String)o);
	}

	public int getSQLIntData(String s_key, int index) {
		Object o = ht_data.get( (Object) (s_key + index));
	
		if (o == null || o.equals("")) {
			o = (Object)"0";
		}
		return Integer.parseInt((String)o);
  }
  
	/**
	 *   페이지 분할 HTML 데이타	 
	 */
	public String getPageHtmlData(String s_javascript, String s_imagePath) {	
		// 이미지
		String btn_first = " <img src='"  + s_imagePath + DEFAULT_FIRST_BUTTON + "' border ='0' align='absmiddle'>";
		String btn_prev  = " <img src='"  + s_imagePath + DEFAULT_PREV_BUTTON + "' border ='0' align='absmiddle'>";
		String btn_next  = " <img src='"  + s_imagePath + DEFAULT_NEXT_BUTTON + "' border ='0' align='absmiddle'>";
		String btn_last  = " <img src='"  + s_imagePath + DEFAULT_LAST_BUTTON + "' border ='0' align='absmiddle'>";
	  
		return getPageHtmlData(s_javascript, btn_first, btn_prev, btn_next, btn_last);
	}
   
	public String getPageHtmlData(String s_javascript) {  
		String btn_first = "|◀";
		String btn_prev  = "◀";
		String btn_next  = "▶";
		String btn_last  = "▶|";
		return getPageHtmlData(s_javascript, btn_first, btn_prev, btn_next, btn_last);
	}
   
	public String getPageHtmlData(String s_javascript, String btn_first, String btn_prev, String btn_next, String btn_last) {	
		StringBuffer sb_page = new StringBuffer();
      
		// page를 나누지 않을 경우
		if (i_disp_pages_cnt == 0) {
			return "";
		}
	  
		//데이타가 존재하지 않을 경우
		if (i_total_rows_cnt == 0) {	
			//sb_page.append("데이타가 존재하지 않습니다.");
		}			  
		else {	    
			// 페이지 분할 할 경우 
			if (i_total_pages_cnt != 0 ) {
				// 페이지번호의 시작번호
				int i_start_page_num = 1;
				// 페이지번호의 마지막번호
				int i_end_page_num = 1;
				// 이전페이지 이동시의 시작페이지번호
				int i_prev_page_num = 1;
				// 다음페이지 이동시의 시작페이지번호
				int i_next_page_num = 1;
			 
				// 이전 페이지 번호
//				int i_prev_num = i_current_page_num - 1;
//				int i_next_num = i_current_page_num + 1;
			 
				// 시작페이지
				i_start_page_num = ( (i_current_page_num - 1) / i_disp_pages_cnt) * i_disp_pages_cnt + 1;				
				// 마지막 페이지
				i_end_page_num = ( (i_current_page_num - 1) / i_disp_pages_cnt) * i_disp_pages_cnt + i_disp_pages_cnt;
			
				if (i_end_page_num > i_total_pages_cnt) {
					i_end_page_num = i_total_pages_cnt;		  
				}
	
				// 처음으로
				if (i_current_page_num > 1) {
					sb_page.append("<a href=\"javascript:" + s_javascript + "(1);\">" + btn_first + "</a>");			  
				}
				else {
					sb_page.append(btn_first);
				}

				//이전페이지
				if (i_start_page_num > i_disp_pages_cnt) {
					i_prev_page_num = i_start_page_num - 1;
					sb_page.append("<a href=\"javascript:" + s_javascript + "('" + i_prev_page_num + "');\">" + btn_prev + "</a>");								  
				}
				else {				
					sb_page.append(btn_prev);	
				}
			
				//페이지 번호 이동
				for (int i_pageNum = i_start_page_num; i_pageNum <= i_end_page_num; i_pageNum++) {
					if (i_pageNum == i_current_page_num) {
						//sb_page.append("<font color='red'>[" + i_pageNum + "]</font>");
						sb_page.append(" | <span class=\"text04_eng\">" + i_pageNum + "</span>");
					}
					else {
						sb_page.append(" | <a class =\"case2\" href=\"javascript:" + s_javascript + "('" + i_pageNum + "');\">" + i_pageNum + "</a>");
					}
				}
			
				sb_page.append(" | ");
            
				// 다음 페이지
				if (i_end_page_num < i_total_pages_cnt) {
					i_next_page_num = i_end_page_num + 1;
					sb_page.append("<a href=\"javascript:" + s_javascript + "('" + i_next_page_num + "');\">" + btn_next  + "</a>");			  
				}
				else {	
					sb_page.append(btn_next);
				}

				// 마지막 페이지
				if (i_current_page_num < i_total_pages_cnt) {
					sb_page.append("<a href=\"javascript:" + s_javascript + "('" + i_total_pages_cnt + "');\">" + btn_last  + "</a>");
				}
				else { 
					sb_page.append(btn_last);			
				}
			}	  
		}	 
		return sb_page.toString();
	}
}