blob: 0f032671c432e7e38d49d66a7efcb2a42b3f5d60 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
package uk.org.ury.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import uk.org.ury.database.exceptions.ConnectionFailureException;
import uk.org.ury.database.exceptions.MissingCredentialsException;
/**
* A database connection manager that connects to the URY databases
* using suitably privileged accounts, and handles the processing
* of SQL queries.
*
* @author Matt Windsor
*
*/
public class DatabaseDriver
{
/* The JDBC path used to connect to the URY database. */
private String DATABASE_PATH = "jdbc:postgresql://localhost/membership";
/* The database connection. */
private Connection conn;
/**
* Construct a new DatabaseDriver with the given user class.
*
* @param userclass The user class to log in to the database with.
*
* @throws IllegalArgumentException if the user class is
* not supported (this should not happen).
*
* @throws MissingCredentialsException if the user class
* login credentials could not be loaded.
*
* @throws ConnectionFailureException if the database
* backend failed to connect to the database
* server.
*/
public
DatabaseDriver (UserClass userclass) throws MissingCredentialsException, ConnectionFailureException
{
DatabaseLogin login = null;
switch (userclass)
{
case READ_ONLY:
login = DatabaseLogin.getLoginFromFile ("read_only.txt");
break;
case READ_WRITE:
login = DatabaseLogin.getLoginFromFile ("read_write.txt");
default:
throw new IllegalArgumentException ("Unused user class.");
}
try
{
System.out.println ("Trying to acquire connection...");
connect (login);
System.out.println ("...connection succeeded.");
}
catch (SQLException e)
{
throw new ConnectionFailureException (e.getMessage ());
}
}
public void
connect (DatabaseLogin login) throws SQLException
{
if (login == null)
throw new IllegalArgumentException ("Supplied null login.");
if (login.getUsername () == null)
throw new IllegalArgumentException ("Login has no associated username.");
if (login.getPassword () == null)
throw new IllegalArgumentException ("Login has no associated password.");
conn = DriverManager.getConnection (DATABASE_PATH,
login.getUsername (),
login.getPassword ());
}
/**
* Execute a SQL statement.
*
* @param sql The SQL statement to execute.
*
* @return the JDBC results set.
*/
public ResultSet
executeQuery (String sql)
{
try
{
Statement st = conn.createStatement ();
st.setFetchSize (50);
return st.executeQuery (sql);
}
catch (SQLException e)
{
e.printStackTrace ();
return null;
}
}
}
|