Skip to content

Commit e0299cf

Browse files
committed
#131 Upgrade Spring Boot to 1.3.3
2 parents cfcd5c5 + 12c89ee commit e0299cf

9 files changed

+296
-49
lines changed

athena/src/main/java/org/dcsc/athena/controllers/AxisController.java

+59-20
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@
3333
import org.springframework.beans.factory.annotation.Autowired;
3434
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
3535
import org.springframework.messaging.simp.annotation.SendToUser;
36+
37+
import org.springframework.messaging.Message;
38+
import org.springframework.messaging.MessageChannel;
39+
import org.springframework.messaging.MessageHeaders;
40+
import org.springframework.messaging.simp.SimpMessageType;
41+
42+
43+
44+
3645
import org.dcsc.athena.objects.DebugLib;
3746
import org.dcsc.athena.objects.Person;
3847
import java.util.*;
@@ -64,19 +73,37 @@ public class AxisController {
6473
@MessageMapping("/tuteeRegistration")
6574
public void registerTutor(SimpMessageHeaderAccessor headerAccessor, TuteeRegistration message) throws Exception {
6675

67-
Tutee t = new Tutee(message.getEmail(), message.getEmail(), message.getTutoredSubject(), headerAccessor.getSessionId(), message.getLocation());
68-
axisQueue.addPersonMapping(t, headerAccessor.getSessionId());
69-
messagingTemplate.convertAndSend("/topic/" + headerAccessor.getSessionId(), axisQueue.add(t).statusData());
76+
// MessageHeaderAccessor accessor = NativeMessageHeaderAccessor.getAccessor(sessionConnectedEvent.getMessage(), SimpMessageHeaderAccessor.class);
77+
// accessor.getMessageHeaders();
78+
// Object header = accessor.getHeader("simpConnectMessage");
79+
80+
81+
MessageHeaders headers = headerAccessor.getMessageHeaders();
82+
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
83+
String simpSessionId = (String) headers.get("simpSessionId");
84+
85+
86+
Tutee t = new Tutee(message.getEmail(), message.getEmail(), message.getTutoredSubject(), simpSessionId, message.getLocation());
87+
axisQueue.addPersonMapping(t, simpSessionId);
88+
messagingTemplate.convertAndSend("/topic/" + simpSessionId, axisQueue.add(t).statusData());
7089
DebugLib.println(axisQueue.queueStatus());
7190
}
7291

7392
@MessageMapping("/requestTutee")
7493
public void requestTutee(SimpMessageHeaderAccessor headerAccessor, DummyRequest message) throws Exception {
75-
Person p = axisQueue.getPersonFromID(headerAccessor.getSessionId());
94+
95+
MessageHeaders headers = headerAccessor.getMessageHeaders();
96+
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
97+
String simpSessionId = (String) headers.get("simpSessionId");
98+
99+
Person p = axisQueue.getPersonFromID(simpSessionId);
76100
if (p != null) {
77101
TutorExtension t = (TutorExtension) p;
78102

79-
messagingTemplate.convertAndSend("/topic/" + headerAccessor.getSessionId(), axisQueue.add(t).statusData());
103+
104+
105+
106+
messagingTemplate.convertAndSend("/topic/" + simpSessionId, axisQueue.add(t).statusData());
80107
}
81108

82109
DebugLib.println(axisQueue.queueStatus());
@@ -88,24 +115,31 @@ public void requestTutee(SimpMessageHeaderAccessor headerAccessor, DummyRequest
88115
@SendToUser("/queue/setup")
89116
public SetupResponse simpleSetupTutor(Authentication authentication, SimpMessageHeaderAccessor headerAccessor, DummyRequest message) throws Exception {
90117
TreeSet<String> subs = new TreeSet<String>();
118+
119+
120+
MessageHeaders headers = headerAccessor.getMessageHeaders();
121+
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
122+
String simpSessionId = (String) headers.get("simpSessionId");
123+
91124
if (message.getType().equals("auth")) {
92125
Tutor tutor = tutorService.getTutor(authentication);
93126

94127
if (tutor != null) {
95128

96-
// subs.add("30");
97-
if ( axisQueue.hasId(tutor.getId()) ) {
98-
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), headerAccessor.getSessionId(), 203);
129+
if (tutoringSessionService.findOpenTutoringSessionByTutorId(tutor.getId()).size() != 0 ) {
130+
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), simpSessionId, 203);
99131
}
100132

101-
subs = tutor.getCurrentTermCourseStrings();
102-
133+
subs = tutor.getCurrentTermCourseStrings();
134+
103135
// TutorExtension t = new TutorExtension(tutor.getDcscUser().getUserProfile().getName(), tutor.getDcscUser().getUserProfile().getEmail(), tutor.getCurrentTermCourseStrings(), headerAccessor.getSessionId(), tutor);
104136
if (subs.size() == 0)
105-
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), headerAccessor.getSessionId(), 101);
137+
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), simpSessionId, 101);
106138

