//
//  Person.java
//
//  En Person-klass som gör JDBC-anrop för lagring m m
//  OBS! Går endast i JDK 1.1-miljöer
//
//  Från boken "Programutveckling med Java"
//  (c) Hans-Erik Eriksson & Studentlitteratur 1997
//  Version: 1.1
//  Information & uppdateringar:
//  http://www.objektteknik.se/java

import java.sql.*;

public class Person
{
    private String pnr;
    private String name;
    private String adress;
    private String adress2;
    private String email;
    private int age;
    private static Connection dbconn = null;

    Person(String p, String n, String a, String a2, String em, int ag)
    {
        pnr = p;
        name = n;
        adress = a;
        adress2 = a2;
        email = em;
        age = ag;
    }
    Person()
    {
        
    }
    public void setPnr(String p)
    {
        pnr = p;
    }
    public String getPnr()
    {
        return pnr;   
    }
    public void setName(String n) 
    {
        name = n;
    }
    public String getName()
    {
        return name;   
    }
    public void setAdress(String a)
    {
        adress = a;   
    }
    public String getAdress()
    {
        return adress;   
    }
    public void setAdress2(String a2)
    {
        adress2 = a2;   
    }
    public String getAdress2()
    {
        return adress2;   
    }
    public void setEmail(String em)
    {
        email = em;   
    }
    public String getEmail()
    {
        return email;
    }
    public void setAge(int ag)
    {
        age = ag;
    }
    public void setAgeFromString(String ag)
    {
        age = (Integer.decode(ag)).intValue();
    }
    public int getAge()
    {
        return age;   
    }
    public String getAgeAsString()
    {
        return (new String(Integer.toString(age)));
    }
    public static boolean connect()
        throws SQLException
    {
        // Denna rad kan vara nödvändig för att installera driver:
        // Class.forName("<namn på driver, exvis JDBCODBCDriver>");
        try
        {
            Class.forName("jdbcodbc.class");
        }
        catch (ClassNotFoundException e)
        {
            return false;
        }

        dbconn =
            DriverManager.getConnection("jdbc:odbc:person","","");
        if (dbconn == null)
            return false;
        else
            return true;
    }
    public boolean deletePerson()
        throws SQLException
    {
        PreparedStatement delete =
            dbconn.prepareStatement("DELETE Persontable WHERE " +
                "Persontable.pnr = ?");
        delete.setString(1,pnr);
        int deleted = delete.executeUpdate();
        delete.close();
        if (deleted >= 1)
            return true;
        else
            return false;

    }
    public boolean updatePerson()
        throws SQLException
    {
        PreparedStatement update =
            dbconn.prepareStatement("UPDATE Persontable " +
                "SET name = ?, SET adress = ?, SET adress2 = ?, " +
                "SET email = ?, SET age = ? WHERE pnr = ? ");
        update.setString(1,name);
        update.setString(2,adress);
        update.setString(3,adress2);
        update.setString(4,email);
        update.setInt(5,age);
        update.setString(6,pnr);
        int updated = update.executeUpdate();
        update.close();
        if (updated == 1)
            return true;
        else
            return false;
        

    }
    
    public boolean insertPerson()
        throws SQLException
    {
        PreparedStatement insert =
            dbconn.prepareStatement("INSERT Persontable SET pnr = ?, " +
                "SET name = ?, SET adress = ?, SET adress2 = ?, " +
                "SET email = ?, SET age = ?");
        insert.setString(1,pnr);
        insert.setString(2,name);
        insert.setString(3,adress);
        insert.setString(4,adress2);
        insert.setString(5,email);
        insert.setInt(6,age);
        int inserted = insert.executeUpdate();
        insert.close();
        if (inserted == 1)
            return true;
        else
            return false;
        

    }
    public static Person findPerson(String seekPnr)
        throws SQLException
    {
        PreparedStatement select =
            dbconn.prepareStatement("SELECT pnr, name, adress, adress2, email, age" +
                " FROM Persontable WHERE pnr = ?");
        select.setString(1,seekPnr);
        ResultSet rs =
            select.executeQuery();

        rs.next();
        String p = rs.getString("pnr");
        String n = rs.getString("name");
        String a = rs.getString("adress");
        String a2 = rs.getString("adress2");
        String em = rs.getString("email");
        int ag = rs.getInt("age");
        select.close();
        return new Person(p,n,a,a2,em,ag);
    }
}


