67 JSONObject outputJSONobject =
new JSONObject();
68 JSONArray errorArray =
new JSONArray();
70 int importedlabels = 0;
71 boolean error =
false;
74 ImportcsvResource.action =
"check file and vocabularies (validate)...";
76 ImportcsvResource.action =
"check file and vocabularies...";
81 String[] csvLines = csvContent.split(
"\r\n");
84 String query =
rdf.getPREFIXSPARQL();
85 query +=
"SELECT * WHERE { ?v a ls:Vocabulary . ?v dc:identifier \"" + vocab +
"\" . }";
86 List<BindingSet> voc_result = RDF4J_20.SPARQLquery(ConfigProperties.getPropertyParam(
"repository"), ConfigProperties.getPropertyParam(
"ts_server"), query);
87 List<String> voc_true = RDF4J_20.getValuesFromBindingSet_ORDEREDLIST(voc_result,
"v");
88 if (voc_true.size() == 0) {
90 errorArray.add(
"error: vocabulary not found");
95 query =
rdf.getPREFIXSPARQL();
96 query +=
"SELECT * WHERE { ?vocab dc:identifier \"" + vocab +
"\". ?vocab dc:language ?lang. }";
97 List<BindingSet> result = RDF4J_20.SPARQLquery(ConfigProperties.getPropertyParam(
"repository"), ConfigProperties.getPropertyParam(
"ts_server"), query);
98 HashSet<String> langList = RDF4J_20.getValuesFromBindingSet_UNIQUESET(result,
"lang");
102 errorArray.add(
"error: no vocabulary language");
107 query =
rdf.getPREFIXSPARQL();
108 query +=
"SELECT * WHERE { ?vocab dc:identifier \"" + vocab +
"\". ?vocab dc:creator ?creator. }";
109 result = RDF4J_20.SPARQLquery(ConfigProperties.getPropertyParam(
"repository"), ConfigProperties.getPropertyParam(
"ts_server"), query);
110 HashSet<String> creatorList = RDF4J_20.getValuesFromBindingSet_UNIQUESET(result,
"creator");
111 creator = (String) creatorList.toArray()[0];
114 errorArray.add(
"error: no creator available");
118 for (
int i = 0; i < csvLines.length; i++) {
119 if (csvLines[i].equals(
"")) {
120 errorArray.add(
"error: empty line found in line " + (i + 1));
126 String[] header = csvLines[0].split(
"\t");
127 if (header ==
null) {
128 errorArray.add(
"error: no header existing");
132 throw new IllegalArgumentException();
133 }
else if (header.length == 4) {
134 if (header[0].contains(
"thumbnail") && header[1].contains(
"description") && header[2].contains(
"translations") && header[3].contains(
"end")) {
136 String headerStr = header[0] +
"," + header[1] +
"," + header[2] +
"," + header[3];
137 errorArray.add(
"error: wrong header-names in first line -> " + headerStr);
142 errorArray.add(
"error: wrong header-names in first line");
146 throw new IllegalArgumentException();
149 if (csvLines.length < 2) {
150 errorArray.add(
"error: linebreaks wrong");
155 for (
int i = 0; i < csvLines.length; i++) {
156 String[] tokens = csvLines[i].split(
"[\t]");
157 if (tokens.length != 4) {
158 errorArray.add(
"error: delimiter wrong or not enough fields (=4) in line " + (i + 1));
164 for (
int i = 1; i < csvLines.length; i++) {
165 String[] tokens = csvLines[i].split(
"[\t]");
166 if (tokens[0].equals(
"")) {
167 errorArray.add(
"error: no thumbnail in line " + i);
173 for (
int i = 1; i < csvLines.length; i++) {
174 String[] tokens = csvLines[i].split(
"[\t]");
175 if (!tokens[2].equals(
"") && !tokens[2].contains(
";")) {
176 errorArray.add(
"error: semocolon needed for translations in line " + (i + 1));
180 if (tokens[2].contains(
";")) {
181 if (tokens[2].split(
";").length % 2 != 0) {
182 errorArray.add(
"error: language or deliminiter error for translations in line " + (i + 1));
189 for (
int i = 1; i < csvLines.length; i++) {
190 String[] tokens = csvLines[i].split(
"[\t]");
191 for (
int j = 0; j < tokens.length; j = j + 2) {
193 errorArray.add(
"error: translation language is same as thumbnail langauge in line " + (i + 1));
200 BufferedReader br =
new BufferedReader(
new InputStreamReader(
new FileInputStream(LanguagesResource.class.getClassLoader().getResource(
"languages.json").getFile()),
"UTF8"));
202 StringBuilder response =
new StringBuilder();
203 while ((inputLine = br.readLine()) !=
null) {
204 response.append(inputLine);
207 JSONArray jsonArray = (JSONArray)
new JSONParser().parse(response.toString());
208 List<String> languagesAllowed =
new ArrayList();
209 for (Object obj : jsonArray) {
210 JSONObject lang = (JSONObject) obj;
211 languagesAllowed.add((String) lang.get(
"value"));
213 for (
int i = 0; i < csvLines.length; i++) {
214 String[] tokens = csvLines[i].split(
"[\t]");
215 String[] translations = tokens[2].split(
";");
216 List<String> languages =
new ArrayList();
217 for (
int j = 0; j < translations.length; j++) {
219 languages.add(translations[j]);
222 for (String lang : languages) {
223 if (!languagesAllowed.contains(lang)) {
224 errorArray.add(
"error: a language for a translation not allowed in line " + (i + 1));
231 for (
int i = 1; i < csvLines.length; i++) {
232 String[] tokens = csvLines[i].split(
"[\t]");
233 tokens[0] = tokens[0].replace(
"\"",
"'");
234 tokens[1] = tokens[1].replace(
"\"",
"'");
235 tokens[2] = tokens[2].replace(
"\"",
"'");
236 csvLines[i] = tokens[0] +
"\t" + tokens[1] +
"\t" + tokens[2] +
"\t" + tokens[3] +
"\r\n";
240 for (
int i = 1; i < csvLines.length; i++) {
241 ImportcsvResource.currentStep = ImportcsvResource.currentStep + 1;
242 ImportcsvResource.status = ((double) ImportcsvResource.currentStep / (
double) ImportcsvResource.maxSteps) * 100;
244 ImportcsvResource.action =
"check and import labels [line " + i +
"] (check)...";
246 ImportcsvResource.action =
"check and import labels [line " + i +
"] ...";
249 String[] tokens = csvLines[i].split(
"[\t]");
250 String labelID = CSV.createLabelTriples(tokens,
creator);
251 if (!labelID.equals(
"")) {
255 errorArray.add(
"error: " + e.toString());
262 ImportcsvResource.action =
"create RDF file...";
263 PrintWriter pw =
new PrintWriter(ImportcsvResource.SERVER_UPLOAD_LOCATION_FOLDER + ImportcsvResource.FILENAME,
"UTF-8");
265 pw.println(TRIPLE_LIST_ITEM);
269 RDF4J_20.SPARQLupdate(ConfigProperties.getPropertyParam(
"repository"), ConfigProperties.getPropertyParam(
"ts_server"),
"LOAD <" + ImportcsvResource.FILELINK +
">");
272 errorArray.add(
"error: " + e.toString());
281 outputJSONobject.put(
"importedlabels", importedlabels);
282 outputJSONobject.put(
"triples",
TRIPLE_LIST.size());
284 outputJSONobject.put(
"errors", errors);
285 outputJSONobject.put(
"messages", errorArray);
287 System.out.println(ImportcsvResource.status);
289 ImportcsvResource.status = 100.0;
291 ImportcsvResource.action =
"done!";
292 String output = outputJSONobject.toString();
293 System.out.println(
"status: " + ImportcsvResource.status +
" errors: " + errors +
" triples: " +
TRIPLE_LIST.size());
294 System.out.println(output);