107139
DcscUser d = (dcscUserService.getUserById(tutor.getDcscUserId())).get();
108-
TutorExtension t = new TutorExtension(d.getUserProfile().getName(), d.getUserProfile().getEmail(), tutor.getCurrentTermCourseStrings(), headerAccessor.getSessionId(), tutor);
140+
TutorExtension t = new TutorExtension(d.getUserProfile().getName(), d.getUserProfile().getEmail(), tutor.getCurrentTermCourseStrings(), simpSessionId, tutor);
141+
142+
109143

110144

111145
LocalDateTime now = LocalDateTime.now();
@@ -119,25 +153,28 @@ public SetupResponse simpleSetupTutor(Authentication authentication, SimpMessage
119153
// System.out.println(t1);
120154
// tutoringSessionService.save(t1);
121155

122-
axisQueue.setSession(headerAccessor.getSessionId(), t1);
156+
axisQueue.setSession(simpSessionId, t1);
123157

124158

125159
// DebugLib.println(tutor.getCurrentTermCourseStrings().toString());
126160
// TutorExtension t = new TutorExtension("Alex Fu", "[email protected]", subs, headerAccessor.getSessionId(), tutor);
127-
axisQueue.addPersonMapping(t, headerAccessor.getSessionId());
161+
axisQueue.addPersonMapping(t, simpSessionId);
128162

129163
DebugLib.println(axisQueue.queueStatus());
130164
}
131165

132166
}
133167

134-
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), headerAccessor.getSessionId(), 0);
168+
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), simpSessionId, 0);
135169
}
136170

137171
@MessageMapping("/requestSetupTutee")
138172
@SendToUser("/queue/setup")
139-
public SetupResponse simpleSetupTutee(SimpMessageHeaderAccessor headerAccessor, DummyRequest message) throws Exception {
140-
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), headerAccessor.getSessionId());
173+
public SetupResponse simpleSetupTutee(SimpMessageHeaderAccessor headerAccessor, DummyRequest message) throws Exception {
174+
MessageHeaders headers = headerAccessor.getMessageHeaders();
175+
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
176+
String simpSessionId = (String) headers.get("simpSessionId");
177+
return new SetupResponse(axisQueue.getTutorList(), axisQueue.getQueueData(), simpSessionId);
141178
}
142179

