//Jaakko Ojalehto
package teht26;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;


public class DAO {
    private Connection myCon;
    public DAO() {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            myCon = DriverManager.getConnection("jdbc:mysql://mysql.metropolia.fi/jaakkooj",
            "jaakkooj", "kello67");
        }
        catch(Exception e) {
            System.out.println("Connection Failed");
            e.printStackTrace();
        }
    }
    protected void finalize(){
        try {
            if (myCon!=null)myCon.close();
        }
        catch(Exception e){e.printStackTrace();}
    }
    public EntryBean getEntry(int id){
    EntryBean entry = null;
    Statement myStatement = null;
    ResultSet myRs = null;
    try{
        myStatement = myCon.createStatement();

        PreparedStatement selectById = myCon.prepareStatement(
        "SELECT * FROM entry WHERE id= ? ");
        selectById.setInt(1, id);
        myRs = selectById.executeQuery();
       
        if (myRs.next()) {
        String rs_entry = myRs.getString("entry");
        entry = new EntryBean(); 
        entry.setEntry(rs_entry);
        }
    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally{
    try{
    if (myRs!=null)
        myRs.close();
    if (myStatement!=null)
        myStatement.close();
    } catch(Exception e){e.printStackTrace();}
    }
    return entry;
    }
    
    public EntryBean[] getEntries(String haku){
        List list = new ArrayList();
        Statement myStatement = null;
        ResultSet myRs = null;
        try{
            myStatement = myCon.createStatement();
            PreparedStatement selectById = myCon.prepareStatement(
            "SELECT * FROM entry WHERE entry LIKE ?");
            selectById.setString(1, "%" + haku + "%");
            myRs = selectById.executeQuery();
            
            while (myRs.next()) {
            String rs_entry = myRs.getString("entry");
            EntryBean entry = new EntryBean();
            entry.setEntry(rs_entry);
            list.add(entry);
            }
        }
        catch(Exception e){e.printStackTrace();}
        finally {
            try {
                if (myRs!=null)
                    myRs.close();
                if (myStatement!=null)
                    myStatement.close();
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
        EntryBean[] returnArray = new EntryBean[list.size()];
        return (EntryBean[])list.toArray(returnArray);
    }

    public void lisää(String lisäys){
        Statement myStatement = null;
        try{
            myStatement = myCon.createStatement();
            PreparedStatement selectById = myCon.prepareStatement(
            "INSERT INTO entry (entry) VALUES (?)");
            selectById.setString(1, lisäys);
            selectById.executeUpdate();
            }
        catch(Exception e){e.printStackTrace();}

    }
}

