1 package compbio.cassandra;
3 import java.util.ArrayList;
7 import org.apache.log4j.Logger;
8 import org.springframework.dao.DataIntegrityViolationException;
10 import com.datastax.driver.core.Row;
11 import com.datastax.driver.core.Session;
12 import com.datastax.driver.core.ResultSet;
13 import com.datastax.driver.core.exceptions.QueryExecutionException;
14 import com.datastax.driver.core.exceptions.QueryValidationException;
16 import compbio.proteocache.users.User;
17 import compbio.proteocache.users.UserManager;
19 public class CassandraUserManager implements UserManager {
20 private Session session;
21 private static Logger log = Logger.getLogger(CassandraNativeConnector.class);
23 public CassandraUserManager() {
24 Session inis = CassandraNativeConnector.getSession();
28 private void setSession(Session s) {
33 public boolean addUser(User user) throws DataIntegrityViolationException {
34 String chkcom = "SELECT * FROM Users WHERE email = '" + user.getEmail() + "';";
36 ResultSet users = session.execute(chkcom);
37 if (0 < users.all().size()) {
38 throw new DataIntegrityViolationException("A user with email " + user.getEmail() + " exists");
41 } catch (QueryExecutionException e) {
42 String mess = "CassandraUserManagerImpl.addUser: query execution exception...";
43 System.out.println(mess);
45 log.error(e.getLocalizedMessage(), e.getCause());
47 } catch (QueryValidationException e) {
48 String mess = "CassandraUserManagerImpl.addUser: query validation exception... Command: " + chkcom;
49 System.out.println(mess);
51 log.error(e.getLocalizedMessage(), e.getCause());
55 long id = user.getId().longValue();
57 String com = "SELECT * FROM MainParameters WHERE Name = 'MaxUserId';";
59 ResultSet values = session.execute(com);
60 List<Row> list = values.all();
61 if (0 < list.size()) {
62 String test = list.get(0).getString("Value");
63 id = Long.parseLong(test, 10);
65 // if the MaxUserId parameter does not exist it is inserted
70 com = "INSERT INTO MainParameters (name,value) VALUES ('MaxUserId','" + id + "');";
72 } catch (QueryExecutionException e) {
73 String mess = "CassandraUserManagerImpl.addUser: query execution exception...";
74 System.out.println(mess);
76 log.error(e.getLocalizedMessage(), e.getCause());
78 } catch (QueryValidationException e) {
79 String mess = "CassandraUserManagerImpl.addUser: query validation exception... Command: " + com;
80 System.out.println(mess);
82 log.error(e.getLocalizedMessage(), e.getCause());
87 String incom = "INSERT INTO Users (name, id, email, password, organisation, position, signedtolist, registrationdate) VALUES ('"
88 + user.getFullName() + "'," + id + ",'" + user.getEmail() + "','" + user.getPassword() + "','" + user.getOrganisation()
89 + "','" + user.getPosition() + "'," + user.isUpdateByEmail() + "," + user.getRegistrationDate().getTime() + ");";
91 session.execute(incom);
92 } catch (QueryExecutionException e) {
93 String mess = "CassandraUserManagerImpl.addUser: query execution exception...";
94 System.out.println(mess);
96 log.error(e.getLocalizedMessage(), e.getCause());
98 } catch (QueryValidationException e) {
99 String mess = "CassandraUserManagerImpl.addUser: query validation exception... Command: " + incom;
100 System.out.println(mess);
102 log.error(e.getLocalizedMessage(), e.getCause());
108 public boolean saveUser(User user) {
109 boolean isSaved = false;
110 String com = "SELECT * FROM Users WHERE id = " + user.getId() + ";";
112 ResultSet users = session.execute(com);
113 if (1 < users.all().size()) {
116 isSaved = addUser(user);
117 } catch (QueryExecutionException e) {
118 String mess = "CassandraUserManagerImpl.saveUser: query execution exception...";
119 System.out.println(mess);
121 log.error(e.getLocalizedMessage(), e.getCause());
122 } catch (QueryValidationException e) {
123 String mess = "CassandraUserManagerImpl.saveUser: query validation exception... Command: " + com;
124 System.out.println(mess);
126 log.error(e.getLocalizedMessage(), e.getCause());
131 public boolean deleteUser(long id) {
132 String com = "DELETE FROM Users WHERE id = " + id + ";";
134 session.execute(com);
135 } catch (QueryExecutionException e) {
136 String mess = "CassandraUserManagerImpl.deleteUser: query execution exception...";
137 System.out.println(mess);
139 log.error(e.getLocalizedMessage(), e.getCause());
141 } catch (QueryValidationException e) {
142 String mess = "CassandraUserManagerImpl.deleteUser: query validation exception... Command: " + com;
143 System.out.println(mess);
145 log.error(e.getLocalizedMessage(), e.getCause());
151 public User getUserById(long id) {
152 String com = "SELECT * FROM Users WHERE Id = " + id + ";";
153 User user = new User();
155 ResultSet users = session.execute(com);
156 if (1 != users.all().size()) {
159 user = buildUser(users.one());
160 } catch (QueryExecutionException e) {
161 String mess = "CassandraUserManagerImpl.addUser: query execution exception...";
162 System.out.println(mess);
164 log.error(e.getLocalizedMessage(), e.getCause());
166 } catch (QueryValidationException e) {
167 String mess = "CassandraUserManagerImpl.addUser: query validation exception... Command: " + com;
168 System.out.println(mess);
170 log.error(e.getLocalizedMessage(), e.getCause());
176 public User getUserByEmail(String email) {
177 String com = "SELECT * FROM Users WHERE Email = '" + email + "';";
178 User user = new User();
180 ResultSet users = session.execute(com);
181 if (1 != users.all().size()) {
184 user = buildUser(users.one());
185 } catch (QueryExecutionException e) {
186 String mess = "CassandraUserManagerImpl.getUserByEmail: query execution exception...";
187 System.out.println(mess);
189 log.error(e.getLocalizedMessage(), e.getCause());
191 } catch (QueryValidationException e) {
192 String mess = "CassandraUserManagerImpl.getUserByEmail: query validation exception... Command: " + com;
193 System.out.println(mess);
195 log.error(e.getLocalizedMessage(), e.getCause());
201 public List<User> findAllUsers() {
202 List<User> list = new ArrayList<User>();
203 String com = "SELECT * FROM Users;";
205 ResultSet results = session.execute(com);
206 List<Row> rows = results.all();
208 list.add(buildUser(r));
210 } catch (QueryExecutionException e) {
211 String mess = "CassandraUserManagerImpl.findAllUsers: query execution exception...";
212 System.out.println(mess);
214 log.error(e.getLocalizedMessage(), e.getCause());
216 } catch (QueryValidationException e) {
217 String mess = "CassandraUserManagerImpl.findAllUsers: query validation exception... Command: " + com;
218 System.out.println(mess);
220 log.error(e.getLocalizedMessage(), e.getCause());
226 private User buildUser(Row r) {
228 u.setFullName(r.getString("Name"));
229 u.setId(new Long(r.getLong("Id")));
230 u.setEmail(r.getString("Email"));
231 u.setPassword(r.getString("Password"));
232 u.setOrganisation(r.getString("Organisation"));
233 u.setPosition(r.getString("Position"));
234 u.setUpdateByEmail(r.getBool("SignedToList"));
235 u.setRegistrationDate(new Date(r.getLong("RegistrationDate")));