1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package cz.zcu.mre.sparkle.data;
21
22 import javafx.collections.FXCollections;
23 import javafx.collections.ObservableList;
24 import org.apache.jena.datatypes.RDFDatatype;
25 import java.util.Iterator;
26
27
28
29
30
31
32
33
34
35 @SuppressWarnings("SimplifyStreamApiCallChains")
36 public final class DataTypesStorage
37 extends AbstractTermsStorage<StorageEntry> {
38
39 private static final long serialVersionUID = 4147433324159700097L;
40 private static final String XML_ELEMENT_NAME = "DataTypes";
41
42 public DataTypesStorage(final DataAgent dataAgent, final PrefixesStorage dataTypesPrefixesStorage) {
43 super(dataAgent, dataTypesPrefixesStorage);
44 }
45
46
47
48
49
50
51
52
53
54
55 public static final DataTypesStorage getBuiltIn(final DataAgent dataAgent,
56 final PrefixesStorage dataTypesPrefixesStorage) {
57 final DataTypesStorage result = new DataTypesStorage(dataAgent, dataTypesPrefixesStorage);
58
59 final Iterator<RDFDatatype> dataTypeIterator = org.apache.jena.datatypes.TypeMapper.getInstance().listTypes();
60 while (dataTypeIterator.hasNext()) {
61
62 final RDFDatatype datatype = dataTypeIterator.next();
63 final String datatypeIRI = datatype.getURI();
64
65 for (final String iri : dataTypesPrefixesStorage.getIriToPrefixReadOnly().keySet()) {
66 if (datatypeIRI.startsWith(iri))
67 {
68 result.addTerm(new StorageEntry(iri, datatypeIRI.substring(iri.length())));
69 break;
70 }
71 }
72
73
74 }
75
76 return result;
77 }
78
79
80
81
82 public final ObservableList<String> getAllDataTypes() {
83 final ObservableList<String> result = FXCollections.observableArrayList();
84 final PrefixesStorage prefixesStorage = getPrefixesStorage();
85
86 getNamespaceToTermsMap().entrySet().stream().forEach((entry) -> entry.getValue().stream().forEach((storageEntry) -> {
87 final String s = storageEntry.getShortVariant(prefixesStorage);
88 result.add(s == null ? storageEntry.getWrappedIRI() : s);
89 }));
90 return result;
91 }
92
93
94
95
96
97
98
99
100
101
102 public final ObservableList<String> getDataTypesNamesByPrefix(final String prefix, final boolean includePrefix) {
103 return getTermsNamesByPrefix(prefix, includePrefix, StorageEntry.class);
104 }
105
106 @Override
107 public final String getTermNamespace(final StorageEntry term) {
108 return term.getNamespace();
109 }
110
111 @Override
112 public final String getTermName(final StorageEntry term) {
113 return term.getLocalName();
114 }
115
116 @Override
117 public String getTermTitle(StorageEntry term) {
118 return term.getTitle();
119 }
120
121 @Override
122 protected final StorageEntry createTerm(final String namespace, final String localName, String title) {
123 return createTerm(namespace, localName, title, "");
124 }
125
126 @Override
127 protected final StorageEntry createTerm(final String namespace, final String localName, String title, String type) {
128 return new StorageEntry(namespace, localName, title);
129 }
130
131 @Override
132 public final String getXMLElementName() {
133 return XML_ELEMENT_NAME;
134 }
135 }