]> WPIA git - gigi.git/blob - src/org/cacert/gigi/User.java
Factor out name handling.
[gigi.git] / src / org / cacert / gigi / User.java
1 package org.cacert.gigi;
2
3 import java.sql.PreparedStatement;
4 import java.sql.ResultSet;
5 import java.sql.SQLException;
6 import java.util.Date;
7
8 import org.cacert.gigi.database.DatabaseConnection;
9 import org.cacert.gigi.util.PasswordHash;
10
11 public class User {
12
13         private int id;
14         Name name;
15
16         Date dob;
17         String email;
18
19         public User(int id) {
20                 this.id = id;
21                 try {
22                         PreparedStatement ps = DatabaseConnection.getInstance().prepare(
23                                         "SELECT `fname`, `lname`, `dob` FROM `users` WHERE id=?");
24                         ps.setInt(1, id);
25                         ResultSet rs = ps.executeQuery();
26                         if (rs.next()) {
27                                 name = new Name(rs.getString(1), rs.getString(2));
28                                 dob = rs.getDate(3);
29                         }
30                         rs.close();
31                 } catch (SQLException e) {
32                         e.printStackTrace();
33                 }
34         }
35         public User() {
36         }
37         public int getId() {
38                 return id;
39         }
40         public String getFname() {
41                 return name.fname;
42         }
43         public String getLname() {
44                 return name.lname;
45         }
46         public String getMname() {
47                 return name.mname;
48         }
49         public Name getName() {
50                 return name;
51         }
52         public void setMname(String mname) {
53                 this.name.mname = mname;
54         }
55         public String getSuffix() {
56                 return name.suffix;
57         }
58         public void setSuffix(String suffix) {
59                 this.name.suffix = suffix;
60         }
61         public Date getDob() {
62                 return dob;
63         }
64         public void setDob(Date dob) {
65                 this.dob = dob;
66         }
67         public String getEmail() {
68                 return email;
69         }
70         public void setEmail(String email) {
71                 this.email = email;
72         }
73         public void setId(int id) {
74                 this.id = id;
75         }
76         public void setFname(String fname) {
77                 this.name.fname = fname;
78         }
79         public void setLname(String lname) {
80                 this.name.lname = lname;
81         }
82         public void insert(String password) throws SQLException {
83                 if (id != 0) {
84                         throw new Error("refusing to insert");
85                 }
86                 PreparedStatement query = DatabaseConnection.getInstance().prepare(
87                                 "insert into `users` set `email`=?, `password`=?, "
88                                                 + "`fname`=?, `mname`=?, `lname`=?, "
89                                                 + "`suffix`=?, `dob`=?, `created`=NOW(), locked=0");
90                 query.setString(1, email);
91                 query.setString(2, PasswordHash.hash(password));
92                 query.setString(3, name.fname);
93                 query.setString(4, name.mname);
94                 query.setString(5, name.lname);
95                 query.setString(6, name.suffix);
96                 query.setDate(7, new java.sql.Date(dob.getTime()));
97                 query.execute();
98                 id = DatabaseConnection.lastInsertId(query);
99                 System.out.println("Inserted: " + id);
100         }
101
102 }