21
21
22
22
import models .JWT ;
23
23
import models .LTI ;
24
- import models .AssignmentConnector ;
24
+ import models .StorageConnector ;
25
25
import oauth .signpost .exception .OAuthCommunicationException ;
26
26
import oauth .signpost .exception .OAuthExpectationFailedException ;
27
27
import oauth .signpost .exception .OAuthMessageSignerException ;
@@ -42,7 +42,7 @@ Session cookie (LTI Instructors only)
42
42
43
43
44
44
public class LTIAssignment extends Controller {
45
- @ Inject private AssignmentConnector assignmentConn ;
45
+ @ Inject private StorageConnector assignmentConn ;
46
46
@ Inject private LTI lti ;
47
47
@ Inject private JWT jwt ;
48
48
private static Logger .ALogger logger = Logger .of ("com.horstmann.codecheck" );
@@ -63,9 +63,7 @@ private String assignmentOfResource(String resourceID) throws IOException {
63
63
int i = resourceID .lastIndexOf (" " );
64
64
return resourceID .substring (i + 1 );
65
65
} else {
66
- ObjectNode resourceNode = assignmentConn .readJsonObjectFromDB ("CodeCheckLTIResources" , "resourceID" , resourceID );
67
- if (resourceNode == null ) return null ;
68
- return resourceNode .get ("assignmentID" ).asText ();
66
+ return assignmentConn .readLegacyLTIResource (resourceID );
69
67
}
70
68
}
71
69
@@ -117,13 +115,13 @@ public Result saveAssignment(Http.Request request) throws IOException {
117
115
}
118
116
119
117
assignmentID = params .get ("assignmentID" ).asText ();
120
- ObjectNode assignmentNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
118
+ ObjectNode assignmentNode = assignmentConn .readAssignment ( assignmentID );
121
119
String editKey = params .get ("editKey" ).asText ();
122
120
123
121
if (assignmentNode != null && !editKey .equals (assignmentNode .get ("editKey" ).asText ()))
124
122
return badRequest ("Edit keys do not match" );
125
123
126
- assignmentConn .writeJsonObjectToDB ( "CodeCheckAssignments" , params );
124
+ assignmentConn .writeAssignment ( params );
127
125
}
128
126
129
127
ObjectNode result = JsonNodeFactory .instance .objectNode ();
@@ -138,10 +136,10 @@ public Result saveAssignment(Http.Request request) throws IOException {
138
136
@ Security .Authenticated (Secured .class ) // Instructor
139
137
public Result viewSubmissions (Http .Request request ) throws IOException {
140
138
String resourceID = request .queryString ("resourceID" ).orElse (null );
141
- Map <String , ObjectNode > itemMap = assignmentConn .readJsonObjectsFromDB ( "CodeCheckWork" , "assignmentID" , resourceID , "workID" );
139
+ Map <String , ObjectNode > itemMap = assignmentConn .readAllWork ( resourceID );
142
140
String assignmentID = assignmentOfResource (resourceID );
143
141
144
- ObjectNode assignmentNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
142
+ ObjectNode assignmentNode = assignmentConn .readAssignment ( assignmentID );
145
143
if (assignmentNode == null ) return badRequest ("Assignment not found" );
146
144
147
145
ArrayNode submissions = JsonNodeFactory .instance .arrayNode ();
@@ -164,10 +162,10 @@ public Result viewSubmissions(Http.Request request) throws IOException {
164
162
public Result viewSubmission (Http .Request request ) throws IOException {
165
163
String resourceID = request .queryString ("resourceID" ).orElse (null );
166
164
String workID = request .queryString ("workID" ).orElse (null );
167
- String work = assignmentConn .readJsonStringFromDB ( "CodeCheckWork" , "assignmentID" , resourceID , "workID" , workID );
165
+ String work = assignmentConn .readWorkString ( resourceID , workID );
168
166
if (work == null ) return badRequest ("Work not found" );
169
167
String assignmentID = assignmentOfResource (resourceID );
170
- ObjectNode assignmentNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
168
+ ObjectNode assignmentNode = assignmentConn .readAssignment ( assignmentID );
171
169
if (assignmentNode == null ) return badRequest ("Assignment not found" );
172
170
ArrayNode groups = (ArrayNode ) assignmentNode .get ("problems" );
173
171
assignmentNode .set ("problems" , groups .get (Math .abs (workID .hashCode ()) % groups .size ()));
@@ -178,7 +176,7 @@ public Result viewSubmission(Http.Request request) throws IOException {
178
176
@ Security .Authenticated (Secured .class ) // Instructor
179
177
public Result editAssignment (Http .Request request , String assignmentID ) throws IOException {
180
178
String editKey = request .session ().get ("user" ).get (); // TODO orElseThrow();
181
- ObjectNode assignmentNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
179
+ ObjectNode assignmentNode = assignmentConn .readAssignment ( assignmentID );
182
180
if (assignmentNode == null ) return badRequest ("Assignment not found" );
183
181
184
182
if (!editKey .equals (assignmentNode .get ("editKey" ).asText ()))
@@ -207,7 +205,7 @@ private static ObjectNode bridgeAssignment(String url) {
207
205
208
206
private ObjectNode getAssignmentNode (String assignmentID ) throws IOException {
209
207
if (isBridgeAssignment .matcher (assignmentID ).matches ()) return bridgeAssignment (assignmentID );
210
- else return assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
208
+ else return assignmentConn .readAssignment ( assignmentID );
211
209
}
212
210
213
211
public Result launch (Http .Request request , String assignmentID ) throws IOException {
@@ -233,9 +231,11 @@ public Result launch(Http.Request request, String assignmentID) throws IOExcepti
233
231
ObjectNode ltiNode = JsonNodeFactory .instance .objectNode ();
234
232
// TODO: In order to facilitate search by assignmentID, it would be better if this was the other way around
235
233
String resourceID = toolConsumerID + "/" + contextID + " " + assignmentID ;
234
+
235
+ // TODO: When can we drop this?
236
236
String legacyResourceID = toolConsumerID + "/" + contextID + "/" + resourceLinkID ;
237
- ObjectNode resourceNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckLTIResources" , "resourceID" , legacyResourceID );
238
- if (resourceNode != null ) resourceID = legacyResourceID ;
237
+ String legacy = assignmentConn .readLegacyLTIResource ( legacyResourceID );
238
+ if (legacy != null ) resourceID = legacyResourceID ;
239
239
240
240
if (assignmentID == null ) {
241
241
return badRequest ("No assignment ID" );
@@ -281,7 +281,7 @@ public Result launch(Http.Request request, String assignmentID) throws IOExcepti
281
281
ltiNode .put ("oauthConsumerKey" , oauthConsumerKey );
282
282
ltiNode .put ("jwt" , jwt .generate (Map .of ("resourceID" , resourceID , "userID" , userID )));
283
283
284
- ObjectNode workNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckWork" , "assignmentID" , resourceID , "workID" , userID );
284
+ ObjectNode workNode = assignmentConn .readWork ( resourceID , userID );
285
285
String work = "" ;
286
286
if (workNode == null )
287
287
work = "{ problems: {} }" ;
@@ -304,10 +304,10 @@ public Result launch(Http.Request request, String assignmentID) throws IOExcepti
304
304
public Result allSubmissions (Http .Request request ) throws IOException {
305
305
String resourceID = request .queryString ("resourceID" ).orElse (null );
306
306
if (resourceID == null ) return badRequest ("Assignment not found" );
307
- Map <String , ObjectNode > itemMap = assignmentConn .readJsonObjectsFromDB ( "CodeCheckWork" , "assignmentID" , resourceID , "workID" );
307
+ Map <String , ObjectNode > itemMap = assignmentConn .readAllWork ( resourceID );
308
308
String assignmentID = assignmentOfResource (resourceID );
309
309
310
- ObjectNode assignmentNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckAssignments" , "assignmentID" , assignmentID );
310
+ ObjectNode assignmentNode = assignmentConn .readAssignment ( assignmentID );
311
311
if (assignmentNode == null ) return badRequest ("Assignment not found" );
312
312
313
313
ObjectNode submissions = JsonNodeFactory .instance .objectNode ();
@@ -342,7 +342,7 @@ public Result saveWork(Http.Request request) throws IOException, NoSuchAlgorithm
342
342
submissionNode .put ("submittedAt" , now .toString ());
343
343
submissionNode .put ("state" , problemsNode .get (problemID ).get ("state" ).toString ());
344
344
submissionNode .put ("score" , problemsNode .get (problemID ).get ("score" ).asDouble ());
345
- assignmentConn .writeJsonObjectToDB ( "CodeCheckSubmissions" , submissionNode );
345
+ assignmentConn .writeSubmission ( submissionNode );
346
346
347
347
ObjectNode assignmentNode = getAssignmentNode (assignmentID );
348
348
if (assignmentNode .has ("deadline" )) {
@@ -355,7 +355,7 @@ public Result saveWork(Http.Request request) throws IOException, NoSuchAlgorithm
355
355
}
356
356
}
357
357
result .put ("submittedAt" , now .toString ());
358
- if (assignmentConn .writeNewerJsonObjectToDB ( "CodeCheckWork" , workNode , "assignmentID" , "submittedAt" )) {
358
+ if (assignmentConn .writeWork ( workNode )) {
359
359
// Don't submit grade if this is an older submission
360
360
submitGradeToLMS (requestNode , (ObjectNode ) requestNode .get ("work" ), result );
361
361
}
@@ -380,7 +380,7 @@ public Result sendScore(Http.Request request) throws IOException, NoSuchAlgorith
380
380
String userID = claims .get ("userID" ).toString ();
381
381
String resourceID = claims .get ("resourceID" ).toString ();
382
382
383
- ObjectNode workNode = assignmentConn .readJsonObjectFromDB ( "CodeCheckWork" , "assignmentID" , resourceID , "workID" , userID );
383
+ ObjectNode workNode = assignmentConn .readWork ( resourceID , userID );
384
384
if (workNode == null ) return badRequest ("Work not found" );
385
385
submitGradeToLMS (requestNode , workNode , result );
386
386
String outcome = result .get ("outcome" ).asText ();
0 commit comments