From b617aadbba8e207a20f8fb4615969df872ad6d24 Mon Sep 17 00:00:00 2001 From: GME Date: Thu, 27 Sep 2018 11:35:31 +0200 Subject: [PATCH] Setup UserDao Setup basic method to access and update data in DB --- .idea/caches/build_file_checksums.ser | Bin 535 -> 535 bytes app/build.gradle | 2 +- .../mobile/database/DatabaseHelper.java | 2 +- .../mobile/database/DatabaseTest.java | 4 +- .../mobile/database/DatabaseUserDao.java | 4 - .../main/java/monnethic/mobile/user/User.java | 105 +++++++++++- .../java/monnethic/mobile/user/UserDao.java | 119 ++++++++++++++ .../mobile/test/user/UserDaoTest.java | 151 ++++++++++++++++++ 8 files changed, 376 insertions(+), 11 deletions(-) delete mode 100644 app/src/main/java/monnethic/mobile/database/DatabaseUserDao.java create mode 100644 app/src/main/java/monnethic/mobile/user/UserDao.java create mode 100644 app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index a5c77b9430c9d416ba9050f34ff4a560aeb728a7..70d9f6313e5c4c2ac7f7abf6b317f8c5ba0d0516 100644 GIT binary patch delta 35 tcmV+;0NnqV1eXMmm;@Q;l}C}BcMx=m_bn2>_66<2_3yVFHF=XG0rVOa5S{=4 delta 35 tcmV+;0NnqV1eXMmm;@B(zLSxhcMzPE3^8kjUxed@!cNP%vM`e)0rV8s5Gw!x diff --git a/app/build.gradle b/app/build.gradle index 62d2535..c7b10a6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ android { defaultConfig { applicationId "com.example.monnthic.monnthicmobile" multiDexEnabled true - minSdkVersion 26 + minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0" diff --git a/app/src/main/java/monnethic/mobile/database/DatabaseHelper.java b/app/src/main/java/monnethic/mobile/database/DatabaseHelper.java index 799e976..da74c7d 100644 --- a/app/src/main/java/monnethic/mobile/database/DatabaseHelper.java +++ b/app/src/main/java/monnethic/mobile/database/DatabaseHelper.java @@ -14,7 +14,7 @@ public class DatabaseHelper { private static final String DATABASE_NAME = "monnethic"; private static final String DATABASE_USER = ""; private static final String DATABASE_PWD = ""; - private final static String DATABASE_URL = "jdbc:postgresql://37.187.101.44:5432/"+DATABASE_NAME; + private final static String DATABASE_URL = "jdbc:postgresql:///"+DATABASE_NAME; public ConnectionSource setupDatabaseConnection(){ diff --git a/app/src/main/java/monnethic/mobile/database/DatabaseTest.java b/app/src/main/java/monnethic/mobile/database/DatabaseTest.java index 1157960..c16a01b 100644 --- a/app/src/main/java/monnethic/mobile/database/DatabaseTest.java +++ b/app/src/main/java/monnethic/mobile/database/DatabaseTest.java @@ -5,8 +5,8 @@ import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "T_TEST") public class DatabaseTest { - public static final String NAME_FIELD_NAME = "name"; - public static final String ID_FIELD_NAME = "id"; + private static final String NAME_FIELD_NAME = "name"; + private static final String ID_FIELD_NAME = "id"; @DatabaseField(columnName = ID_FIELD_NAME, id = true) private int id; diff --git a/app/src/main/java/monnethic/mobile/database/DatabaseUserDao.java b/app/src/main/java/monnethic/mobile/database/DatabaseUserDao.java deleted file mode 100644 index cbd710b..0000000 --- a/app/src/main/java/monnethic/mobile/database/DatabaseUserDao.java +++ /dev/null @@ -1,4 +0,0 @@ -package monnethic.mobile.database; - -public class DatabaseUserDao { -} diff --git a/app/src/main/java/monnethic/mobile/user/User.java b/app/src/main/java/monnethic/mobile/user/User.java index 027e339..06bbb2b 100644 --- a/app/src/main/java/monnethic/mobile/user/User.java +++ b/app/src/main/java/monnethic/mobile/user/User.java @@ -1,5 +1,7 @@ package monnethic.mobile.user; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; import java.util.Date; /** @@ -7,15 +9,112 @@ import java.util.Date; */ +//Class User which represent an User in the postgresDB +@DatabaseTable(tableName = "T_USER") public class User { - private int userId; + @DatabaseField(canBeNull = false) private String name; + @DatabaseField(canBeNull = false) private String firstname; + @DatabaseField(id = true) private String email; + @DatabaseField(canBeNull = false) private String password; - private Date creationDate; - private Date modificationDate; + @DatabaseField(canBeNull = false) + private long creation_date; + @DatabaseField(canBeNull = false) + private long modification_date; + @DatabaseField(canBeNull = false) private boolean verified; + @DatabaseField(canBeNull = false) private boolean approved; + //Constructors + //Default constructor for ORMLite + public User() { + } + + public User(String name, String firstname, String email, String password) { + this.name = name; + this.firstname = firstname; + this.email = email; + this.password = password; + } + + public User(String name, String firstname, String email, String password, long creation_date, long modification_date, boolean verified, boolean approved) { + this.name = name; + this.firstname = firstname; + this.email = email; + this.password = password; + this.creation_date = creation_date; + this.modification_date = modification_date; + this.verified = verified; + this.approved = approved; + } + + + //Getters and Setters + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public long getCreation_date() { + return creation_date; + } + + public void setCreation_date(long creation_date) { + this.creation_date = creation_date; + } + + public long getModification_date() { + return modification_date; + } + + public void setModification_date(long modification_date) { + this.modification_date = modification_date; + } + + public boolean isVerified() { + return verified; + } + + public void setVerified(boolean verified) { + this.verified = verified; + } + + public boolean isApproved() { + return approved; + } + + public void setApproved(boolean approved) { + this.approved = approved; + } } diff --git a/app/src/main/java/monnethic/mobile/user/UserDao.java b/app/src/main/java/monnethic/mobile/user/UserDao.java new file mode 100644 index 0000000..fcdc274 --- /dev/null +++ b/app/src/main/java/monnethic/mobile/user/UserDao.java @@ -0,0 +1,119 @@ +package monnethic.mobile.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 java.sql.Timestamp; +import monnethic.mobile.database.DatabaseHelper; + +//Class to communicate with database with ORMLite +public class UserDao { + private DatabaseHelper dbh = new DatabaseHelper(); + private Dao userDao; + + public 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(); + } + +} \ No newline at end of file diff --git a/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java b/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java new file mode 100644 index 0000000..1471e4e --- /dev/null +++ b/app/src/test/java/monnethic/mobile/test/user/UserDaoTest.java @@ -0,0 +1,151 @@ +package monnethic.mobile.test.user; + +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.table.TableUtils; + +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import java.sql.Timestamp; +import monnethic.mobile.user.User; +import monnethic.mobile.user.UserDao; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class UserDaoTest { + private UserDao udao = new UserDao(); + private final String USER_EMAIL = "thomas.marshal@gmail.com"; + private final String USER_PASSWORD = "avcde"; + + @Test + public void TestACreateTable(){ + try{ + Dao userDao; + userDao = udao.createUserDaoConnection(); + TableUtils.createTable(userDao); + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestBInsertUser(){ + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + User user = new User("marshal","thomas",USER_EMAIL,USER_PASSWORD,timestamp.getTime(),timestamp.getTime(),false,false); + try{ + udao.addUser(user); + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestCGetGeneratedUser(){ + try{ + User uTest = udao.getUser(USER_EMAIL); + if(uTest==null){ + System.out.println("User don't Exist"); + }else { + System.out.println(uTest.getEmail()); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestDCheckApprovedUser(){ + try{ + boolean response = udao.checkApprovedUser(USER_EMAIL); + if(response){ + System.out.println("Approved"); + }else{ + System.out.println("Not Approved"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestECheckVerifiedUser(){ + try{ + boolean response = udao.checkVerifiedUser(USER_EMAIL); + if(response){ + System.out.println("Verified"); + }else{ + System.out.println("Not Verified"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestFCheckUserPassword(){ + try{ + boolean response = udao.checkUserPassword(USER_EMAIL,USER_PASSWORD); + if(response){ + System.out.println("Password OK"); + }else{ + System.out.println("Password Failed"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestGUpdateUserPassword(){ + String newPassword = "newPassword"; + try{ + boolean response = udao.updateUserPassword(USER_EMAIL,newPassword); + if(response){ + System.out.println("Password Changed"); + }else{ + System.out.println("Password Update Failed"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestHApproveVerifyUser(){ + try{ + udao.approveUser(USER_EMAIL); + udao.verifyUser(USER_EMAIL); + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestICheckApprovedUser(){ + try{ + boolean response = udao.checkApprovedUser(USER_EMAIL); + if(response){ + System.out.println("Approved"); + }else{ + System.out.println("Not Approved"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + + @Test + public void TestJCheckVerifiedUser(){ + try{ + boolean response = udao.checkVerifiedUser(USER_EMAIL); + if(response){ + System.out.println("Verified"); + }else{ + System.out.println("Not Verified"); + } + }catch(Exception e){ + System.out.println(e.getMessage()); + } + } + +}