Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package wrapper;
import sofia_kp.SIBResponse;
import sofia_kp.iKPIC_subscribeHandler2;
import sofia_kp.KPICore;
import java.util.ArrayList;
import java.util.Vector;
public class SmartSpaceKPI {
private KPICore core;
private ArrayList<String> subscriptionIdList;
public SmartSpaceKPI(String host, int port, String spaceName) throws SmartSpaceException {
core = new KPICore(host, port, spaceName);
subscriptionIdList = new ArrayList<String>();
SIBResponse joinResponse = core.join();
if (!joinResponse.isConfirmed())
throw new SmartSpaceException(joinResponse.Message);
core.disable_debug_message();
}
public void insert(SmartSpaceTriplet triplet) throws SmartSpaceException {
SIBResponse insertResponse = core.insert(triplet.getSubject(), triplet.getPredicate(), triplet.getObject(), triplet.getSubjectType(), triplet.getObjectType());
if (!insertResponse.isConfirmed()) {
String text = String.format("KPI failed to insert triplet: (%s, %s, %s, %s, %s)",
triplet.getSubject(), triplet.getPredicate(), triplet.getObject(),
triplet.getSubjectType(), triplet.getObjectType());
throw new SmartSpaceException(text + '\n' + insertResponse.Message);
}
}
public void remove(SmartSpaceTriplet triplet) throws SmartSpaceException {
SIBResponse removeResponse = core.remove(triplet.getSubject(), triplet.getPredicate(), triplet.getObject(), triplet.getSubjectType(), triplet.getObjectType());
if (!removeResponse.isConfirmed()) {
String text = String.format("KP failed to remove triplet: (%s, %s, %s, %s, %s)",
triplet.getSubject(), triplet.getPredicate(), triplet.getObject(),
triplet.getSubjectType(), triplet.getObjectType());
throw new SmartSpaceException(text + '\n' + removeResponse.Message);
}
}
public Vector<SmartSpaceTriplet> query(SmartSpaceTriplet triplet) throws SmartSpaceException {
SIBResponse queryResponse = core.queryRDF(triplet.getSubject(), triplet.getPredicate(), triplet.getObject(), triplet.getSubjectType(), triplet.getObjectType());
if (queryResponse.isConfirmed()) {
Vector<Vector<String>> stringVectorResult = queryResponse.query_results;
Vector<SmartSpaceTriplet> result = new Vector<SmartSpaceTriplet>();
for (Vector<String> it : stringVectorResult) {
result.add(new SmartSpaceTriplet(it));
}
return result;
} else {
throw new SmartSpaceException(queryResponse.Message);
}
}
public void update(SmartSpaceTriplet newTriplet, SmartSpaceTriplet oldTriplet) throws SmartSpaceException {
SIBResponse updateResponse = core.update(
newTriplet.getSubject(), newTriplet.getPredicate(), newTriplet.getObject(), newTriplet.getSubjectType(), newTriplet.getObjectType(),
oldTriplet.getSubject(), oldTriplet.getPredicate(), oldTriplet.getObject(), oldTriplet.getSubjectType(), oldTriplet.getObjectType()
);
if (!updateResponse.isConfirmed()) {
String text = String.format("KP failed to update triplet! Old triplet: (%s, %s, %s, %s, %s), new triplet (%s, %s, %s, %s, %s)",
newTriplet.getSubject(), newTriplet.getPredicate(), newTriplet.getObject(), newTriplet.getSubjectType(), newTriplet.getObjectType(),
oldTriplet.getSubject(), oldTriplet.getPredicate(), oldTriplet.getObject(), oldTriplet.getSubjectType(), oldTriplet.getObjectType());
throw new SmartSpaceException(text + '\n' + updateResponse.Message);
}
}
public void subscribe(SmartSpaceTriplet triplet, iKPIC_subscribeHandler2 handler) throws SmartSpaceException {
SIBResponse subscribeResponse = core.subscribeRDF(triplet.getSubject(), triplet.getPredicate(), triplet.getObject(), triplet.getObjectType(), handler);
if (subscribeResponse != null && subscribeResponse.isConfirmed()) {
subscriptionIdList.add(subscribeResponse.subscription_id);
} else {
System.err.println("Some problems with subscribing");
throw new SmartSpaceException(subscribeResponse != null ? subscribeResponse.Message : null);
}
}
public void leave() throws SmartSpaceException {
try {
unsubscribe();
}
catch (SmartSpaceException exception)
{
System.err.println(exception.getMessage());
}
SIBResponse leaveResponse = core.leave();
if (!leaveResponse.isConfirmed()) {
throw new SmartSpaceException(leaveResponse.Message);
}
}
private void unsubscribe() throws SmartSpaceException {
String exceptionMessage = "";
for (String id : subscriptionIdList) {
SIBResponse unsubscribeResponse = core.unsubscribe(id);
// у нас проблемы с отпиской от интеллектуального пространства
if (!unsubscribeResponse.isConfirmed()) {
exceptionMessage += id + ": " + unsubscribeResponse.Message + '\n';
}
}
subscriptionIdList.clear();
// проблемы во время отписки были, сигнализируем это
if (!exceptionMessage.isEmpty()) {
throw new SmartSpaceException(exceptionMessage);
}
}
}