Skip to content

Commit b48307a

Browse files
committed
Merge pull request #7 from RusticiSoftware/ells/1.0-query-api
* Turn on 1.0.0, and add 1.0 query API support
2 parents 22e1130 + 278a322 commit b48307a

24 files changed

+491
-191
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,7 @@ target/javadoc-bundle-options
2222
target/maven-archiver/
2323
target/maven-status/maven-compiler-plugin
2424
target/test-classes/
25+
26+
.classpath
27+
.project
28+
.settings/

src/main/java/com/rusticisoftware/tincan/Activity.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18-
import com.fasterxml.jackson.databind.JsonNode;
19-
import com.fasterxml.jackson.databind.node.ObjectNode;
18+
import java.net.URI;
19+
import java.net.URISyntaxException;
20+
2021
import lombok.Data;
2122
import lombok.EqualsAndHashCode;
2223
import lombok.NoArgsConstructor;
24+
25+
import com.fasterxml.jackson.databind.JsonNode;
26+
import com.fasterxml.jackson.databind.node.ObjectNode;
2327
import com.rusticisoftware.tincan.json.JSONBase;
2428
import com.rusticisoftware.tincan.json.Mapper;
2529

26-
import java.net.MalformedURLException;
27-
import java.net.URL;
28-
2930
/**
3031
* Activity model class
3132
*/
@@ -35,23 +36,23 @@
3536
public class Activity extends JSONBase implements QueryableStatementTarget {
3637
private final String objectType = "Activity";
3738

38-
private URL id;
39+
private URI id;
3940
private ActivityDefinition definition;
4041

41-
public Activity(URL id) {
42+
public Activity(URI id) {
4243
this.id = id;
4344
}
4445

45-
public Activity(String id) throws MalformedURLException {
46-
this(new URL(id));
46+
public Activity(String id) throws URISyntaxException {
47+
this(new URI(id));
4748
}
4849

49-
public Activity(JsonNode jsonNode) throws MalformedURLException {
50+
public Activity(JsonNode jsonNode) throws URISyntaxException {
5051
this();
5152

5253
JsonNode idNode = jsonNode.path("id");
5354
if (! idNode.isMissingNode()) {
54-
this.setId(new URL(idNode.textValue()));
55+
this.setId(new URI(idNode.textValue()));
5556
}
5657

5758
JsonNode definitionNode = jsonNode.path("definition");
@@ -60,7 +61,7 @@ public Activity(JsonNode jsonNode) throws MalformedURLException {
6061
}
6162
}
6263

63-
public Activity(String id, String name, String description) throws MalformedURLException {
64+
public Activity(String id, String name, String description) throws URISyntaxException {
6465
this(id);
6566

6667
this.setDefinition(new ActivityDefinition(name, description));
@@ -81,11 +82,11 @@ public ObjectNode toJSONNode(TCAPIVersion version) {
8182
return node;
8283
}
8384

84-
public void setId(URL id) {
85+
public void setId(URI id) {
8586
this.id = id;
8687
}
8788

88-
public void setId(String id) throws MalformedURLException {
89-
this.setId(new URL(id));
89+
public void setId(String id) throws URISyntaxException {
90+
this.setId(new URI(id));
9091
}
9192
}

src/main/java/com/rusticisoftware/tincan/ActivityDefinition.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,22 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18+
import static com.rusticisoftware.tincan.InteractionType.getByString;
19+
20+
import java.net.URISyntaxException;
21+
import java.util.ArrayList;
22+
import java.util.Iterator;
23+
24+
import lombok.Data;
25+
import lombok.EqualsAndHashCode;
26+
import lombok.NoArgsConstructor;
27+
1828
import com.fasterxml.jackson.databind.JsonNode;
1929
import com.fasterxml.jackson.databind.ObjectMapper;
2030
import com.fasterxml.jackson.databind.node.ArrayNode;
2131
import com.fasterxml.jackson.databind.node.ObjectNode;
22-
import lombok.Data;
23-
import lombok.EqualsAndHashCode;
24-
import lombok.NoArgsConstructor;
2532
import com.rusticisoftware.tincan.json.JSONBase;
2633
import com.rusticisoftware.tincan.json.Mapper;
27-
import java.net.MalformedURLException;
28-
import java.util.ArrayList;
29-
import java.util.Iterator;
30-
31-
import static com.rusticisoftware.tincan.InteractionType.*;
3234

3335
/**
3436
* Activity Definition model class
@@ -49,7 +51,7 @@ public class ActivityDefinition extends JSONBase {
4951
private ArrayList<InteractionComponent> target;
5052
private ArrayList<InteractionComponent> steps;
5153

52-
public ActivityDefinition(JsonNode jsonNode) throws MalformedURLException {
54+
public ActivityDefinition(JsonNode jsonNode) throws URISyntaxException {
5355
this();
5456

5557
JsonNode typeNode = jsonNode.path("type");

src/main/java/com/rusticisoftware/tincan/Agent.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,25 @@
3030
@EqualsAndHashCode(callSuper = false)
3131
@NoArgsConstructor
3232
public class Agent extends JSONBase implements QueryableStatementTarget {
33-
private final String objectType = "Agent";
33+
protected final String objectType = "Agent";
3434
private String name;
3535
private String mbox;
3636
private String mboxSHA1Sum;
3737
private String openID;
3838
private AgentAccount account;
3939

40-
public Agent(JsonNode jsonNode) {
40+
public static Agent fromJson(JsonNode jsonNode) {
41+
42+
String objectType = "Agent";
43+
JsonNode objectTypeNode = jsonNode.path("objectType");
44+
if (! objectTypeNode.isMissingNode()) {
45+
objectType = objectTypeNode.textValue();
46+
}
47+
48+
return "Group".equals(objectType) ? new Group(jsonNode) : new Agent(jsonNode);
49+
}
50+
51+
protected Agent(JsonNode jsonNode) {
4152
this();
4253

4354
JsonNode nameNode = jsonNode.path("name");

src/main/java/com/rusticisoftware/tincan/Context.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18-
import com.fasterxml.jackson.databind.JsonNode;
19-
import com.fasterxml.jackson.databind.node.ObjectNode;
18+
import java.net.URISyntaxException;
19+
import java.util.UUID;
20+
2021
import lombok.Data;
2122
import lombok.EqualsAndHashCode;
2223
import lombok.NoArgsConstructor;
24+
25+
import com.fasterxml.jackson.databind.JsonNode;
26+
import com.fasterxml.jackson.databind.node.ObjectNode;
2327
import com.rusticisoftware.tincan.json.JSONBase;
2428
import com.rusticisoftware.tincan.json.Mapper;
25-
import java.net.MalformedURLException;
26-
import java.util.UUID;
2729

2830
/**
2931
* Context Class Description
@@ -42,7 +44,7 @@ public class Context extends JSONBase {
4244
private SubStatement statement;
4345
private Extensions extensions;
4446

45-
public Context(JsonNode jsonNode) throws MalformedURLException {
47+
public Context(JsonNode jsonNode) throws URISyntaxException {
4648
this();
4749

4850
JsonNode registrationNode = jsonNode.path("registration");
@@ -53,12 +55,12 @@ public Context(JsonNode jsonNode) throws MalformedURLException {
5355
// TODO: check these for Group
5456
JsonNode instructorNode = jsonNode.path("instructor");
5557
if (! instructorNode.isMissingNode()) {
56-
this.setInstructor(new Agent(instructorNode));
58+
this.setInstructor(Agent.fromJson(instructorNode));
5759
}
5860

5961
JsonNode teamNode = jsonNode.path("team");
6062
if (! teamNode.isMissingNode()) {
61-
this.setTeam(new Agent(teamNode));
63+
this.setTeam(Agent.fromJson(teamNode));
6264
}
6365

6466
JsonNode contextActivitiesNode = jsonNode.path("contextActivities");

src/main/java/com/rusticisoftware/tincan/ContextActivities.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,22 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18+
import java.net.URISyntaxException;
19+
import java.util.ArrayList;
20+
import java.util.Iterator;
21+
import java.util.List;
22+
23+
import lombok.Data;
24+
import lombok.EqualsAndHashCode;
25+
import lombok.NoArgsConstructor;
26+
1827
import com.fasterxml.jackson.databind.JsonNode;
1928
import com.fasterxml.jackson.databind.ObjectMapper;
2029
import com.fasterxml.jackson.databind.node.ArrayNode;
2130
import com.fasterxml.jackson.databind.node.ObjectNode;
22-
import lombok.Data;
23-
import lombok.EqualsAndHashCode;
24-
import lombok.NoArgsConstructor;
2531
import com.rusticisoftware.tincan.exceptions.IncompatibleTCAPIVersion;
2632
import com.rusticisoftware.tincan.json.JSONBase;
2733
import com.rusticisoftware.tincan.json.Mapper;
28-
import java.net.MalformedURLException;
29-
import java.util.ArrayList;
30-
import java.util.Iterator;
31-
import java.util.List;
3234

3335
/**
3436
* ContextActivities Model class
@@ -41,7 +43,7 @@ public class ContextActivities extends JSONBase {
4143
private List<Activity> grouping;
4244
private List<Activity> other;
4345

44-
public ContextActivities(JsonNode jsonNode) throws MalformedURLException {
46+
public ContextActivities(JsonNode jsonNode) throws URISyntaxException {
4547
this();
4648

4749
JsonNode parentNode = jsonNode.path("parent");

src/main/java/com/rusticisoftware/tincan/Extensions.java

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18-
import com.fasterxml.jackson.databind.JsonNode;
19-
import com.fasterxml.jackson.databind.node.ObjectNode;
2018
import java.io.IOException;
21-
import java.net.MalformedURLException;
22-
import java.net.URL;
19+
import java.net.URI;
20+
import java.net.URISyntaxException;
2321
import java.util.HashMap;
2422
import java.util.Iterator;
2523
import java.util.Map;
24+
2625
import lombok.NoArgsConstructor;
26+
27+
import com.fasterxml.jackson.databind.JsonNode;
28+
import com.fasterxml.jackson.databind.node.ObjectNode;
2729
import com.rusticisoftware.tincan.json.Mapper;
2830
import com.rusticisoftware.tincan.json.StringOfJSON;
2931

@@ -32,58 +34,58 @@
3234
*/
3335
@NoArgsConstructor
3436
public class Extensions {
35-
private final HashMap<URL,JsonNode> _map = new HashMap<URL,JsonNode>();
37+
private final HashMap<URI,JsonNode> _map = new HashMap<URI,JsonNode>();
3638

37-
public Extensions(JsonNode jsonNode) throws MalformedURLException {
39+
public Extensions(JsonNode jsonNode) throws URISyntaxException {
3840
Iterator<Map.Entry<String,JsonNode>> items = jsonNode.fields();
3941
while(items.hasNext()) {
4042
Map.Entry<String,JsonNode> item = items.next();
4143

42-
this.put(new URL(item.getKey()), item.getValue());
44+
this.put(new URI(item.getKey()), item.getValue());
4345
}
4446
}
4547

46-
public Extensions(StringOfJSON jsonStr) throws IOException {
48+
public Extensions(StringOfJSON jsonStr) throws IOException, URISyntaxException {
4749
this(jsonStr.toJSONNode());
4850
}
4951

5052
public ObjectNode toJSONNode(TCAPIVersion version) {
5153
ObjectNode node = Mapper.getInstance().createObjectNode();
5254

53-
for (Map.Entry<URL,JsonNode> entry : this._map.entrySet()) {
55+
for (Map.Entry<URI,JsonNode> entry : this._map.entrySet()) {
5456
node.put(entry.getKey().toString(), entry.getValue());
5557
}
5658

5759
return node;
5860
}
5961

60-
public Object put(URL key, JsonNode val) {
62+
public Object put(URI key, JsonNode val) {
6163
return this._map.put(key, val);
6264
}
6365

64-
public Object put(String key, JsonNode val) throws MalformedURLException {
65-
return this.put(new URL(key), val);
66+
public Object put(String key, JsonNode val) throws URISyntaxException {
67+
return this.put(new URI(key), val);
6668
}
6769

68-
public Object put(URL key, Object val) {
70+
public Object put(URI key, Object val) {
6971
JsonNode storeVal = Mapper.getInstance().valueToTree(val);
7072
return this.put(key, storeVal);
7173
}
7274

73-
public Object put(URL key, StringOfJSON val) {
75+
public Object put(URI key, StringOfJSON val) {
7476
JsonNode storeVal = Mapper.getInstance().valueToTree(val);
7577
return this.put(key, storeVal);
7678
}
7779

78-
public Object put(String key, Object val) throws MalformedURLException {
79-
return this.put(new URL(key), val);
80+
public Object put(String key, Object val) throws URISyntaxException {
81+
return this.put(new URI(key), val);
8082
}
8183

82-
public JsonNode get(URL key) {
84+
public JsonNode get(URI key) {
8385
return this._map.get(key);
8486
}
8587

86-
public JsonNode get(String key) throws MalformedURLException {
87-
return this.get(new URL(key));
88+
public JsonNode get(String key) throws URISyntaxException {
89+
return this.get(new URI(key));
8890
}
8991
}

src/main/java/com/rusticisoftware/tincan/Group.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@
1515
*/
1616
package com.rusticisoftware.tincan;
1717

18+
import java.util.ArrayList;
19+
import java.util.Iterator;
20+
import java.util.List;
21+
22+
import com.fasterxml.jackson.databind.JsonNode;
23+
import com.fasterxml.jackson.databind.node.ArrayNode;
24+
import com.fasterxml.jackson.databind.node.ObjectNode;
25+
import com.rusticisoftware.tincan.json.Mapper;
26+
1827
import lombok.Data;
1928
import lombok.EqualsAndHashCode;
2029

@@ -24,5 +33,36 @@
2433
@Data
2534
@EqualsAndHashCode(callSuper = true)
2635
public class Group extends Agent {
27-
private final String objectType = "Group";
36+
protected final String objectType = "Group";
37+
private List<Agent> members;
38+
39+
public Group() {
40+
super();
41+
}
42+
43+
public Group(JsonNode jsonNode) {
44+
super(jsonNode);
45+
46+
JsonNode memberNode = jsonNode.path("member");
47+
if (! memberNode.isMissingNode()) {
48+
this.members = new ArrayList<Agent>();
49+
Iterator it = memberNode.elements();
50+
while(it.hasNext()) {
51+
this.members.add(Agent.fromJson((JsonNode) it.next()));
52+
}
53+
}
54+
}
55+
56+
@Override
57+
public ObjectNode toJSONNode(TCAPIVersion version) {
58+
ObjectNode node = super.toJSONNode(version);
59+
if (this.getMembers() != null) {
60+
ArrayNode memberNode = Mapper.getInstance().createArrayNode();
61+
for (Agent member : this.getMembers()) {
62+
memberNode.add(member.toJSONNode(version));
63+
}
64+
node.put("member", memberNode);
65+
}
66+
return node;
67+
}
2868
}

src/main/java/com/rusticisoftware/tincan/LRS.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
*/
2424
public interface LRS {
2525
Statement retrieveStatement(String id) throws Exception;
26-
StatementsResult queryStatements(StatementsQuery query) throws Exception;
26+
Statement retrieveVoidedStatement(String id) throws Exception;
27+
StatementsResult queryStatements(StatementsQueryInterface query) throws Exception;
2728
StatementsResult moreStatements(String moreURL) throws Exception;
2829
UUID saveStatement(Statement statement) throws Exception;
2930
List<String> saveStatements(List<Statement> statements) throws Exception;

0 commit comments

Comments
 (0)