143180
@MessageMapping("/disconnectPairing")
@@ -148,13 +185,15 @@ public void disconnect(SimpMessageHeaderAccessor headerAccessor, DummyRequest me
148185

149186

150187
// if (thisSession != null) {
151-
// System.out.println("AAAAAAAAAAAAAAAAAAAAAAA\n\n\n\n\n\n\n\n\nDDDDDDDDDDDDDDDDDDDDD\n\n\n\n\n\n\nDDDDDDDDDDDDDDDDDDD");
188+
System.out.println("AAAAAAAAAAAAAAAAAAAAAAA\n\n\n\n\n\n\n\n\nDDDDDDDDDDDDDDDDDDDDD\n\n\n\n\n\n\nDDDDDDDDDDDDDDDDDDD");
152189
// thisSession.setEndDateTime(LocalDateTime.now());
153190
// tutoringSessionService.save(thisSession);
154191
// }
155-
192+
MessageHeaders headers = headerAccessor.getMessageHeaders();
193+
SimpMessageType type = (SimpMessageType) headers.get("simpMessageType");
194+
String simpSessionId = (String) headers.get("simpSessionId");
156195

157-
axisQueue.removePersonAndMappingByID(headerAccessor.getSessionId());
196+
axisQueue.removePersonAndMappingByID(simpSessionId);
158197
DebugLib.println(axisQueue.queueStatus());
159198

160199
// TuteeForTutor

athena/src/main/java/org/dcsc/athena/objects/AxisQueue.java

+40-24
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import org.dcsc.athena.objects.TutoringSession;
44

5+
import java.util.*;
6+
57
import java.util.concurrent.*;
68
import java.util.ArrayList;
79
import java.util.HashMap;
@@ -14,9 +16,9 @@ public class AxisQueue {
1416

1517
private ConcurrentHashMap<String, Subject> tutoredSubjects;
1618

17-
private ConcurrentHashMap<TutorExtension, Boolean> currentTutors;
19+
private ConcurrentHashMap<TutorExtension, Boolean> currentTutorsInQueue;
1820

19-
private ConcurrentHashMap<Tutee, Boolean> currentTutees;
21+
private ConcurrentHashMap<Tutee, Boolean> currentTuteesInQueue;
2022

2123
private ConcurrentHashMap<Person, String> personToId;
2224

@@ -38,8 +40,8 @@ private ArrayList<String> orderedSubjects(TutorExtension tr) {
3840

3941
public AxisQueue() {
4042
tutoredSubjects = new ConcurrentHashMap<String, Subject>();
41-
currentTutors = new ConcurrentHashMap<TutorExtension, Boolean>();
42-
currentTutees = new ConcurrentHashMap<Tutee, Boolean>();
43+
currentTutorsInQueue = new ConcurrentHashMap<TutorExtension, Boolean>();
44+
currentTuteesInQueue = new ConcurrentHashMap<Tutee, Boolean>();
4345
personToId = new ConcurrentHashMap<Person, String> ();
4446
idToPerson = new ConcurrentHashMap<String, Person> ();
4547
tutorSessions = new ConcurrentHashMap<String, TutoringSession> ();
@@ -52,11 +54,14 @@ private void addClass(String className) {
5254
}
5355

5456
public boolean hasId(long id) {
55-
return currentIdTutors.containsKey(id);
57+
//Depreciated
58+
// return currentIdTutors.containsKey(id);
59+
return false;
5660
}
5761

5862
public void setSession(String id, TutoringSession s) {
5963
// currentIdTutors.put(s.getTutor().getId(), true);
64+
6065
tutorSessions.put(id, s);
6166
}
6267

@@ -113,7 +118,7 @@ private Status removeTutee(Tutee te, String subject) {
113118
private Status processTutor(TutorExtension tr) {
114119
Status currentStatus = tutoredSubjects.get(tr.getTutorSubject()).processTutor(tr);
115120
if (currentStatus.getType().equals(StatusType.TUTEE_FOUND)) {
116-
currentTutees.remove(currentStatus.getTutee());
121+
currentTuteesInQueue.remove(currentStatus.getTutee());
117122
removeCurrentTutor(tr.getTutor().getId());
118123
messagingTemplate.convertAndSend("/topic/" + currentStatus.getTutee().getRoom(), tr.getPairingData());
119124
}
@@ -127,7 +132,7 @@ private Status processTutee(Tutee te, String classRequested) {
127132
TutorExtension pairedTutor = currentStatus.getTutor();
128133

129134
if (currentStatus.getType().equals(StatusType.TUTOR_FOUND)) {
130-
currentTutors.remove(currentStatus.getTutor());
135+
currentTutorsInQueue.remove(currentStatus.getTutor());
131136
messagingTemplate.convertAndSend("/topic/" + currentStatus.getTutor().getRoom(), te.getPairingData());
132137
}
133138

@@ -159,14 +164,23 @@ public synchronized HashMap<String, Integer> getQueueData() {
159164

160165
public synchronized ArrayList<HashMap<String, String>> getTutorList() {
161166
if (DEBUG_MODE) {
162-
ArrayList<HashMap<String, String>> temp = new ArrayList<HashMap<String, String>>();
163-
HashMap<String, String> temp2 = new HashMap<String, String>();
164-
temp2.put("subjects", "10, 20, 30");
165-
temp2.put("tutorID", "5124");
166-
temp2.put("name", "WORK IN PROGRESS");
167-
temp2.put("location", "PC 31");
168-
temp.add(temp2);
169-
return temp;
167+
ArrayList<HashMap<String, String>> finalList = new ArrayList<HashMap<String, String>>();
168+
List sortedKeys = new ArrayList<TutorExtension>(currentTutorsInQueue.keySet());
169+
Collections.sort(sortedKeys);
170+
171+
172+
for (Object t : sortedKeys) {
173+
TutorExtension te = (TutorExtension)t;
174+
175+
HashMap<String, String> currentIteration = new HashMap<String, String>();
176+
currentIteration.put("subjects", te.getSubjectListString());
177+
currentIteration.put("tutorID", "5124");
178+
currentIteration.put("name", te.getName());
179+
currentIteration.put("location", "Kemper");
180+
finalList.add(currentIteration);
181+
}
182+
183+
return finalList;
170184
}
171185
return new ArrayList<HashMap<String, String>>();
172186
}
@@ -176,7 +190,7 @@ public synchronized Status tutorQuit(TutorExtension tr) {
176190
removeTutor(tr, subject);
177191
}
178192

179-
currentTutors.remove(tr);
193+
currentTutorsInQueue.remove(tr);
180194

181195

182196
removeCurrentTutor(tr.getTutor().getId());
@@ -185,7 +199,8 @@ public synchronized Status tutorQuit(TutorExtension tr) {
185199
}
186200

187201
public synchronized void removeCurrentTutor(Long id) {
188-
currentIdTutors.remove(id);
202+
//Depreciated
203+
// currentIdTutors.remove(id);
189204
}
190205

191206
public synchronized Status removePersonAndMappingByID(String id) {
@@ -206,13 +221,13 @@ public synchronized Status removePersonAndMappingByID(String id) {
206221
}
207222

208223
public synchronized Status tuteeQuit(Tutee te) {
209-
currentTutees.remove(te);
224+
currentTuteesInQueue.remove(te);
210225
removeTutee(te, te.getRequestedClass());
211226
return new Status(StatusType.TUTEE_QUIT, te);
212227
}
213228

214229
// public synchronized Status tutorPresent(Tutor tr) {
215-
// currentTutors.put(tr, true);
230+
// currentTutorsInQueue.put(tr, true);
216231
// return new Status(StatusType.TUTOR_REGISTERED, tr);
217232
// }
218233

@@ -221,17 +236,18 @@ public synchronized Status add(Person p) {
221236
if (p instanceof TutorExtension) {
222237

223238
TutorExtension tr = (TutorExtension) p;
224-
if (currentTutors.containsKey(tr) || hasId(tr.getTutor().getId())) {
239+
if (currentTutorsInQueue.containsKey(tr) || hasId(tr.getTutor().getId())) {
225240
return new Status(StatusType.DUPE_ERROR, "Duplicate Tutor");
226241
}
227242

228-
currentIdTutors.put(tr.getTutor().getId(), true);
243+
//Depreciated
244+
// currentIdTutors.put(tr.getTutor().getId(), true);
229245
tr.setValid(true);
230246

231247
if(canTutor(tr)) {
232248
return processTutor(tr);
233249
} else {
234-
currentTutors.put(tr, true);
250+
currentTutorsInQueue.put(tr, true);
235251
for (String subject : tr.getSubjects()) {
236252
if (!tutoredSubjects.containsKey(subject)) {
237253
addClass(subject);
@@ -244,12 +260,12 @@ public synchronized Status add(Person p) {
244260
Tutee te = (Tutee) p;
245261
String classRequested = te.getRequestedClass();
246262

247-
if (currentTutees.containsKey(te))
263+
if (currentTuteesInQueue.containsKey(te))
248264
return new Status(StatusType.DUPE_ERROR, "Duplicate Tutee");
249265
if(canBeTutored(classRequested)) {
250266
return processTutee(te, classRequested);
251267
} else {
252-
currentTutees.put(te, true);
268+
currentTuteesInQueue.put(te, true);
253269
if (!tutoredSubjects.containsKey(classRequested)) {
254270
addClass(classRequested);
255271
}

athena/src/main/java/org/dcsc/athena/objects/TutorExtension.java

+19-1
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import java.util.TreeSet;
44
import java.util.HashMap;
5+
import java.util.*;
56
import org.dcsc.core.tutor.Tutor;
67

78
public class TutorExtension extends Person{
89

910
private TreeSet<String> subjects;
1011
private String tutoredSubject;
1112
private HashMap<String, String> tutorMapping;
13+
private String subjectList;
1214
private String imgURL;
1315
private Tutor tutor;
1416
private String id;
@@ -53,7 +55,7 @@ public TutorExtension(String name, String email, TreeSet<String> subjects, Strin
5355
this.subjects = subjects;
5456
this.location = "Tutor will arrive shortly.";
5557
this.tutor = tu;
56-
this.imgURL = "http://placehold.it/150x150";
58+
this.imgURL = "https://placehold.it/150x150";
5759
setRoom(id);
5860
tutorMapping = new HashMap<String, String>();
5961
tutorMapping.put("TutorName", name);
@@ -62,8 +64,18 @@ public TutorExtension(String name, String email, TreeSet<String> subjects, Strin
6264
tutorMapping.put("StatusType", StatusType.TUTOR_FOUND.toString());
6365
valid = false;
6466
this.id = id;
67+
68+
ArrayList<String> temp = new ArrayList<>(subjects);
69+
this.subjectList = temp.toString();
6570
}
6671

72+
public String getSubjectListString() {
73+
return subjectList;
74+
}
75+
public String getName() {
76+
return name;
77+
}
78+
6779
public String getId() {
6880
return this.id;
6981
}
@@ -76,6 +88,12 @@ public int hashCode() {
7688
return this.email.hashCode();
7789
}
7890

91+
92+
public int compare(TutorExtension o1, TutorExtension o2) {
93+
return o1.getName().compareTo(o2.getName());
94+
}
95+
96+
7997
@Override
8098
public boolean equals(Object other) {
8199
return (other instanceof TutorExtension && ((TutorExtension)other).getEmail().equals(this.getEmail()) && ((TutorExtension)other).getRoom().equals(this.getRoom()));

athena/src/main/java/org/dcsc/athena/objects/TutoringSessionRepository.java

+11
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,19 @@
44
import org.dcsc.core.user.DcscUser;
55
import org.springframework.data.jpa.repository.JpaRepository;
66
import org.springframework.stereotype.Repository;
7+
import org.springframework.data.jpa.repository.Query;
8+
import org.springframework.data.repository.query.Param;
9+
import java.util.List;
10+
import java.time.LocalDateTime;
711

812
@Repository
913
public interface TutoringSessionRepository extends JpaRepository<TutoringSession, Long> {
1014
TutoringSession findTutoringSessionById(Long id);
15+
16+
@Query("SELECT t FROM TutoringSession t WHERE t.endDateTime is NULL AND t.tutorId = :id")
17+
List<TutoringSession> findOpenTutoringSessionByTutorId(@Param("id") Long id);
18+
19+
// @Query("SELECT t FROM TutoringSession t WHERE t.endDateTime is NULL AND t.tutorId = :id")
20+
// List<TutoringSession> findAllHoursByUserInInterval(@Param("id") Long id, @Param("startDateTime") LocalDateTime lower, @Param("endDateTime") LocalDateTime upper);
21+
1122
}

0 commit comments

Comments
 (0)