package searchitem;

import java.io.*;
import java.sql.*;
import java.util.Date;

import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class SearchItemBean implements SessionBean {

    private SessionContext ctx;
    int totalListNum;
    int page;
    int totalPage;
    int pageListNum;

    public SearchItemBean( ) {
    }
    public void loadDriver ( ) throws ClassNotFoundException, Exception {
    Class.forName ( "oracle.jdbc.driver.OracleDriver" ) .newInstance ( ) ;
    }
    public BoardData[] search ( String SearchCode , String SearchString ) throws SQLException {
    Date date ;
    int i ;
    String url = "jdbc:oracle:thin:@localhost:1521:etri" ;
    Connection con ;
    Statement stmt ;
    String SQLParam = "%"+SearchString+"%" ;
    String query = "select BNUM, BDATE, BNAME, BEMAIL, BTITLE from board " ;
    if ( SearchCode.indexOf ( "namesearch" ) != -1 ) {
    query = query + "where BNAME like '" + hangulTo ( SQLParam.trim ( ) ) + "' " ;
    System.out.println ( query ) ;
    }
    else query = query + "where BTITLE like '" + SQLParam.trim() + "' ";
    String CountQuery = "select count ( * ) as rc from board " ;
    if ( SearchCode.indexOf ( "namesearch" ) != -1 ) {
    CountQuery = CountQuery + "where BNAME like '" + SQLParam.trim ( ) + "' " ;
    System.out.println ( CountQuery ) ;
    }
    else CountQuery = CountQuery + "where BTITLE like '" + SQLParam.trim() + "' ";
    con = DriverManager.getConnection ( url, "scott", "tiger" ) ;
    stmt = con.createStatement ( ) ;
    ResultSet rc = stmt.executeQuery ( CountQuery ) ;
    rc.next ( ) ;
    int RecordCount = rc.getInt ( "rc" ) ;
    totalListNum = RecordCount ;
    if ( totalListNum == 0 ) return null;
    totalPage = totalListNum/HTMLLib.LINENUM+1 ;
    if ( totalListNum!= 0 && pageListNum == 0 ) pageListNum=HTMLLib.LINENUM;
    BoardData[] bd = new BoardData[totalListNum] ;
    i = 0 ;
    ResultSet rs = stmt.executeQuery ( query ) ;
    while ( rs.next ( ) ) {
    bd[i] = new BoardData ( rs.getInt ( "BNUM" ) , rs.getDate ( "BDATE" ) , rs.getString("BTITLE"),  rs.getString("BNAME"), rs.getString("BEMAIL"), null, null);
    i++ ;
    }
    stmt.close ( ) ;
    con.close ( ) ;
    return bd ;
    }
    public int getTotalListNum ( ) {
    return totalListNum ;
    }
    public int getTotalPage ( ) {
    return totalPage ;
    }
    public int getPageListNum ( ) {
    return pageListNum ;
    }
    private String toHangul ( String str ) {
    if ( str == null ) return null;
    try {
    return new String ( str.getBytes ( "8859_1" ) , "KSC5601" ) ;
    }
    catch ( UnsupportedEncodingException e ) {
    }
    return null ;
    }
    private String hangulTo ( String str ) {
    if ( str == null ) return null;
    try {
    return new String ( str.getBytes ( "KSC5601" ) , "8859_1" ) ;
    }
    catch ( UnsupportedEncodingException e ) {
    }
    return null ;
    }

    public void log(String s) {
        System.out.println(s);
    }

    public void ejbActivate() {
        log("ejbActivate called");
    }

    public void ejbRemove() {
        log("ejbRemove called");
    }

    public void ejbPassivate() {
        log("ejbPassivate called");
    }

    public void setSessionContext(SessionContext ctx) {
        log("setSessionContext called");
        this.ctx = ctx;
    }

    public void ejbCreate() throws CreateException{
        log("ejbCreate called");
        try {
            InitialContext ic = new InitialContext();
        } catch (NamingException ne) {
            throw new CreateException("Failed to find environment value "+ne);
        }
    }

}
