From c0b5a3bc966f263f7063c87702b54461b70124af Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sat, 1 Aug 2020 08:26:03 +0200 Subject: [PATCH] [DEV] basic logger ==> can not change level & no test --- .checkstyle | 7 + .classpath | 25 ++ .gitignore | 12 + .gitlab-ci.yml | 17 ++ .project | 24 ++ CheckStyle.xml | 66 +++++ CleanUp.xml | 66 +++++ Formatter.xml | 366 +++++++++++++++++++++++++ LICENSE | 373 ++++++++++++++++++++++++++ src/io/scenarium/logger/LogLevel.java | 15 ++ src/io/scenarium/logger/Logger.java | 59 ++++ src/module-info.java | 5 + test/.gitignore | 1 + test/lib/junit-toolbox-2.4.jar | Bin 0 -> 41489 bytes test/src/test/scenarium/logger/.keep | 0 15 files changed, 1036 insertions(+) create mode 100644 .checkstyle create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .project create mode 100755 CheckStyle.xml create mode 100644 CleanUp.xml create mode 100644 Formatter.xml create mode 100644 LICENSE create mode 100644 src/io/scenarium/logger/LogLevel.java create mode 100644 src/io/scenarium/logger/Logger.java create mode 100644 src/module-info.java create mode 100644 test/.gitignore create mode 100644 test/lib/junit-toolbox-2.4.jar create mode 100644 test/src/test/scenarium/logger/.keep diff --git a/.checkstyle b/.checkstyle new file mode 100644 index 0000000..af965e0 --- /dev/null +++ b/.checkstyle @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..440d9bb --- /dev/null +++ b/.classpath @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..10d944a --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +/bin/ +/Operator/ +/DrawerProperties/ +*.pdfd +*.dbc +SchedulerConfig.txt +scenicView.properties +ScenariumConfig.txt +*.class +*~ +*.bck + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..60bf636 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,17 @@ +image: bellsoft/liberica-openjdk-alpine:latest + +before_script: + - apk update && apk add apache-ant unzip wget openssh-client git + - git submodule sync --recursive + - git submodule update --init --recursive + +stages: + - style + +ci_style: + stage: style + script: + - export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 + - wget https://github.com/checkstyle/checkstyle/releases/download/checkstyle-8.34/checkstyle-8.34-all.jar -O checkstyle.jar + - java -jar checkstyle.jar -c CheckStyle.xml `find src/ -name "*.java"` + - java -jar checkstyle.jar -c CheckStyle.xml `find test/src/ -name "*.java"` diff --git a/.project b/.project new file mode 100644 index 0000000..4e0d656 --- /dev/null +++ b/.project @@ -0,0 +1,24 @@ + + + scenarium-logger + + + scenarium-logger + + + + org.eclipse.jdt.core.javabuilder + + + + + net.sf.eclipsecs.core.CheckstyleBuilder + + + + + + org.eclipse.jdt.core.javanature + net.sf.eclipsecs.core.CheckstyleNature + + diff --git a/CheckStyle.xml b/CheckStyle.xml new file mode 100755 index 0000000..d68aedd --- /dev/null +++ b/CheckStyle.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CleanUp.xml b/CleanUp.xml new file mode 100644 index 0000000..9df98d2 --- /dev/null +++ b/CleanUp.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Formatter.xml b/Formatter.xml new file mode 100644 index 0000000..b775e22 --- /dev/null +++ b/Formatter.xml @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/src/io/scenarium/logger/LogLevel.java b/src/io/scenarium/logger/LogLevel.java new file mode 100644 index 0000000..4d3ad19 --- /dev/null +++ b/src/io/scenarium/logger/LogLevel.java @@ -0,0 +1,15 @@ +package io.scenarium.logger; + +public enum LogLevel { + PRINT(-2), TODO(-1), CRITICAL(0), ERROR(1), WARNING(2), INFO(3), DEBUG(4), VERBOSE(5); + + public final int value; + + LogLevel(int value) { + this.value = value; + } + + public boolean isLessEqual(LogLevel other) { + return this.value <= other.value; + } +} diff --git a/src/io/scenarium/logger/Logger.java b/src/io/scenarium/logger/Logger.java new file mode 100644 index 0000000..2957e38 --- /dev/null +++ b/src/io/scenarium/logger/Logger.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + * + * Contributors: + * Revilloud Marc - initial API and implementation + ******************************************************************************/ +package io.scenarium.logger; + +import java.util.HashMap; + +public class Logger { + private static HashMap logLevels = new HashMap<>(); + + private Logger() {} + + /** This function permit to get the printable string to print in the log element (select here the number of char to print) + * @param libName Name of the library + * @return string to set in the logger information */ + public static String getDrawableName(String libName) { + return libName; + } + + public static boolean getNeedPrint(String libName, LogLevel level) { + LogLevel reference = logLevels.get(libName); + if (reference == null) + return level.isLessEqual(LogLevel.ERROR); + return level.isLessEqual(reference); + } + + public static void critical(String libName, String data) { + System.out.println("[C] " + libName + " | " + data); + } + + public static void error(String libName, String data) { + System.out.println("[E] " + libName + " | " + data); + } + + public static void warning(String libName, String data) { + System.out.println("[W] " + libName + " | " + data); + } + + public static void info(String libName, String data) { + System.out.println("[I] " + libName + " | " + data); + } + + public static void debug(String libName, String data) { + System.out.println("[D] " + libName + " | " + data); + } + + public static void verbose(String libName, String data) { + System.out.println("[V] " + libName + " | " + data); + } + + public static void todo(String libName, String data) { + System.out.println("[TODO] " + libName + " | " + data); + } +} diff --git a/src/module-info.java b/src/module-info.java new file mode 100644 index 0000000..460751c --- /dev/null +++ b/src/module-info.java @@ -0,0 +1,5 @@ +open module io.scenarium.logger { + + exports io.scenarium.logger; + +} diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/test/lib/junit-toolbox-2.4.jar b/test/lib/junit-toolbox-2.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..9550fe5f74f87a8f815aa11d0732c20c4928b077 GIT binary patch literal 41489 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 LQ)T+-jsN}!