Controller Struktur angepasst
authorMichael <Michael@Michael-LT.bfh.ch>
Wed, 2 Dec 2015 13:57:46 +0000 (14:57 +0100)
committerMichael <Michael@Michael-LT.bfh.ch>
Wed, 2 Dec 2015 13:57:46 +0000 (14:57 +0100)
src/main/java/ch/bfh/ti/srs/controller/Controller.java
src/main/java/ch/bfh/ti/srs/controller/SessionController.java [new file with mode: 0644]
src/main/java/ch/bfh/ti/srs/controller/UserController.java
src/main/java/ch/bfh/ti/srs/dataschema/User.java
src/test/java/ch/bfh/ti/srs/controller/UserControllerTest.java

index 662253d..4a81f05 100644 (file)
@@ -31,15 +31,16 @@ import ch.bfh.ti.srs.dataschema.User;
  */\r
 public class Controller {\r
        protected DataHandler dh;\r
  */\r
 public class Controller {\r
        protected DataHandler dh;\r
-       protected User currentUser;\r
+       protected SessionController sc;\r
 \r
 \r
+       \r
        /**\r
         * Sets the <code>DataHandler</code> implementation for this Controller,\r
         * must be set before using all other methods!\r
         * @param dh\r
         *            DataHandler implementation (i.e. DataHandlerForExcel)\r
         */\r
        /**\r
         * Sets the <code>DataHandler</code> implementation for this Controller,\r
         * must be set before using all other methods!\r
         * @param dh\r
         *            DataHandler implementation (i.e. DataHandlerForExcel)\r
         */\r
-       public Controller(DataHandler dh) {\r
+       public Controller(DataHandler dh, SessionController sc) {\r
                this.dh = dh;\r
        }\r
 \r
                this.dh = dh;\r
        }\r
 \r
@@ -52,48 +53,6 @@ public class Controller {
        public void setDataHandler(DataHandler dh) {\r
                this.dh = dh;\r
        }\r
        public void setDataHandler(DataHandler dh) {\r
                this.dh = dh;\r
        }\r
-       \r
-       /**\r
-        * Tries to log in a <code>User</code> with the given credentials\r
-        * @param userName\r
-        *            user name\r
-        * @param password\r
-        *            the stored password for the given user name\r
-        * @return <code>True</code> if the user could log in successfully,\r
-        *         <code>False</code> either the username or the password was not\r
-        *         correct.\r
-        * @throws Exception\r
-        *             no <code>DataHandler</code> set\r
-        * @throws AlreadyBoundException\r
-        *             a <code>User</code> is already logged in\r
-        */\r
-       public boolean logIn(String userName, String password) throws Exception {\r
-               if (dh == null)\r
-                       throw new Exception("No DataHandler set");\r
-               if (currentUser != null)\r
-                       throw new AlreadyBoundException("A user is already logged in");\r
-               User tempUser = dh.findUser(userName);\r
-               if (tempUser == null || !tempUser.checkPassword(password))\r
-                       return false;\r
-               else {\r
-                       currentUser = tempUser;\r
-                       return true;\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Logs out the current logged user\r
-        * @throws Exception\r
-        *             either no <code>DataHandler</code> is set or no user is\r
-        *             logged in\r
-        */\r
-       public void logOut() throws Exception {\r
-               if (dh == null)\r
-                       throw new Exception("No DataHandler set");\r
-               if (currentUser == null)\r
-                       throw new Exception("No user is logged in");\r
-               currentUser = null;\r
-       }\r
 \r
        /**\r
         * Registers a new user to the current DataHandler\r
 \r
        /**\r
         * Registers a new user to the current DataHandler\r
@@ -153,11 +112,11 @@ public class Controller {
                        throw new Exception("dateRange must be defined");\r
 \r
                // Could be swapped out to private method for better performance (just\r
                        throw new Exception("dateRange must be defined");\r
 \r
                // Could be swapped out to private method for better performance (just\r
-               // check currentUser once)\r
+               // check sc.getLoggedUser() once)\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.overlaps(dateRange)) {\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.overlaps(dateRange)) {\r
-                       returnSet.put(reservation, reservation.getUser().getUserName().equals(currentUser.getUserName()));\r
+                       returnSet.put(reservation, reservation.getUser().getUserName().equals(sc.getLoggedUser().getUserName()));\r
                }\r
                return returnSet;\r
        }\r
                }\r
                return returnSet;\r
        }\r
@@ -180,11 +139,11 @@ public class Controller {
                }\r
 \r
                // Could be swapped out to private method for better performance (just\r
                }\r
 \r
                // Could be swapped out to private method for better performance (just\r
-               // check currentUser once)\r
+               // check sc.getLoggedUser() once)\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.userReservations(user)) {\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.userReservations(user)) {\r
-                       returnSet.put(reservation, reservation.getUser().getUserName().equals(currentUser.getUserName()));\r
+                       returnSet.put(reservation, reservation.getUser().getUserName().equals(sc.getLoggedUser().getUserName()));\r
                }\r
                return returnSet;\r
        }\r
                }\r
                return returnSet;\r
        }\r
@@ -226,11 +185,11 @@ public class Controller {
                        throw new IllegalArgumentException("groupId has to be defined");\r
 \r
                // Could be swapped out to private method for better performance (just\r
                        throw new IllegalArgumentException("groupId has to be defined");\r
 \r
                // Could be swapped out to private method for better performance (just\r
-               // check currentUser once)\r
+               // check sc.getLoggedUser() once)\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.findGroupReservations(groupId)) {\r
                // and easier code maintenance\r
                Map<Reservation, Boolean> returnSet = new HashMap<Reservation, Boolean>();\r
                for (Reservation reservation : dh.findGroupReservations(groupId)) {\r
-                       returnSet.put(reservation, reservation.getUser().getUserName().equals(currentUser.getUserName()));\r
+                       returnSet.put(reservation, reservation.getUser().getUserName().equals(sc.getLoggedUser().getUserName()));\r
                }\r
                return returnSet;\r
        }\r
                }\r
                return returnSet;\r
        }\r
@@ -238,7 +197,7 @@ public class Controller {
        /**\r
         * Makes a reservation in the current set DataHandler\r
         * @param user\r
        /**\r
         * Makes a reservation in the current set DataHandler\r
         * @param user\r
-        *            user owning the reservation, if null currentUser is set\r
+        *            user owning the reservation, if null sc.getLoggedUser() is set\r
         * @param resource\r
         *            resource to reserve\r
         * @param dateRangeList\r
         * @param resource\r
         *            resource to reserve\r
         * @param dateRangeList\r
@@ -257,9 +216,9 @@ public class Controller {
        public Set<Reservation> makeReservation(User user, Resource resource, List<DateRange> dateRangeList, String remark)\r
                        throws Exception {\r
                if (user == null) {\r
        public Set<Reservation> makeReservation(User user, Resource resource, List<DateRange> dateRangeList, String remark)\r
                        throws Exception {\r
                if (user == null) {\r
-                       if (currentUser == null)\r
+                       if (sc.getLoggedUser() == null)\r
                                throw new IllegalArgumentException("User must be defined if no user is logged in");\r
                                throw new IllegalArgumentException("User must be defined if no user is logged in");\r
-                       user = currentUser;\r
+                       user = sc.getLoggedUser();\r
                }\r
                if (resource == null)\r
                        throw new IllegalArgumentException("Resource must be definded");\r
                }\r
                if (resource == null)\r
                        throw new IllegalArgumentException("Resource must be definded");\r
diff --git a/src/main/java/ch/bfh/ti/srs/controller/SessionController.java b/src/main/java/ch/bfh/ti/srs/controller/SessionController.java
new file mode 100644 (file)
index 0000000..fe456b0
--- /dev/null
@@ -0,0 +1,137 @@
+/*\r
+ * Copyright (c) 2015 Berner Fachhochschule, Switzerland.\r
+ *\r
+ * Project Smart Reservation System.\r
+ *\r
+ * Distributable under GPL license. See terms of license at gnu.org.\r
+ */\r
+package ch.bfh.ti.srs.controller;\r
+\r
+import java.rmi.AlreadyBoundException;\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+\r
+import ch.bfh.ti.srs.datahandler.DataHandler;\r
+import ch.bfh.ti.srs.datahandler.DataHandlerForTests;\r
+import ch.bfh.ti.srs.dataschema.User;\r
+\r
+public class SessionController {\r
+       private Set<Controller> controllers;\r
+       private DataHandler dh;\r
+       private User currentUser;       \r
+\r
+       public SessionController(){\r
+               dh = new DataHandlerForTests();\r
+               controllers = new HashSet<Controller>();\r
+       }\r
+       \r
+       /**\r
+        * Tries to log in a <code>User</code> with the given credentials\r
+        * @param userName\r
+        *            user name\r
+        * @param password\r
+        *            the stored password for the given user name\r
+        * @return <code>True</code> if the user could log in successfully,\r
+        *         <code>False</code> either the username or the password was not\r
+        *         correct.\r
+        * @throws Exception\r
+        *             no <code>DataHandler</code> set\r
+        * @throws AlreadyBoundException\r
+        *             a <code>User</code> is already logged in\r
+        */\r
+       public Set<Controller> logIn(String userName, String password) throws Exception {\r
+               if (dh == null)\r
+                       throw new Exception("No DataHandler set");\r
+               if (currentUser != null)\r
+                       throw new Exception("A user is already logged in");\r
+               User tempUser = dh.findUser(userName);\r
+               if (tempUser != null || tempUser.checkPassword(password)){\r
+                       currentUser = tempUser;\r
+                       //TODO: Check for userRoles, add new controller object for each\r
+               }\r
+               return controllers;\r
+       }\r
+\r
+       /**\r
+        * Logs out the current logged user\r
+        * @throws Exception\r
+        *             either no <code>DataHandler</code> is set or no user is\r
+        *             logged in\r
+        */\r
+       public void logOut() throws Exception {\r
+               if (dh == null)\r
+                       throw new Exception("No DataHandler set");\r
+               if (currentUser == null)\r
+                       throw new Exception("No user is logged in");\r
+               currentUser = null;\r
+               controllers.clear();\r
+       }\r
+\r
+       /**\r
+        * Gets the user name of the current user\r
+        * @deprecated use <code>getLoggedUser().getUserName()</code>\r
+        * @return user name\r
+        * @throws Exception\r
+        *             no <code>DataHandler</code> is set\r
+        */\r
+       @Deprecated\r
+       public String getLoggedUserName() throws Exception {\r
+               if (currentUser == null)\r
+                       throw new Exception("No user is logged in");\r
+               return currentUser.getUserName();\r
+       }\r
+\r
+       /**\r
+        * Gets the mail address of the current user\r
+        * @deprecated use <code>getLoggedUser().getMail()</code>\r
+        * @return Mail address\r
+        * @throws Exception\r
+        *             no user is logged in\r
+        */\r
+       @Deprecated\r
+       public String getLoggedMail() throws Exception {\r
+               if (currentUser == null)\r
+                       throw new Exception("No user is logged in");\r
+               return currentUser.getMail();\r
+       }\r
+\r
+       /**\r
+        * Gets the first name of the current user\r
+        * @deprecated use <code>getLoggedUser().getName()</code>\r
+        * @return First name\r
+        * @throws Exception\r
+        *             no user is logged in\r
+        */\r
+       @Deprecated\r
+       public String getLoggedName() throws Exception {\r
+               if (currentUser == null)\r
+                       throw new Exception("No user is logged in");\r
+               return currentUser.getName();\r
+       }\r
+\r
+       /**\r
+        * Gets the last name of the current user\r
+        * @deprecated use <code>getLoggedUser().getLastName()</code>\r
+        * @return Last name\r
+        * @throws Exception\r
+        *             no user is logged in\r
+        */\r
+       @Deprecated\r
+       public String getLoggedLastname() throws Exception {\r
+               if (currentUser == null)\r
+                       throw new Exception("No user is logged in");\r
+               return currentUser.getLastname();\r
+       }\r
+\r
+       /**\r
+        * Gets the current logged <code>User</code>\r
+        * @return current <code>User</code>, or <code>null</code> if no\r
+        *         <code>User</code> is logged in\r
+        */\r
+       public User getLoggedUser() {\r
+               if (currentUser == null)\r
+                       return null;\r
+               return currentUser;\r
+       }\r
+\r
+}\r
index 201141c..1cd60df 100644 (file)
@@ -7,95 +7,19 @@
  */\r
 package ch.bfh.ti.srs.controller;\r
 \r
  */\r
 package ch.bfh.ti.srs.controller;\r
 \r
-import java.rmi.AlreadyBoundException;\r
-import java.util.ArrayList;\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.List;\r
 import java.util.Map;\r
 import java.util.Map;\r
-import java.util.Set;\r
-import java.util.UUID;\r
 \r
 \r
-import ch.bfh.ti.daterange.DateRange;\r
 import ch.bfh.ti.srs.datahandler.DataHandler;\r
 import ch.bfh.ti.srs.dataschema.Reservation;\r
 import ch.bfh.ti.srs.datahandler.DataHandler;\r
 import ch.bfh.ti.srs.dataschema.Reservation;\r
-import ch.bfh.ti.srs.dataschema.Resource;\r
 import ch.bfh.ti.srs.dataschema.User;\r
 \r
 /**\r
  * @author Michael Grossen\r
  */\r
 public class UserController extends Controller{\r
 import ch.bfh.ti.srs.dataschema.User;\r
 \r
 /**\r
  * @author Michael Grossen\r
  */\r
 public class UserController extends Controller{\r
-\r
-       public UserController(DataHandler dh) {\r
-               super(dh);\r
-       }\r
-\r
-       /**\r
-        * Gets the user name of the current user\r
-        * @deprecated use <code>getLoggedUser().getUserName()</code>\r
-        * @return user name\r
-        * @throws Exception\r
-        *             no <code>DataHandler</code> is set\r
-        */\r
-       @Deprecated\r
-       public String getLoggedUserName() throws Exception {\r
-               if (currentUser == null)\r
-                       throw new Exception("No user is logged in");\r
-               return currentUser.getUserName();\r
-       }\r
-\r
-       /**\r
-        * Gets the mail address of the current user\r
-        * @deprecated use <code>getLoggedUser().getMail()</code>\r
-        * @return Mail address\r
-        * @throws Exception\r
-        *             no user is logged in\r
-        */\r
-       @Deprecated\r
-       public String getLoggedMail() throws Exception {\r
-               if (currentUser == null)\r
-                       throw new Exception("No user is logged in");\r
-               return currentUser.getMail();\r
-       }\r
-\r
-       /**\r
-        * Gets the first name of the current user\r
-        * @deprecated use <code>getLoggedUser().getName()</code>\r
-        * @return First name\r
-        * @throws Exception\r
-        *             no user is logged in\r
-        */\r
-       @Deprecated\r
-       public String getLoggedName() throws Exception {\r
-               if (currentUser == null)\r
-                       throw new Exception("No user is logged in");\r
-               return currentUser.getName();\r
-       }\r
-\r
-       /**\r
-        * Gets the last name of the current user\r
-        * @deprecated use <code>getLoggedUser().getLastName()</code>\r
-        * @return Last name\r
-        * @throws Exception\r
-        *             no user is logged in\r
-        */\r
-       @Deprecated\r
-       public String getLoggedLastname() throws Exception {\r
-               if (currentUser == null)\r
-                       throw new Exception("No user is logged in");\r
-               return currentUser.getLastname();\r
-       }\r
-\r
-       /**\r
-        * Gets the current logged <code>User</code>\r
-        * @return current <code>User</code>, or <code>null</code> if no\r
-        *         <code>User</code> is logged in\r
-        */\r
-       public User getLoggedUser() {\r
-               if (currentUser == null)\r
-                       return null;\r
-               return currentUser;\r
+       \r
+       public UserController(DataHandler dh, SessionController sc) {\r
+               super(dh, sc);\r
        }\r
 \r
        /**\r
        }\r
 \r
        /**\r
@@ -124,10 +48,10 @@ public class UserController extends Controller{
         */\r
        public Map<Reservation, Boolean> getUserReservations(User user) throws Exception {\r
                if (user == null) {\r
         */\r
        public Map<Reservation, Boolean> getUserReservations(User user) throws Exception {\r
                if (user == null) {\r
-                       if (currentUser == null)\r
+                       if (sc.getLoggedUser().getUserName() == null)\r
                                throw new Exception("user must be defined, if no user is logged in");\r
                        else\r
                                throw new Exception("user must be defined, if no user is logged in");\r
                        else\r
-                               user = currentUser;\r
+                               user = sc.getLoggedUser();\r
                }\r
                return super.getUserReservations_Super(user);\r
        }\r
                }\r
                return super.getUserReservations_Super(user);\r
        }\r
@@ -146,11 +70,11 @@ public class UserController extends Controller{
         *             not authorized\r
         */\r
        public boolean changeReservation(Reservation reservation) throws Exception {\r
         *             not authorized\r
         */\r
        public boolean changeReservation(Reservation reservation) throws Exception {\r
-               if (currentUser == null)\r
+               if (sc.getLoggedUser().getUserName() == null)\r
                        throw new Exception("No user is logged in");\r
                if (reservation == null)\r
                        throw new IllegalArgumentException("Reservation must be defined");\r
                        throw new Exception("No user is logged in");\r
                if (reservation == null)\r
                        throw new IllegalArgumentException("Reservation must be defined");\r
-               if (!reservation.getUser().equals(super.currentUser))\r
+               if (!reservation.getUser().equals(super.sc.getLoggedUser().getUserName()))\r
                        throw new Exception("You are not authorized to make this change");\r
                return super.changeReservation_Super(reservation);\r
        }\r
                        throw new Exception("You are not authorized to make this change");\r
                return super.changeReservation_Super(reservation);\r
        }\r
@@ -169,11 +93,11 @@ public class UserController extends Controller{
         *             is logged in or logged <code>User</code> is not authorized\r
         */\r
        public boolean deleteReservation(Reservation reservation) throws Exception {\r
         *             is logged in or logged <code>User</code> is not authorized\r
         */\r
        public boolean deleteReservation(Reservation reservation) throws Exception {\r
-               if (currentUser == null)\r
+               if (sc.getLoggedUser().getUserName() == null)\r
                        throw new Exception("No user is logged in");\r
                if (reservation == null)\r
                        throw new IllegalArgumentException("Reservation must be defined");\r
                        throw new Exception("No user is logged in");\r
                if (reservation == null)\r
                        throw new IllegalArgumentException("Reservation must be defined");\r
-               if (!reservation.getUser().equals(currentUser))\r
+               if (!reservation.getUser().equals(sc.getLoggedUser()))\r
                        throw new Exception("You are not authorized to make this change");\r
                return super.deleteReservation_Super(reservation);\r
        }\r
                        throw new Exception("You are not authorized to make this change");\r
                return super.deleteReservation_Super(reservation);\r
        }\r
index 19bfabb..5bcd68b 100644 (file)
@@ -8,8 +8,6 @@
 package ch.bfh.ti.srs.dataschema;
 
 import ch.bfh.ti.srs.extern.Password;
 package ch.bfh.ti.srs.dataschema;
 
 import ch.bfh.ti.srs.extern.Password;
-import java.util.HashSet;
-import java.util.Set;
 
 public class User implements Cloneable {
 
 
 public class User implements Cloneable {
 
index a63687e..d818d2b 100644 (file)
@@ -13,19 +13,14 @@ import static org.junit.Assert.assertTrue;
 \r
 import java.util.ArrayList;\r
 import java.util.Date;\r
 \r
 import java.util.ArrayList;\r
 import java.util.Date;\r
-import java.util.HashSet;\r
-import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.Set;\r
 import java.util.UUID;\r
 \r
 import java.util.UUID;\r
 \r
-import org.junit.Ignore;\r
 import org.junit.Test;\r
 \r
 import ch.bfh.ti.daterange.DateRange;\r
 import ch.bfh.ti.daterange.impl.pojo.DateRangeImpl;\r
 import org.junit.Test;\r
 \r
 import ch.bfh.ti.daterange.DateRange;\r
 import ch.bfh.ti.daterange.impl.pojo.DateRangeImpl;\r
-import ch.bfh.ti.srs.controller.UserController;\r
 import ch.bfh.ti.srs.datahandler.DataHandler;\r
 import ch.bfh.ti.srs.datahandler.DataHandlerForTests;\r
 import ch.bfh.ti.srs.dataschema.Reservation;\r
 import ch.bfh.ti.srs.datahandler.DataHandler;\r
 import ch.bfh.ti.srs.datahandler.DataHandlerForTests;\r
 import ch.bfh.ti.srs.dataschema.Reservation;\r