2728ef8b3f68a0f5df0965be4ed0abe6424c558b
[staff/due1/sed-hs15-srs-purple.git] / src / main / java / ch / bfh / ti / srs / datahandler / DataHandler.java
1 /*
2 * Copyright (c) 2015 Berner Fachhochschule, Switzerland.
3 *
4 * Project Smart Reservation System.
5 *
6 * Distributable under GPL license. See terms of license at gnu.org.
7 */
8 package ch.bfh.ti.srs.datahandler;
9
10 import java.util.HashSet;
11 import java.util.List;
12 import java.util.UUID;
13
14 import ch.bfh.ti.daterange.DateRange;
15 import ch.bfh.ti.srs.dataschema.Reservation;
16 import ch.bfh.ti.srs.dataschema.Resource;
17 import ch.bfh.ti.srs.dataschema.User;
18
19 /**
20 * @author Michael Grossen
21 */
22 public interface DataHandler {
23
24 /**
25 * Finds the user by userName param in the Datacontext and returns the User
26 * object or null if not found
27 * @param userName
28 * userName of the user you are looking for
29 * @return <code>User</code>user object <code>null</code>if no user found
30 * with this userName
31 */
32 public User findUser(String userName);
33
34 /**
35 * Adds a user to the Datacontext from a given User object
36 * @param user
37 * User object
38 * @throws Exception
39 */
40 public void addUser(User user) throws Exception;
41
42 /**
43 * Finds the resourceName in the Datacontext and returns the Resource object
44 * or null if not found
45 * @param resourceName
46 * resource name of the resource you are looking for
47 * @return <code>Resource</code>resource object <code>null</code>if no
48 * resource found with this recourceName
49 */
50 public Resource findResource(String resourceName);
51
52 /**
53 * Adds a resource to the Datacontext from a given Recource object
54 * @param resource
55 * Resource object
56 * @throws Exception
57 */
58 public void addResource(Resource resource) throws Exception;
59
60 /**
61 * Finds the reservation by the id param in the Datacontext and returns the
62 * Reservation object or null if not found
63 * @param id
64 * id of the Reservation you are looking for
65 * @return <code>Reservation</code>reservation object <code>null</code>if no
66 * reservation found with this ID
67 */
68 public Reservation findReservation(UUID id);
69
70 /**
71 * Finds a group of reservations by their GroupId param in the Datacontext
72 * and returns the Reservation object or null if not found
73 * @param groupId
74 * id of the Group Reservations you are looking for
75 * @return <code>List</code> with the reservation objects
76 */
77 public List<Reservation> findGroupReservations(UUID groupId);
78
79 /**
80 * Finds reservations that overlaps with the given DateRange and returns the
81 * Reservation objects or null if not found
82 * @param range
83 * the range you want to get overlapping reservations for
84 * @return <code>List</code> with the reservation objects
85 */
86 public List<Reservation> overlaps(DateRange range);
87
88 /**
89 * Finds all reservations for the specific User
90 * @param user
91 * the user you want to get all the reservations for
92 * @return <code>List</code> with the reservation objects
93 */
94 public List<Reservation> userReservations(User user);
95
96 /**
97 * Finds all reservations
98 * @return <code>List</code> with the all reservation
99 * objects
100 */
101 public List<Reservation> findAllReservations();
102
103 /**
104 * Adds a reservation to the Datacontext from a given Reservation object
105 * @param reservation
106 * Reservation object
107 * @throws Exception
108 */
109 public void addReservation(Reservation reservation) throws Exception;
110
111 /**
112 * Saves the current changes on the local data to the datastorage
113 */
114 public void saveChanges();
115
116 /**
117 * Synchronizes the local data with the datastorage
118 *
119 * @param discardChanges
120 * <code>true</code> do not try to save the changes
121 * <code>false</code> try to save the changes
122 */
123 public void refresh(boolean discardChanges) throws Exception;
124 }