145 lines
5.4 KiB
Java
145 lines
5.4 KiB
Java
package database.user;
|
|
|
|
import com.j256.ormlite.dao.Dao;
|
|
import com.j256.ormlite.dao.DaoManager;
|
|
import com.j256.ormlite.stmt.DeleteBuilder;
|
|
import com.j256.ormlite.stmt.PreparedQuery;
|
|
import com.j256.ormlite.stmt.QueryBuilder;
|
|
import com.j256.ormlite.stmt.UpdateBuilder;
|
|
import database.DatabaseHelper;
|
|
import java.time.Instant;
|
|
|
|
//Class to communicate with database with ORMLite
|
|
public class UserDao {
|
|
private DatabaseHelper dbh = new DatabaseHelper();
|
|
private Dao<User, String> userDao;
|
|
|
|
private Dao createUserDaoConnection(){
|
|
try {
|
|
return DaoManager.createDao(dbh.setupDatabaseConnection(),User.class);
|
|
}catch (Exception e){
|
|
System.out.println(e.getMessage());
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public void addUser(User user)throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
userDao.create(user);
|
|
}
|
|
|
|
public boolean checkApprovedUser(String email) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User, String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("email",email);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
User user = userDao.queryForFirst(preparedQuery);
|
|
return user.isApproved();
|
|
}
|
|
|
|
public boolean checkVerifiedUser(String email) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User, String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("email",email);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
User user = userDao.queryForFirst(preparedQuery);
|
|
return user.isVerified();
|
|
}
|
|
|
|
public boolean updateUserPassword(String email, String password) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
UpdateBuilder<User, String> updateBuilder = userDao.updateBuilder();
|
|
updateBuilder.updateColumnValue("password",password);
|
|
long now = Instant.now().toEpochMilli();
|
|
updateBuilder.updateColumnValue("modification_date",now);
|
|
updateBuilder.where().eq("email",email);
|
|
updateBuilder.update();
|
|
|
|
if(checkUserPassword(email, password)){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public void deleteUser(String email) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
DeleteBuilder<User, String> deleteBuilder = userDao.deleteBuilder();
|
|
deleteBuilder.where().eq("email",email);
|
|
deleteBuilder.delete();
|
|
}
|
|
|
|
private boolean verifyUserExist(String email) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User, String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("email",email);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
User user = userDao.queryForFirst(preparedQuery);
|
|
|
|
if(user==null){
|
|
return false;
|
|
}else{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public boolean checkUserPassword(String email, String password) throws Exception {
|
|
User user = getUserWithEmail(email);
|
|
if(password.equals(user.getPassword())){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public User getUserWithEmail(String email) throws Exception {
|
|
if(!verifyUserExist(email)){
|
|
return null;
|
|
}else{
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User, String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("email",email);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
return userDao.queryForFirst(preparedQuery);
|
|
}
|
|
}
|
|
|
|
public User getUserWithHash(String userHash) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User,String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("user_hash",userHash);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
return userDao.queryForFirst(preparedQuery);
|
|
}
|
|
|
|
public int getUserIdWithHashAndEmail(String userHash, String userEmail) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
QueryBuilder<User,String> queryBuilder = userDao.queryBuilder();
|
|
queryBuilder.where().eq("user_hash",userHash).and().eq("email",userEmail);
|
|
PreparedQuery<User> preparedQuery = queryBuilder.prepare();
|
|
User userResponse = userDao.queryForFirst(preparedQuery);
|
|
return userResponse.getUserId();
|
|
}
|
|
|
|
|
|
public void approveUser (String email) throws Exception {
|
|
userDao = createUserDaoConnection();
|
|
UpdateBuilder<User, String> updateBuilder = userDao.updateBuilder();
|
|
updateBuilder.updateColumnValue("approved",true);
|
|
long now = Instant.now().toEpochMilli();
|
|
updateBuilder.updateColumnValue("modification_date",now);
|
|
updateBuilder.where().eq("email",email);
|
|
updateBuilder.update();
|
|
}
|
|
|
|
public void verifyUser (String email) throws Exception{
|
|
userDao = createUserDaoConnection();
|
|
UpdateBuilder<User, String> updateBuilder = userDao.updateBuilder();
|
|
updateBuilder.updateColumnValue("verified",true);
|
|
long now = Instant.now().toEpochMilli();
|
|
updateBuilder.updateColumnValue("modification_date",now);
|
|
updateBuilder.where().eq("email",email);
|
|
updateBuilder.update();
|
|
}
|
|
}
|