package database.user; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.dao.DaoManager; import com.j256.ormlite.stmt.PreparedQuery; import com.j256.ormlite.stmt.QueryBuilder; import com.j256.ormlite.stmt.UpdateBuilder; import database.DatabaseHelper; import java.sql.Timestamp; //Class to communicate with database with ORMLite public class UserDao { private DatabaseHelper dbh = new DatabaseHelper(); private Dao 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 queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); User user = userDao.queryForFirst(preparedQuery); return user.isApproved(); } public boolean checkVerifiedUser(String email) throws Exception { userDao = createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); User user = userDao.queryForFirst(preparedQuery); return user.isVerified(); } public boolean updateUserPassword(String email, String password) throws Exception { userDao = createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("password",password); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); updateBuilder.updateColumnValue("modification_date",timestamp.getTime()); updateBuilder.where().eq("email",email); updateBuilder.update(); if(checkUserPassword(email, password)){ return true; }else{ return false; } } private boolean verifyUserExist(String email) throws Exception { userDao = createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery 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 = getUser(email); if(password.equals(user.getPassword())){ return true; }else{ return false; } } public User getUser(String email) throws Exception { if(!verifyUserExist(email)){ return null; }else{ userDao = createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); return userDao.queryForFirst(preparedQuery); } } public void approveUser (String email) throws Exception{ userDao = createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("approved",true); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); updateBuilder.updateColumnValue("modification_date",timestamp.getTime()); updateBuilder.where().eq("email",email); updateBuilder.update(); } public void verifyUser (String email) throws Exception{ userDao = createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("verified",true); Timestamp timestamp = new Timestamp(System.currentTimeMillis()); updateBuilder.updateColumnValue("modification_date",timestamp.getTime()); updateBuilder.where().eq("email",email); updateBuilder.update(); } }