From 3262d72ec07b60bf2ef7bf180930938d4e0764f5 Mon Sep 17 00:00:00 2001 From: GME Date: Wed, 3 Apr 2019 15:14:41 +0200 Subject: [PATCH] setup session --- src/main/java/database/session/Session.java | 55 +++++++++++++++++++ .../java/database/session/SessionDao.java | 37 +++++++++++++ src/main/java/database/user/UserDao.java | 9 +++ .../SessionImplementation.java | 18 ++++++ .../UserImplementation.java | 5 ++ .../java/restService/SessionResource.java | 38 +++++++++++++ 6 files changed, 162 insertions(+) create mode 100644 src/main/java/database/session/Session.java create mode 100644 src/main/java/database/session/SessionDao.java create mode 100644 src/main/java/restImplementation/SessionImplementation.java create mode 100644 src/main/java/restService/SessionResource.java diff --git a/src/main/java/database/session/Session.java b/src/main/java/database/session/Session.java new file mode 100644 index 0000000..0e05d10 --- /dev/null +++ b/src/main/java/database/session/Session.java @@ -0,0 +1,55 @@ +package database.session; + +import com.j256.ormlite.field.DatabaseField; + +public class Session { + @DatabaseField(generatedId = true) + private int session_id; + @DatabaseField(canBeNull = false) + private int user_id; + @DatabaseField(canBeNull = false) + private long start_session; + @DatabaseField(canBeNull = false) + private long end_session; + + public Session(){} + + public Session(int user_id, long start_session) { + this.user_id = user_id; + this.start_session = start_session; + } + + public int getSession_id() { + return session_id; + } + + public void setSession_id(int session_id) { + this.session_id = session_id; + } + + public int getUser_id() { + return user_id; + } + + public void setUser_id(int user_id) { + this.user_id = user_id; + } + + public long getStart_session() { + return start_session; + } + + public void setStart_session(long start_session) { + this.start_session = start_session; + } + + public long getEnd_session() { + return end_session; + } + + public void setEnd_session(long end_session) { + this.end_session = end_session; + } + + +} diff --git a/src/main/java/database/session/SessionDao.java b/src/main/java/database/session/SessionDao.java new file mode 100644 index 0000000..da1ef76 --- /dev/null +++ b/src/main/java/database/session/SessionDao.java @@ -0,0 +1,37 @@ +package database.session; + +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.dao.DaoManager; +import com.j256.ormlite.stmt.UpdateBuilder; +import database.DatabaseHelper; + +import java.sql.Timestamp; + +public class SessionDao { + private DatabaseHelper dbh = new DatabaseHelper(); + private Dao sessionDao; + + private Dao createSessionDaoConnection(){ + try { + return DaoManager.createDao(dbh.setupDatabaseConnection(),Session.class); + }catch (Exception e){ + System.out.println(e.getMessage()); + return null; + } + } + + public int setStartSession(int userId) throws Exception { + sessionDao = createSessionDaoConnection(); + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + return sessionDao.updateRaw("INSERT INTO T_SESSION (user_id,start_session) VALUES ("+userId+","+timestamp+") RETURNING session_id"); + } + + public void setEndSession(int session_id) throws Exception { + sessionDao = createSessionDaoConnection(); + UpdateBuilder updateBuilder = sessionDao.updateBuilder(); + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + updateBuilder.updateColumnValue("end_session",timestamp); + updateBuilder.where().eq("session_id",session_id); + updateBuilder.update(); + } +} diff --git a/src/main/java/database/user/UserDao.java b/src/main/java/database/user/UserDao.java index c11b6a5..938e1e7 100644 --- a/src/main/java/database/user/UserDao.java +++ b/src/main/java/database/user/UserDao.java @@ -113,6 +113,15 @@ public class UserDao { return userDao.queryForFirst(preparedQuery); } + public int getUserIdWithHashAndEmail(String userHash, String userEmail) throws Exception { + userDao = createUserDaoConnection(); + QueryBuilder queryBuilder = userDao.queryBuilder(); + queryBuilder.where().eq("user_hash",userHash).and().eq("email",userEmail); + PreparedQuery preparedQuery = queryBuilder.prepare(); + User userResponse = userDao.queryForFirst(preparedQuery); + return userResponse.getUserId(); + } + public void approveUser (String email) throws Exception { userDao = createUserDaoConnection(); diff --git a/src/main/java/restImplementation/SessionImplementation.java b/src/main/java/restImplementation/SessionImplementation.java new file mode 100644 index 0000000..9e7d787 --- /dev/null +++ b/src/main/java/restImplementation/SessionImplementation.java @@ -0,0 +1,18 @@ +package restImplementation; + +import database.session.SessionDao; + +public class SessionImplementation { + + public int startSession(String userHash, String userEmail) throws Exception { + SessionDao sessionDao = new SessionDao(); + UserImplementation userImplementation = new UserImplementation(); + int userId = userImplementation.getUserId(userHash,userEmail); + return sessionDao.setStartSession(userId); + } + + public void endSession(int userId) throws Exception { + SessionDao sessionDao = new SessionDao(); + sessionDao.setEndSession(userId); + } +} diff --git a/src/main/java/restImplementation/UserImplementation.java b/src/main/java/restImplementation/UserImplementation.java index 1ac40a3..558450c 100644 --- a/src/main/java/restImplementation/UserImplementation.java +++ b/src/main/java/restImplementation/UserImplementation.java @@ -80,6 +80,11 @@ public class UserImplementation { } } + public int getUserId(String userHash, String userEmail) throws Exception{ + UserDao userDao = new UserDao(); + return userDao.getUserIdWithHashAndEmail(userHash,userEmail); + } + public Map userLogger(User user) throws Exception { UserDao userDao = new UserDao(); diff --git a/src/main/java/restService/SessionResource.java b/src/main/java/restService/SessionResource.java new file mode 100644 index 0000000..f94f8a0 --- /dev/null +++ b/src/main/java/restService/SessionResource.java @@ -0,0 +1,38 @@ +package restService; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import restImplementation.SessionImplementation; + +@RestController +@RequestMapping(value = "/api/rest/session") +public class SessionResource { + + @RequestMapping(value = "/start", method = RequestMethod.GET, params = {"userHash","userEmail"}, produces = "application/json") + @ResponseStatus(HttpStatus.CREATED) + public ResponseEntity startSession(@RequestParam(value = "userHash") String userHash, @RequestParam(value = "userEmail") String userEmail){ + SessionImplementation sessionImplementation = new SessionImplementation(); + try { + int session_id = sessionImplementation.startSession(userHash,userEmail); + return ResponseEntity.status(HttpStatus.OK).body("{\"sessionId\":"+session_id+"}"); + } catch (Exception e){ + StringResponse responseS = new StringResponse(e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseS); + } + } + + @RequestMapping(value = "/end", method = RequestMethod.GET, params = {"userId"}, produces = "application/json") + @ResponseStatus(HttpStatus.OK) + public ResponseEntity endSession(@RequestParam(value = "userId") int userId){ + SessionImplementation sessionImplementation = new SessionImplementation(); + try { + sessionImplementation.endSession(userId); + return ResponseEntity.status(HttpStatus.OK).body(""); + } catch (Exception e){ + StringResponse responseS = new StringResponse(e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseS); + } + } + +}