getLoggedUserCopy() added
[staff/due1/sed-hs15-srs-purple.git] / src / main / java / ch / bfh / ti / srs / controller / UserController.java
index fc47669..97b5d13 100644 (file)
@@ -8,12 +8,14 @@
 package ch.bfh.ti.srs.controller;\r
 \r
 import java.rmi.AlreadyBoundException;\r
+import java.util.ArrayList;\r
 import java.util.List;\r
 import java.util.UUID;\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.dataschema.Resource;\r
 import ch.bfh.ti.srs.dataschema.User;\r
 \r
 /**\r
@@ -26,7 +28,6 @@ public class UserController {
        public UserController(){\r
        }\r
        \r
-       \r
        /**\r
         * Sets the DataHandler implementation for this Controller, must be set before using all other methods!\r
         * \r
@@ -61,7 +62,7 @@ public class UserController {
        /**\r
         * Logs out the current user, throws exception if no user is logged in\r
         * \r
-        * @throws Exception \r
+        * @throws Exception eighter no datahandler is set or no user is logged in\r
         */\r
        public void logOut() throws Exception{\r
                if(dh == null) throw new Exception("No DataHandler set");\r
@@ -77,7 +78,7 @@ public class UserController {
         * @param email                 E-Mail address\r
         * @param name                  Name\r
         * @param lastname              Lastname\r
-        * @throws Exception\r
+        * @throws Exception    eighter no datahandler is set or user could not be added to the userlist\r
         */\r
        public void addUser(String userName, String password, String email, String name, String lastname) throws Exception{\r
                if(dh == null) throw new Exception("No DataHandler set");\r
@@ -88,58 +89,69 @@ public class UserController {
                dh.addUser(newUser);\r
        }\r
 \r
-\r
        /**\r
-        * Gets the username of the current user\r
+        * @deprecated use getLoggedUser\r
+        * Gets the username of the current user, use getLoggedUser\r
         * \r
-        * @return      Username\r
-        * @throws      Exception\r
+        * @return      Username        unique username\r
+        * @throws      Exception       no datahandler is set\r
         */\r
+       @Deprecated \r
        public String getLoggedUserName() throws Exception{\r
                if(currentUser == null) throw new Exception("No user is logged in");\r
                return currentUser.getUserName();\r
        }\r
 \r
-\r
        /**\r
+        * @deprecated use getLoggedUser\r
         * Gets the mail address of the current user\r
         * \r
         * @return      Mail address\r
-        * @throws      Exception\r
+        * @throws      Exception       no user is logged in\r
         */\r
+       @Deprecated\r
        public String getLoggedMail() throws Exception{\r
                if(currentUser == null) throw new Exception("No user is logged in");\r
                return currentUser.getMail();\r
        }\r
 \r
        /**\r
+        * @deprecated use getLoggedUser\r
         * Gets the first name of the current user\r
         * \r
         * @return      First name\r
-        * @throws      Exception\r
+        * @throws      Exception       no user is logged in\r
         */\r
-       public String getLoggedName() throws Exception {\r
+       @Deprecated\r
+       public String getLoggedName() throws Exception{\r
                if(currentUser == null) throw new Exception("No user is logged in");\r
                return currentUser.getName();\r
        }\r
 \r
        /**\r
+        * @deprecated use getLoggedUser\r
         * Gets the last name of the current user\r
         * \r
         * @return      Last name\r
-        * @throws      Exception\r
+        * @throws      Exception       no user is logged in\r
         */\r
-       public String getLoggedLastname() throws Exception {\r
+       @Deprecated\r
+       public String getLoggedLastname() throws Exception{\r
                if(currentUser == null) throw new Exception("No user is logged in");\r
                return currentUser.getLastname();\r
        }\r
        \r
+       public User getLoggedUserCopy() throws CloneNotSupportedException{\r
+               if(currentUser == null) return null;\r
+               return currentUser.clone();\r
+       }\r
+       \r
        /**\r
         * Returns all reservations overlapping the given dateRange in a List\r
         * \r
         * @param       dateRange\r
-        * @return\r
-        * @throws      Exception\r
+        * @return      <code>List</code> if list is empty, no overlapping reservation could be found\r
+        * @throws      Exception       no user is logged in\r
         */\r
        public List<Reservation> getReservationsInDateRange(DateRange dateRange) throws Exception{\r
                if(dh == null) throw new Exception("No DataHandler set");\r
@@ -150,8 +162,9 @@ public class UserController {
        /**\r
         * Returns the reservation or null if no reservation was found\r
         * \r
-        * @param id\r
-        * @return\r
+        * @param id universal unique idendifier\r
+        * @return      <code>reservation</code> reservation with given id\r
+        *                      <code>null</code> no reservation with this id found\r
         * @throws Exception\r
         */\r
        public Reservation getReservation(UUID id) throws Exception{\r
@@ -159,4 +172,60 @@ public class UserController {
                if(id == null) throw new Exception("uuid must be defined");\r
                return dh.findReservation(id);\r
        }\r
+       \r
+       /**\r
+        * Returns the reservations of the given user, if null returns the reservations of the current logged in user\r
+        * \r
+        * @param user                          user you want the reservations of\r
+        * @return                                      List of reservations of a specific user\r
+        * @throws Exception            eighter no datahandler is set or no user is logged in while user param = null\r
+        */\r
+       public List<Reservation> getUserReservations(User user) throws Exception{\r
+               if(dh == null) throw new Exception("No DataHandler set");\r
+               if(user == null){\r
+                       if(currentUser == null) throw new Exception("user must be defined, if no user is logged in");\r
+                       else user = currentUser;\r
+               }\r
+               return dh.userReservations(user);\r
+       }\r
+       \r
+       /**\r
+        * @param groupId               groupId of the searched reservations group, throws Exception if groupId is null\r
+        * @return      <code>List</code> reservation group\r
+        * @throws Exception    eighter no datahandler is set or groupId is null\r
+        */\r
+       public List<Reservation> getReservationGroup(UUID groupId) throws Exception{\r
+               if(dh == null) throw new Exception("No DataHandler set");\r
+               if(groupId == null) throw new Exception("groupId has to be defined");\r
+               return dh.findGroupReservations(groupId);\r
+       }\r
+       \r
+       /**\r
+        * @param reservation   one of the reservations of the group you are looking for, returns a List with just the given Reservation if no groupId is set\r
+        * @return      <code>List</code> reservation group\r
+        * @throws Exception    no datahandler is set\r
+        */\r
+       public List<Reservation> getReservationGroup(Reservation reservation) throws Exception{\r
+               if(dh == null) throw new Exception("No DataHandler set");\r
+               if(reservation.getGroupId() == null){\r
+                       ArrayList<Reservation> grpList = new ArrayList<>();\r
+                       grpList.add(reservation);\r
+                       return grpList;\r
+               }\r
+               return dh.findGroupReservations(reservation.getGroupId());\r
+       }\r
+       \r
+       public void makeReservation(User user, Resource resource, List<DateRange> dateRangeList, String remark) throws Exception\r
+       {\r
+               if(user == null) user = currentUser;\r
+               if(resource == null) throw new Exception("Resource must be definded");\r
+               if(dateRangeList == null) throw new Exception("dateRangeList can not be null");\r
+               if(dateRangeList.isEmpty()) throw new Exception("dateRangeList empty");\r
+               \r
+               UUID groupId = null;\r
+               if(dateRangeList.size() > 1) groupId = UUID.randomUUID();\r
+               for (DateRange dateRange : dateRangeList) {\r
+                       dh.addReservation(new Reservation(groupId, user, resource, dateRange, remark));\r
+               }\r
+       }\r
 }\r