-
Notifications
You must be signed in to change notification settings - Fork 86
/
SimpleDataView.java
77 lines (66 loc) · 2.69 KB
/
SimpleDataView.java
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
package edu.cornell.mannlib.vitro.webapp.dynapi.data;
import java.util.LinkedList;
import java.util.List;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.rdf.model.RDFNode;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.Parameter;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.Parameters;
import edu.cornell.mannlib.vitro.webapp.dynapi.components.operations.SparqlSelectQuery;
import edu.cornell.mannlib.vitro.webapp.dynapi.data.conversion.ConversionException;
public class SimpleDataView {
public static List<String> getNames(Parameters params) {
List<String> result = new LinkedList<>();
for (String name : params.getNames()) {
Parameter param = params.get(name);
if (!param.isJsonContainer() && !JsonView.isJsonNode(param)) {
result.add(name);
}
}
return result;
}
public static String getStringRepresentation(String name, DataStore store){
final Data data = store.getData(name);
return data.getObject().toString();
}
public static String getStringRepresentation( Data data){
return data.getObject().toString();
}
public static void addFromSolution(DataStore dataStore, List<String> vars,
QuerySolution solution, Parameters outputParams) throws ConversionException {
List<String> simpleData = getNames(outputParams);
for (String var : vars) {
SparqlSelectQuery.log.debug(var + " : " + solution.get(var));
if (simpleData.contains(var) && solution.contains(var)) {
RDFNode solVar = solution.get(var);
Parameter param = outputParams.get(var);
Data data = new Data(param);
//TODO: new data should be created based on it's RDF type and parameter type
if (param.getType().isRdfType()) {
data.setRawString(solVar.toString());
} else {
if (solVar.isLiteral()) {
Literal literal = (Literal) solVar;
data.setRawString(literal.getLexicalForm());
} else {
data.setRawString(solVar.toString());
}
}
data.earlyInitialization();
dataStore.addData(var, data);
simpleData.remove(var);
}
}
}
public static List<String> getPlainStringList(Parameters params, DataStore dataStore) {
List<String> uris = new LinkedList<String>();
for (String paramName : params.getNames()) {
Data data = dataStore.getData(paramName);
if (data.getParam().isString()) {
String uri = data.getSerializedValue();
uris.add(uri);
}
}
return uris;
}
}