diff --git a/src/main/java/database/DatabaseHelper.java b/src/main/java/database/DatabaseHelper.java index 7ae4616..61120c2 100644 --- a/src/main/java/database/DatabaseHelper.java +++ b/src/main/java/database/DatabaseHelper.java @@ -10,6 +10,7 @@ public class DatabaseHelper { private static final String DATABASE_PWD = "vHEQszGXcJ6;/)}z!V"; private final static String DATABASE_URL = "jdbc:postgresql://37.187.101.44:5432/"+DATABASE_NAME; + public ConnectionSource setupDatabaseConnection(){ try{ return new JdbcConnectionSource(DATABASE_URL, DATABASE_USER, DATABASE_PWD); diff --git a/src/main/java/database/Wallet/WalletDao.java b/src/main/java/database/Wallet/WalletDao.java index c4cd4b8..c433aa3 100644 --- a/src/main/java/database/Wallet/WalletDao.java +++ b/src/main/java/database/Wallet/WalletDao.java @@ -16,23 +16,26 @@ import java.util.List; public class WalletDao { private DatabaseHelper dbh = new DatabaseHelper(); private Dao walletDao; - - private Dao createWalletDaoConnection(){ + private boolean sessionOpen = false; + private void createWalletDaoConnection(){ try { - return DaoManager.createDao(dbh.setupDatabaseConnection(),Wallet.class); + if(!sessionOpen){ + walletDao = DaoManager.createDao(dbh.setupDatabaseConnection(),Wallet.class); + sessionOpen=true; + } + }catch (Exception e){ - System.out.println(e.getMessage()); - return null; + e.printStackTrace(); } } public void addWallet(Wallet wallet)throws Exception { - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); walletDao.create(wallet); } public Wallet getWallet(String walletHash) throws Exception { - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); QueryBuilder queryBuilder = walletDao.queryBuilder(); queryBuilder.where().eq("wallet_hash",walletHash).and().eq("is_active",true); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -40,8 +43,7 @@ public class WalletDao { } public void updateWalletBalance(String walletHash, double newBalance) throws Exception { - - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); UpdateBuilder updateBuilder = walletDao.updateBuilder(); long now = Instant.now().toEpochMilli(); updateBuilder.updateColumnValue("balance",newBalance); @@ -51,7 +53,7 @@ public class WalletDao { } public List getUserWallet(String userHash) throws Exception { - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); QueryBuilder queryBuilder = walletDao.queryBuilder(); queryBuilder.where().eq("user_hash",userHash).and().eq("is_active",true); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -59,7 +61,7 @@ public class WalletDao { } public List getUserOldWallets(String userHash) throws Exception{ - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); QueryBuilder queryBuilder = walletDao.queryBuilder(); queryBuilder.where().eq("user_hash",userHash).and().eq("is_active",false); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -67,7 +69,7 @@ public class WalletDao { } public void transferWallet(String walletHash, String newUserHash) throws Exception{ - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); UpdateBuilder updateBuilder = walletDao.updateBuilder(); updateBuilder.updateColumnValue("user_hash",newUserHash); long now = Instant.now().toEpochMilli(); @@ -77,7 +79,7 @@ public class WalletDao { } public void deleteWallet(String walletHash, String userHash) throws Exception{ - walletDao = createWalletDaoConnection(); + createWalletDaoConnection(); UpdateBuilder updateBuilder = walletDao.updateBuilder(); updateBuilder.updateColumnValue("is_active",false); long now = Instant.now().toEpochMilli(); diff --git a/src/main/java/database/session/SessionDao.java b/src/main/java/database/session/SessionDao.java index e415d0d..8473c39 100644 --- a/src/main/java/database/session/SessionDao.java +++ b/src/main/java/database/session/SessionDao.java @@ -9,24 +9,27 @@ import java.time.Instant; public class SessionDao { private DatabaseHelper dbh = new DatabaseHelper(); private Dao sessionDao; - - private Dao createSessionDaoConnection(){ + private boolean sessionOpen = false; + private void createSessionDaoConnection(){ try { - return DaoManager.createDao(dbh.setupDatabaseConnection(),Session.class); + if(!sessionOpen){ + sessionDao = DaoManager.createDao(dbh.setupDatabaseConnection(),Session.class); + sessionOpen=true; + } + }catch (Exception e){ - System.out.println(e.getMessage()); - return null; + e.printStackTrace(); } } public int setStartSession(Session session) throws Exception { - sessionDao = createSessionDaoConnection(); + createSessionDaoConnection(); sessionDao.create(session); return session.getSession_id(); } public void setEndSession(int session_id) throws Exception { - sessionDao = createSessionDaoConnection(); + createSessionDaoConnection(); UpdateBuilder updateBuilder = sessionDao.updateBuilder(); long now = Instant.now().toEpochMilli(); updateBuilder.updateColumnValue("end_session",now); diff --git a/src/main/java/database/transaction/TransactionDao.java b/src/main/java/database/transaction/TransactionDao.java index 42cf198..c55d65e 100644 --- a/src/main/java/database/transaction/TransactionDao.java +++ b/src/main/java/database/transaction/TransactionDao.java @@ -11,33 +11,25 @@ import java.util.List; public class TransactionDao { private DatabaseHelper dbh = new DatabaseHelper(); private Dao transactionDao; - - private Dao createTransactionDaoConnection(){ + private boolean sessionOpen = false; + private void createTransactionDaoConnection(){ try { - return DaoManager.createDao(dbh.setupDatabaseConnection(),Transaction.class); + if(!sessionOpen){ + transactionDao = DaoManager.createDao(dbh.setupDatabaseConnection(),Transaction.class); + sessionOpen=true; + } }catch (Exception e){ - System.out.println(e.getMessage()); - return null; + e.printStackTrace(); } } public void addTransaction(Transaction transaction)throws Exception{ - transactionDao = createTransactionDaoConnection(); + createTransactionDaoConnection(); transactionDao.create(transaction); } public List getWalletTransactions(String wallet_hash)throws Exception{ - transactionDao = createTransactionDaoConnection(); - QueryBuilder queryBuilder = transactionDao.queryBuilder(); - queryBuilder.where().eq("transaction_from",wallet_hash).or().eq("transaction_to",wallet_hash); - queryBuilder.orderBy("transaction_date",false); - PreparedQuery preparedQuery = queryBuilder.prepare(); - return transactionDao.query(preparedQuery); - } - - /* - public List getTenLastUserTransactions(String wallet_hash)throws Exception{ - transactionDao = createTransactionDaoConnection(); + createTransactionDaoConnection(); QueryBuilder queryBuilder = transactionDao.queryBuilder(); queryBuilder.where().eq("transaction_from",wallet_hash).or().eq("transaction_to",wallet_hash); queryBuilder.limit(new Long(10)); @@ -45,10 +37,9 @@ public class TransactionDao { PreparedQuery preparedQuery = queryBuilder.prepare(); return transactionDao.query(preparedQuery); } - */ public Transaction getTransaction(String wallet_hash, String transaction_hash)throws Exception{ - transactionDao = createTransactionDaoConnection(); + createTransactionDaoConnection(); QueryBuilder queryBuilder = transactionDao.queryBuilder(); queryBuilder.where().eq("transaction_to",wallet_hash).or().eq("transaction_from",wallet_hash).and().eq("transaction_hash",transaction_hash); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -56,7 +47,7 @@ public class TransactionDao { } public List getUserSentTransaction(String wallet_hash)throws Exception{ - transactionDao = createTransactionDaoConnection(); + createTransactionDaoConnection(); QueryBuilder queryBuilder = transactionDao.queryBuilder(); queryBuilder.where().eq("transaction_from",wallet_hash); queryBuilder.orderBy("transaction_date",false); @@ -65,7 +56,7 @@ public class TransactionDao { } public List getUserReceivedTransaction(String wallet_hash)throws Exception{ - transactionDao = createTransactionDaoConnection(); + createTransactionDaoConnection(); QueryBuilder queryBuilder = transactionDao.queryBuilder(); queryBuilder.where().eq("transaction_to",wallet_hash); queryBuilder.orderBy("transaction_date",false); @@ -73,5 +64,4 @@ public class TransactionDao { return transactionDao.query(preparedQuery); } - } diff --git a/src/main/java/database/user/UserDao.java b/src/main/java/database/user/UserDao.java index 0fd7d77..8369d91 100644 --- a/src/main/java/database/user/UserDao.java +++ b/src/main/java/database/user/UserDao.java @@ -12,24 +12,26 @@ import java.time.Instant; //Class to communicate with database with ORMLite public class UserDao { private DatabaseHelper dbh = new DatabaseHelper(); - private Dao createUserDaoConnection(){ + private boolean sessionOpen = false; + private Dao userDao ; + private void createUserDaoConnection(){ try { - return DaoManager.createDao(dbh.setupDatabaseConnection(),User.class); + if(!sessionOpen){ + userDao = DaoManager.createDao(dbh.setupDatabaseConnection(),User.class); + sessionOpen = true; + } }catch (Exception e){ - System.out.println(e.getMessage()); - return null; + e.printStackTrace(); } } public void addUser(User user)throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); userDao.create(user); } public boolean checkApprovedUser(String email) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -38,8 +40,7 @@ public class UserDao { } public boolean checkVerifiedUser(String email) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -48,8 +49,7 @@ public class UserDao { } public boolean updateUserPassword(String email, String password) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("password",password); long now = Instant.now().toEpochMilli(); @@ -65,16 +65,14 @@ public class UserDao { } public void deleteUser(String email) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); DeleteBuilder deleteBuilder = userDao.deleteBuilder(); deleteBuilder.where().eq("email",email); deleteBuilder.delete(); } public boolean verifyUserExist(String email) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -88,6 +86,7 @@ public class UserDao { } public boolean checkUserPassword(String email, String password) throws Exception { + createUserDaoConnection(); User user = getUserWithEmail(email); if(password.equals(user.getPassword())){ return true; @@ -97,11 +96,10 @@ public class UserDao { } public User getUserWithEmail(String email) throws Exception { - Dao userDao; + createUserDaoConnection(); if(!verifyUserExist(email)){ return null; }else{ - userDao = createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -110,8 +108,7 @@ public class UserDao { } public User getUserWithPhone(String phone) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("phone",phone); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -119,8 +116,7 @@ public class UserDao { } public User getUserWithMailAndPhone(String email, String phone) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("email",email).and().eq("phone",phone); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -128,8 +124,7 @@ public class UserDao { } public User getUserWithHash(String userHash) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("user_hash",userHash); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -137,8 +132,7 @@ public class UserDao { } public int getUserIdWithHashAndEmail(String userHash, String userEmail) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); QueryBuilder queryBuilder = userDao.queryBuilder(); queryBuilder.where().eq("user_hash",userHash).and().eq("email",userEmail); PreparedQuery preparedQuery = queryBuilder.prepare(); @@ -147,8 +141,7 @@ public class UserDao { } public void approveUser (String email) throws Exception { - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("approved",true); long now = Instant.now().toEpochMilli(); @@ -158,8 +151,7 @@ public class UserDao { } public void verifyUser (String email) throws Exception{ - Dao userDao; - userDao = createUserDaoConnection(); + createUserDaoConnection(); UpdateBuilder updateBuilder = userDao.updateBuilder(); updateBuilder.updateColumnValue("verified",true); long now = Instant.now().toEpochMilli();