rendered paste body public void saveUserObject(SqlUser user, String username) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(user);
PreparedStatement ps = null;
//check if user exists
if(!userExistsInDB(username)) {
ps = cn.prepareStatement("INSERT INTO " + userTable + " (userName, userObject) VALUES (?, ?)");
ps.setString(1, username);
ps.setBytes(2, bos.toByteArray());
} else {
ps = cn.prepareStatement("UPDATE " + userTable + " SET userObject = ? WHERE userName = ? LIMIT 1");
ps.setBytes(1, bos.toByteArray());
ps.setString(2, username);
}
ps.executeUpdate();
ps.close();
oos.close();
bos.close();
} catch (Exception ex) {
throw new RuntimeException("Exception in saveUserObject()", ex);
}
}
private boolean userExistsInDB(String username) {
try {
PreparedStatement ps = cn.prepareStatement("SELECT userObject FROM " + userTable + " WHERE userName = ? LIMIT 1");
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
boolean userExists = false;
if(rs.next())
userExists = true;
rs.close();
ps.close();
return userExists;
} catch (Exception ex) {
throw new RuntimeException("Exception in userExistsInDB()", ex);
}
}
public SqlUser getUserObject(String username) {
try {
PreparedStatement ps = cn.prepareStatement("SELECT userObject FROM " + userTable + " WHERE userName = ? LIMIT 1");
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
if(!rs.next())
return null;
byte[] bytes = rs.getBytes(1);
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
SqlUser user = (SqlUser) ois.readObject();
bis.close();
ois.close();
rs.close();
ps.close();
return user;
} catch (Exception ex) {
throw new RuntimeException("Exception in getUserObject()", ex);
}
}