diff --git a/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_1_Checker.java b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_1_Checker.java new file mode 100644 index 0000000000000000000000000000000000000000..150207b38df0c19ed121fa2bcffdec10fbe71128 --- /dev/null +++ b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_1_Checker.java @@ -0,0 +1,77 @@ +/* + * Copyright 2024 ETSI + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package fr.mines_stetienne.ci.saref.checkers; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; +import fr.mines_stetienne.ci.saref.SAREFPipelineException; +import fr.mines_stetienne.ci.saref.managers.RepositoryManager; +import org.apache.commons.io.FileUtils; + +/** + * Checks TS 103 673 Clause 10.1: Reference ontology pattern documentation and specification. + * + */ +public class Clause_10_1_Checker extends AbstractClauseChecker { + private static final String FIRST_LINE = "This file describes the pattern files found in this directory."; + + private enum MESSAGE { + missing, ioexception, line + } + + public Clause_10_1_Checker(RepositoryManager repositoryManager) { + super(repositoryManager, Clause_10_1_Checker.class); + } + + @Override + public void checkClause() throws SAREFPipelineException { + File dir = new File(repository.getDirectory(), "patterns"); + if (!dir.isDirectory()) { + try { + String[] lines = {FIRST_LINE}; + CreateFileInDirectoryWithContents("patterns", "README.md", lines); + } catch (IOException ex) { + logError(getMessage(Clause_10_1_Checker.MESSAGE.ioexception)); + } + } + try { + File file = new File(dir, "vocabulary.ttl"); + if (!file.exists()) { + logError(getMessage(Clause_10_1_Checker.MESSAGE.missing)); + return; + } + List lines = FileUtils.readLines(file, StandardCharsets.UTF_8); + if (lines.isEmpty() || !lines.get(0).equals(FIRST_LINE)) { + logError(getMessage(Clause_10_1_Checker.MESSAGE.line)); + } + } catch (IOException ex) { + logError(getMessage(Clause_10_1_Checker.MESSAGE.ioexception), ex); + } +// These are optional files so do NOT verify the html text within the file!!! + } +} diff --git a/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_2_Checker.java b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_2_Checker.java new file mode 100644 index 0000000000000000000000000000000000000000..b253228ce097afcceaa757bfed3e3243ace7b668 --- /dev/null +++ b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_2_Checker.java @@ -0,0 +1,66 @@ +/* + * Copyright 2024 ETSI + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package fr.mines_stetienne.ci.saref.checkers; + +import java.io.File; +import java.io.IOException; + +import fr.mines_stetienne.ci.saref.SAREFPipelineException; +import fr.mines_stetienne.ci.saref.managers.RepositoryManager; + +/** + * Checks TS 103 673 Clause 10.2: Reference ontology pattern documentation and specification. + * + */ +public class Clause_10_2_Checker extends AbstractClauseChecker { + + private enum MESSAGE { + ioexception, one + } + + public Clause_10_2_Checker(RepositoryManager repositoryManager) { + super(repositoryManager, Clause_10_2_Checker.class); + } + + @Override + public void checkClause() throws SAREFPipelineException { + String patternDir = "patterns"; + File dir = new File(repository.getDirectory(), patternDir); + if (!dir.isDirectory()) { + if (dir.list().length < 1) { + log(getMessage(MESSAGE.one)); + //<<< logWarning(getMessage(Clause_10_2_Checker.MESSAGE.missing)); + } + try { + String[] lines = {}; // create empty file. + CreateFileInDirectoryWithContents(patternDir, "pattern.ttl", lines); + } catch (IOException ex) { + logError(getMessage(Clause_10_2_Checker.MESSAGE.ioexception)); + } + } +// Unable to verify pattern files. + } +} diff --git a/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_Checker.java b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_Checker.java new file mode 100644 index 0000000000000000000000000000000000000000..46ddaa208a22df528a20f63ec247bcdc56c53cda --- /dev/null +++ b/src/main/java/fr/mines_stetienne/ci/saref/checkers/Clause_10_Checker.java @@ -0,0 +1,55 @@ +/* + * Copyright 2024 ETSI + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package fr.mines_stetienne.ci.saref.checkers; + +import fr.mines_stetienne.ci.saref.SAREFPipelineException; +import fr.mines_stetienne.ci.saref.managers.RepositoryManager; + +/** + * Checks TS 103 673 Clause 10: Reference ontology pattern documentation and specification. + * + */ +public class Clause_10_Checker extends AbstractClauseChecker { + + private enum MESSAGE { + error + } + + public Clause_10_Checker(RepositoryManager repositoryManager) { + super(repositoryManager, Clause_10_Checker.class); + } + + @Override + public void checkClause() throws SAREFPipelineException { + try { + new Clause_10_1_Checker(repositoryManager).checkClause(); + new Clause_10_2_Checker(repositoryManager).checkClause(); + } catch (SAREFPipelineException ex) { + logError(getMessage(MESSAGE.error), ex); + } + } + +} diff --git a/src/main/resources/messages/Clause_10_1_Checker.properties b/src/main/resources/messages/Clause_10_1_Checker.properties new file mode 100644 index 0000000000000000000000000000000000000000..71211dd1b5eaf868e5946171c0a5c236abe52d53 --- /dev/null +++ b/src/main/resources/messages/Clause_10_1_Checker.properties @@ -0,0 +1,2 @@ +ioexception=Error while checking the `documentation` directory + diff --git a/src/main/resources/messages/Clause_10_2_Checker.properties b/src/main/resources/messages/Clause_10_2_Checker.properties new file mode 100644 index 0000000000000000000000000000000000000000..5d4e63a40d99e1f606a8fe82376bdc3754f87e54 --- /dev/null +++ b/src/main/resources/messages/Clause_10_2_Checker.properties @@ -0,0 +1,3 @@ +one=The `documentation/diagrams` directory of the SAREF project version should contain at least one diagram file (such as aa *.drawio or *.png file) to illustrate how the ontology components are related to each other. +ioexception=Error while checking the `documentation` directory + diff --git a/src/main/resources/messages/Clause_10_Checker.properties b/src/main/resources/messages/Clause_10_Checker.properties new file mode 100644 index 0000000000000000000000000000000000000000..b97f6b309f0c4dc255a43c95340e5abf1fc97c86 --- /dev/null +++ b/src/main/resources/messages/Clause_10_Checker.properties @@ -0,0 +1 @@ +error=Clause 10 cannot be checked due to some error