Loading pom.xml +24 −0 Original line number Original line Diff line number Diff line Loading @@ -176,6 +176,30 @@ <version>11</version> <version>11</version> </dependency> </dependency> <dependency> <groupId>org.apache.any23</groupId> <artifactId>apache-any23-core</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.openrdf.sesame</groupId> <artifactId>sesame-rio-api</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.2.2</version> </dependency> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>4.1</version> </dependency> </dependencies> </dependencies> <build> <build> Loading src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_3_Checker.java +15 −0 Original line number Original line Diff line number Diff line Loading @@ -32,8 +32,11 @@ import java.nio.file.Path; import java.util.Optional; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.commons.io.FileUtils; import fr.emse.gitlab.saref.SAREF; import fr.emse.gitlab.saref.SAREF; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.managers.GenerateRDFaManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; /** /** Loading Loading @@ -61,6 +64,7 @@ public class Clause_9_3_Checker extends AbstractClauseChecker { try { try { checkExists(dir.toPath()); checkExists(dir.toPath()); checkFirstLine(dir.toPath()); checkFirstLine(dir.toPath()); requirementsRDFaGenerator(); } catch (IOException ex) { } catch (IOException ex) { logError(getMessage(MESSAGE.ioexception), ex); logError(getMessage(MESSAGE.ioexception), ex); } } Loading Loading @@ -117,4 +121,15 @@ public class Clause_9_3_Checker extends AbstractClauseChecker { }); }); } } private void requirementsRDFaGenerator() throws SAREFPipelineException, IOException{ String categoryChanger = ""; String repoName = project.getName(); String href = project.getNamespace(); File reqCSV = new File(repository.getDirectory(), "/requirements/requirements.csv"); File versionSite = new File(siteManager.siteDir, version.getVersionPath()); FileUtils.forceMkdir(versionSite); File reqHTML = new File(versionSite, "requirements.html"); GenerateRDFaManager.GenerateRDFa(categoryChanger, repoName, href, reqCSV, reqHTML, "requirements"); } } } src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_4_5_Checker.java +84 −5 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,14 @@ */ */ package fr.emse.gitlab.saref.checkers; package fr.emse.gitlab.saref.checkers; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.jena.rdf.model.Model; import org.semanticweb.owl.explanation.api.Explanation; import org.semanticweb.owl.explanation.api.Explanation; import org.semanticweb.owl.explanation.api.ExplanationGenerator; import org.semanticweb.owl.explanation.api.ExplanationGenerator; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLAxiom; Loading @@ -37,7 +42,13 @@ import org.semanticweb.owlapi.profiles.OWLProfileReport; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.managers.OntologyManager; import fr.emse.gitlab.saref.managers.OntologyManager; import fr.emse.gitlab.saref.managers.OopsManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** /** * Checks TS 103 673 Clause 9.4.5: OWL Profile, Consistency, and Satisfiability * Checks TS 103 673 Clause 9.4.5: OWL Profile, Consistency, and Satisfiability Loading @@ -47,7 +58,7 @@ import fr.emse.gitlab.saref.managers.RepositoryManager; public class Clause_9_4_5_Checker extends AbstractClauseChecker { public class Clause_9_4_5_Checker extends AbstractClauseChecker { private static enum MESSAGE { private static enum MESSAGE { profile, consistent, satisfiable; profile, consistent, satisfiable, oops, oopsError; } } /** /** Loading Loading @@ -92,6 +103,74 @@ public class Clause_9_4_5_Checker extends AbstractClauseChecker { } } }); }); } } checkOops(); } public void checkOops() throws SAREFPipelineException { ByteArrayOutputStream out = new ByteArrayOutputStream(); String onto = ""; Model model = version.getModel(); model.write(out, "RDF/XML"); // write in string and then replace onto = out.toString().replaceAll("]]", "] ]"); String xmlRequest = "<?xml version='1.0' encoding='UTF-8'?>" + "<OOPSRequest>" + "<OntologyURI></OntologyURI>" + "<OntologyContent><![CDATA[" + onto + "]]></OntologyContent>" + "<Pitfalls>10</Pitfalls>" + "<OutputFormat>RDF/XML</OutputFormat>" + "</OOPSRequest>"; Object[] arrayData = new Object[0]; try { OkHttpClient httpClient = new OkHttpClient().newBuilder().build(); MediaType mediaType = MediaType.parse("application/xml"); RequestBody body = RequestBody.create(xmlRequest, mediaType); Request request = new Request.Builder().url("http://oops.linkeddata.es/rest").method("POST", body) .addHeader("Content-Type", "application/xml").build(); Response response = httpClient.newCall(request).execute(); String result = response.body().string(); String[] results = result.split("\\n"); List<String> pureData = new ArrayList<String>(); for (int i = 0; i < results.length; i++) { if (results[i].startsWith("<")) { for (int j = i; j < results.length; j++) { pureData.add(results[j]); } } } arrayData = pureData.toArray(); // response into array } catch (IOException e) { logWarning(getMessage(MESSAGE.oopsError)); } int count = OopsManager.counter(arrayData); ArrayList<ArrayList<String>> result = OopsManager.getData(arrayData); int s = 0; ArrayList<String> results = new ArrayList<String>(); while (s < count) { String data = result.get(0).get(s) + result.get(1).get(s) + result.get(2).get(s); results.add(data); s++; } String printData = results.stream().map(e -> e.toString()) .collect(Collectors.joining("\n- ", "\n\n- ", "\n\n")); if (count != 0) { logWarning(getMessage(MESSAGE.oops, printData)); } } } } } src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_5_Checker.java +127 −5 Original line number Original line Diff line number Diff line Loading @@ -25,17 +25,42 @@ */ */ package fr.emse.gitlab.saref.checkers; package fr.emse.gitlab.saref.checkers; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.File; import java.io.IOException; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Path; import java.nio.file.PathMatcher; import java.nio.file.PathMatcher; import java.util.ArrayList; import java.util.Optional; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.any23.Any23; import org.apache.any23.extractor.ExtractionException; import org.apache.any23.source.DocumentSource; import org.apache.any23.source.FileDocumentSource; import org.apache.any23.writer.RDFXMLWriter; import org.apache.any23.writer.TripleHandler; import org.apache.any23.writer.TripleHandlerException; import org.apache.commons.io.FileUtils; import org.apache.jena.rdf.model.Model; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.entities.SAREFRepository; import fr.emse.gitlab.saref.entities.SAREFVersion; import fr.emse.gitlab.saref.managers.DatasetManager; import fr.emse.gitlab.saref.managers.GenerateRDFaManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.ThemisManager; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** /** * Checks TS 103 673 Clause 9.5: Ontology tests * Checks TS 103 673 Clause 9.5: Ontology tests Loading @@ -47,7 +72,7 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { private static final String FIRST_LINE = "Id;Requirement;Category;Test"; private static final String FIRST_LINE = "Id;Requirement;Category;Test"; private static enum MESSAGE { private static enum MESSAGE { directories, csv, missing, ioexception, line; directories, csv, missing, ioexception, line, themis, themisError; } } /** /** Loading @@ -67,6 +92,8 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { try { try { checkExists(dir.toPath()); checkExists(dir.toPath()); checkFirstLine(dir.toPath()); checkFirstLine(dir.toPath()); testsRDFaGenerator(); checkThemis(); } catch (IOException ex) { } catch (IOException ex) { logError(getMessage(MESSAGE.ioexception)); logError(getMessage(MESSAGE.ioexception)); } } Loading Loading @@ -123,4 +150,99 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { }); }); } } public void checkThemis() throws SAREFPipelineException { File versionSite = new File(siteManager.siteDir, version.getVersionPath()); File tHTML = new File(versionSite, "tests.html"); DocumentSource source = new FileDocumentSource(tHTML); Any23 runner = new Any23(); try(ByteArrayOutputStream out = new ByteArrayOutputStream(); TripleHandler handler = new RDFXMLWriter(out);) { runner.extract(source, handler); String xmlData = out.toString(); ArrayList<String[]> res = makeCall(xmlData, repository, datasetManager, version); ArrayList<String> result = new ArrayList<String>(); for (int i = 0; i < res.size(); i++) { String response = res.get(i)[0] + ", " + res.get(i)[1] + ", " + res.get(i)[2]; result.add(response); } if (!res.isEmpty()) { String data = result.stream().map(e -> e.toString()).collect(Collectors.joining("\n- ", "\n\n- ", "\n\n")); logWarning(getMessage(MESSAGE.themis, data)); } } catch (ExtractionException | IOException | TripleHandlerException e) { logWarning(getMessage(MESSAGE.themisError)); } } public ArrayList<String[]> makeCall(String xmlData, SAREFRepository repository, DatasetManager datasetManager, SAREFVersion version) throws SAREFPipelineException { ArrayList<String[]> res = new ArrayList<String[]>(); try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { String onto = ""; Model model = version.getModel(); model.write(out, "RDF/XML"); onto = out.toString(); OkHttpClient httpClient = new OkHttpClient().newBuilder().build(); MediaType mediaType = MediaType.parse("application/json"); String jsonRequest = "{\"ontologiesCode\":[\"" + onto.replaceAll("\\\"", "\\\\\"").replaceAll("\"", "\\\"").replaceAll("\t", " ") + "\"]," + "\"testfile\":[\"" + xmlData.replaceAll("\\\"", "\\\\\"").replaceAll("\"", "\\\"").replaceAll("\t", " ") + "\"]," + "\"format\":\"junit\"}"; RequestBody body = RequestBody.create(jsonRequest, mediaType); Request request = new Request.Builder().url("http://themis.linkeddata.es/rest/api/results") .method("POST", body).addHeader("accept", "application/json") .addHeader("Content-Type", "application/json").build(); Response response = httpClient.newCall(request).execute(); String result = response.body().string(); Document doc = ThemisManager.convertStringToXMLDocument(result); NodeList nodeList = doc.getElementsByTagName("testcase"); for (int temp = 0; temp < nodeList.getLength(); temp++) { org.w3c.dom.Node node = nodeList.item(temp); String[] part = new String[3]; if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { Element element = (Element) node; part[0] = "" + element.getAttributeNode("id"); part[1] = "" + element.getAttributeNode("name"); part[2] = "" + ((Element) node).getElementsByTagName("error").item(0).getAttributes() .getNamedItem("message"); res.add(part); } } } catch (IOException e) { logWarning(getMessage(MESSAGE.themisError)); } return res; } private void testsRDFaGenerator() throws SAREFPipelineException, IOException { if(pipeline.ignoreSite) { return; } String categoryChanger = ""; String repoName = project.getName(); String href = project.getNamespace(); File testCSV = new File(repository.getDirectory(), "/tests/tests.csv"); File versionSite = new File(siteManager.siteDir, version.getVersionPath()); FileUtils.forceMkdir(versionSite); File testHTML = new File(versionSite, "tests.html"); GenerateRDFaManager.GenerateRDFa(categoryChanger, repoName, href, testCSV, testHTML, "tests"); } } } src/main/java/fr/emse/gitlab/saref/entities/SAREFNamedGraph.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class SAREFNamedGraph { return false; return false; if (getClass() != obj.getClass()) if (getClass() != obj.getClass()) return false; return false; SAREFTerm other = (SAREFTerm) obj; SAREFNamedGraph other = (SAREFNamedGraph) obj; if (iri == null) { if (iri == null) { if (other.iri != null) if (other.iri != null) return false; return false; Loading Loading
pom.xml +24 −0 Original line number Original line Diff line number Diff line Loading @@ -176,6 +176,30 @@ <version>11</version> <version>11</version> </dependency> </dependency> <dependency> <groupId>org.apache.any23</groupId> <artifactId>apache-any23-core</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.openrdf.sesame</groupId> <artifactId>sesame-rio-api</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.2.2</version> </dependency> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>4.1</version> </dependency> </dependencies> </dependencies> <build> <build> Loading
src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_3_Checker.java +15 −0 Original line number Original line Diff line number Diff line Loading @@ -32,8 +32,11 @@ import java.nio.file.Path; import java.util.Optional; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.commons.io.FileUtils; import fr.emse.gitlab.saref.SAREF; import fr.emse.gitlab.saref.SAREF; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.managers.GenerateRDFaManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; /** /** Loading Loading @@ -61,6 +64,7 @@ public class Clause_9_3_Checker extends AbstractClauseChecker { try { try { checkExists(dir.toPath()); checkExists(dir.toPath()); checkFirstLine(dir.toPath()); checkFirstLine(dir.toPath()); requirementsRDFaGenerator(); } catch (IOException ex) { } catch (IOException ex) { logError(getMessage(MESSAGE.ioexception), ex); logError(getMessage(MESSAGE.ioexception), ex); } } Loading Loading @@ -117,4 +121,15 @@ public class Clause_9_3_Checker extends AbstractClauseChecker { }); }); } } private void requirementsRDFaGenerator() throws SAREFPipelineException, IOException{ String categoryChanger = ""; String repoName = project.getName(); String href = project.getNamespace(); File reqCSV = new File(repository.getDirectory(), "/requirements/requirements.csv"); File versionSite = new File(siteManager.siteDir, version.getVersionPath()); FileUtils.forceMkdir(versionSite); File reqHTML = new File(versionSite, "requirements.html"); GenerateRDFaManager.GenerateRDFa(categoryChanger, repoName, href, reqCSV, reqHTML, "requirements"); } } }
src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_4_5_Checker.java +84 −5 Original line number Original line Diff line number Diff line Loading @@ -25,9 +25,14 @@ */ */ package fr.emse.gitlab.saref.checkers; package fr.emse.gitlab.saref.checkers; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.jena.rdf.model.Model; import org.semanticweb.owl.explanation.api.Explanation; import org.semanticweb.owl.explanation.api.Explanation; import org.semanticweb.owl.explanation.api.ExplanationGenerator; import org.semanticweb.owl.explanation.api.ExplanationGenerator; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLAxiom; Loading @@ -37,7 +42,13 @@ import org.semanticweb.owlapi.profiles.OWLProfileReport; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.managers.OntologyManager; import fr.emse.gitlab.saref.managers.OntologyManager; import fr.emse.gitlab.saref.managers.OopsManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** /** * Checks TS 103 673 Clause 9.4.5: OWL Profile, Consistency, and Satisfiability * Checks TS 103 673 Clause 9.4.5: OWL Profile, Consistency, and Satisfiability Loading @@ -47,7 +58,7 @@ import fr.emse.gitlab.saref.managers.RepositoryManager; public class Clause_9_4_5_Checker extends AbstractClauseChecker { public class Clause_9_4_5_Checker extends AbstractClauseChecker { private static enum MESSAGE { private static enum MESSAGE { profile, consistent, satisfiable; profile, consistent, satisfiable, oops, oopsError; } } /** /** Loading Loading @@ -92,6 +103,74 @@ public class Clause_9_4_5_Checker extends AbstractClauseChecker { } } }); }); } } checkOops(); } public void checkOops() throws SAREFPipelineException { ByteArrayOutputStream out = new ByteArrayOutputStream(); String onto = ""; Model model = version.getModel(); model.write(out, "RDF/XML"); // write in string and then replace onto = out.toString().replaceAll("]]", "] ]"); String xmlRequest = "<?xml version='1.0' encoding='UTF-8'?>" + "<OOPSRequest>" + "<OntologyURI></OntologyURI>" + "<OntologyContent><![CDATA[" + onto + "]]></OntologyContent>" + "<Pitfalls>10</Pitfalls>" + "<OutputFormat>RDF/XML</OutputFormat>" + "</OOPSRequest>"; Object[] arrayData = new Object[0]; try { OkHttpClient httpClient = new OkHttpClient().newBuilder().build(); MediaType mediaType = MediaType.parse("application/xml"); RequestBody body = RequestBody.create(xmlRequest, mediaType); Request request = new Request.Builder().url("http://oops.linkeddata.es/rest").method("POST", body) .addHeader("Content-Type", "application/xml").build(); Response response = httpClient.newCall(request).execute(); String result = response.body().string(); String[] results = result.split("\\n"); List<String> pureData = new ArrayList<String>(); for (int i = 0; i < results.length; i++) { if (results[i].startsWith("<")) { for (int j = i; j < results.length; j++) { pureData.add(results[j]); } } } arrayData = pureData.toArray(); // response into array } catch (IOException e) { logWarning(getMessage(MESSAGE.oopsError)); } int count = OopsManager.counter(arrayData); ArrayList<ArrayList<String>> result = OopsManager.getData(arrayData); int s = 0; ArrayList<String> results = new ArrayList<String>(); while (s < count) { String data = result.get(0).get(s) + result.get(1).get(s) + result.get(2).get(s); results.add(data); s++; } String printData = results.stream().map(e -> e.toString()) .collect(Collectors.joining("\n- ", "\n\n- ", "\n\n")); if (count != 0) { logWarning(getMessage(MESSAGE.oops, printData)); } } } } }
src/main/java/fr/emse/gitlab/saref/checkers/Clause_9_5_Checker.java +127 −5 Original line number Original line Diff line number Diff line Loading @@ -25,17 +25,42 @@ */ */ package fr.emse.gitlab.saref.checkers; package fr.emse.gitlab.saref.checkers; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.File; import java.io.IOException; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Path; import java.nio.file.PathMatcher; import java.nio.file.PathMatcher; import java.util.ArrayList; import java.util.Optional; import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Collectors; import org.apache.any23.Any23; import org.apache.any23.extractor.ExtractionException; import org.apache.any23.source.DocumentSource; import org.apache.any23.source.FileDocumentSource; import org.apache.any23.writer.RDFXMLWriter; import org.apache.any23.writer.TripleHandler; import org.apache.any23.writer.TripleHandlerException; import org.apache.commons.io.FileUtils; import org.apache.jena.rdf.model.Model; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.SAREFPipelineException; import fr.emse.gitlab.saref.entities.SAREFRepository; import fr.emse.gitlab.saref.entities.SAREFVersion; import fr.emse.gitlab.saref.managers.DatasetManager; import fr.emse.gitlab.saref.managers.GenerateRDFaManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.RepositoryManager; import fr.emse.gitlab.saref.managers.ThemisManager; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** /** * Checks TS 103 673 Clause 9.5: Ontology tests * Checks TS 103 673 Clause 9.5: Ontology tests Loading @@ -47,7 +72,7 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { private static final String FIRST_LINE = "Id;Requirement;Category;Test"; private static final String FIRST_LINE = "Id;Requirement;Category;Test"; private static enum MESSAGE { private static enum MESSAGE { directories, csv, missing, ioexception, line; directories, csv, missing, ioexception, line, themis, themisError; } } /** /** Loading @@ -67,6 +92,8 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { try { try { checkExists(dir.toPath()); checkExists(dir.toPath()); checkFirstLine(dir.toPath()); checkFirstLine(dir.toPath()); testsRDFaGenerator(); checkThemis(); } catch (IOException ex) { } catch (IOException ex) { logError(getMessage(MESSAGE.ioexception)); logError(getMessage(MESSAGE.ioexception)); } } Loading Loading @@ -123,4 +150,99 @@ public class Clause_9_5_Checker extends AbstractClauseChecker { }); }); } } public void checkThemis() throws SAREFPipelineException { File versionSite = new File(siteManager.siteDir, version.getVersionPath()); File tHTML = new File(versionSite, "tests.html"); DocumentSource source = new FileDocumentSource(tHTML); Any23 runner = new Any23(); try(ByteArrayOutputStream out = new ByteArrayOutputStream(); TripleHandler handler = new RDFXMLWriter(out);) { runner.extract(source, handler); String xmlData = out.toString(); ArrayList<String[]> res = makeCall(xmlData, repository, datasetManager, version); ArrayList<String> result = new ArrayList<String>(); for (int i = 0; i < res.size(); i++) { String response = res.get(i)[0] + ", " + res.get(i)[1] + ", " + res.get(i)[2]; result.add(response); } if (!res.isEmpty()) { String data = result.stream().map(e -> e.toString()).collect(Collectors.joining("\n- ", "\n\n- ", "\n\n")); logWarning(getMessage(MESSAGE.themis, data)); } } catch (ExtractionException | IOException | TripleHandlerException e) { logWarning(getMessage(MESSAGE.themisError)); } } public ArrayList<String[]> makeCall(String xmlData, SAREFRepository repository, DatasetManager datasetManager, SAREFVersion version) throws SAREFPipelineException { ArrayList<String[]> res = new ArrayList<String[]>(); try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { String onto = ""; Model model = version.getModel(); model.write(out, "RDF/XML"); onto = out.toString(); OkHttpClient httpClient = new OkHttpClient().newBuilder().build(); MediaType mediaType = MediaType.parse("application/json"); String jsonRequest = "{\"ontologiesCode\":[\"" + onto.replaceAll("\\\"", "\\\\\"").replaceAll("\"", "\\\"").replaceAll("\t", " ") + "\"]," + "\"testfile\":[\"" + xmlData.replaceAll("\\\"", "\\\\\"").replaceAll("\"", "\\\"").replaceAll("\t", " ") + "\"]," + "\"format\":\"junit\"}"; RequestBody body = RequestBody.create(jsonRequest, mediaType); Request request = new Request.Builder().url("http://themis.linkeddata.es/rest/api/results") .method("POST", body).addHeader("accept", "application/json") .addHeader("Content-Type", "application/json").build(); Response response = httpClient.newCall(request).execute(); String result = response.body().string(); Document doc = ThemisManager.convertStringToXMLDocument(result); NodeList nodeList = doc.getElementsByTagName("testcase"); for (int temp = 0; temp < nodeList.getLength(); temp++) { org.w3c.dom.Node node = nodeList.item(temp); String[] part = new String[3]; if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) { Element element = (Element) node; part[0] = "" + element.getAttributeNode("id"); part[1] = "" + element.getAttributeNode("name"); part[2] = "" + ((Element) node).getElementsByTagName("error").item(0).getAttributes() .getNamedItem("message"); res.add(part); } } } catch (IOException e) { logWarning(getMessage(MESSAGE.themisError)); } return res; } private void testsRDFaGenerator() throws SAREFPipelineException, IOException { if(pipeline.ignoreSite) { return; } String categoryChanger = ""; String repoName = project.getName(); String href = project.getNamespace(); File testCSV = new File(repository.getDirectory(), "/tests/tests.csv"); File versionSite = new File(siteManager.siteDir, version.getVersionPath()); FileUtils.forceMkdir(versionSite); File testHTML = new File(versionSite, "tests.html"); GenerateRDFaManager.GenerateRDFa(categoryChanger, repoName, href, testCSV, testHTML, "tests"); } } }
src/main/java/fr/emse/gitlab/saref/entities/SAREFNamedGraph.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -45,7 +45,7 @@ public class SAREFNamedGraph { return false; return false; if (getClass() != obj.getClass()) if (getClass() != obj.getClass()) return false; return false; SAREFTerm other = (SAREFTerm) obj; SAREFNamedGraph other = (SAREFNamedGraph) obj; if (iri == null) { if (iri == null) { if (other.iri != null) if (other.iri != null) return false; return false; Loading