]> git.mxchange.org Git - jjobs-war.git/commitdiff
Please cherry-pick:
authorRoland Häder <roland@mxchange.org>
Tue, 20 Mar 2018 23:49:37 +0000 (00:49 +0100)
committerRoland Häder <roland@mxchange.org>
Sun, 21 Jul 2019 05:56:06 +0000 (07:56 +0200)
- added ServletContextListener implementation for (later) pre-initialize JS107
  cache before any page is served
- added validators for basic company data, headquarter data and branch office's
  email addresses
- rewrote converters which have allowEmptyValue flag to handle it correctly
  (need that validators.jsf.taglib.xml for this to work)
- renamed company name validator as this is for basic company data ... ;-)
- updated/changed copyright year to Free Software Foundation

Signed-off-by: Roland Häder <roland@mxchange.org>
34 files changed:
src/java/org/mxchange/jjobs/converter/business/basicdata/JobsBusinessContactConverter.java
src/java/org/mxchange/jjobs/converter/business/branchoffice/JobsBranchOfficeConverter.java
src/java/org/mxchange/jjobs/converter/business/department/JobsCompanyDepartmentConverter.java
src/java/org/mxchange/jjobs/converter/business/employee/JobsEmployeeConverter.java
src/java/org/mxchange/jjobs/converter/business/headquarter/JobsHeadquarterConverter.java
src/java/org/mxchange/jjobs/converter/business/opening_time/JobsCompanyOpeningTimeConverter.java
src/java/org/mxchange/jjobs/converter/contact/JobsContactConverter.java
src/java/org/mxchange/jjobs/converter/country/JobsCountryConverter.java
src/java/org/mxchange/jjobs/converter/dayofweek/JobsDayOfTheWeekConverter.java
src/java/org/mxchange/jjobs/converter/fax/JobsFaxNumberConverter.java
src/java/org/mxchange/jjobs/converter/landline/JobsLandLineNumberConverter.java
src/java/org/mxchange/jjobs/converter/mobile/JobsMobileNumberConverter.java
src/java/org/mxchange/jjobs/converter/mobileprovider/JobsMobileProviderConverter.java
src/java/org/mxchange/jjobs/converter/personal_title/JobsPersonalTitleConverter.java
src/java/org/mxchange/jjobs/converter/profile_mode/JobsProfileModeConverter.java
src/java/org/mxchange/jjobs/converter/user/JobsUserConverter.java
src/java/org/mxchange/jjobs/converter/user_account_status/JobsUserAccountStatusConverter.java
src/java/org/mxchange/jjobs/listener/JobsWebApplicationListener.java [new file with mode: 0644]
src/java/org/mxchange/jjobs/validator/birthday/JobsBirthdayValidator.java
src/java/org/mxchange/jjobs/validator/business/basicdata/JobsBasicDataCompanyNameValidator.java [new file with mode: 0644]
src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java [deleted file]
src/java/org/mxchange/jjobs/validator/business/headquarter/JobsHeadquarterCompanyNameValidator.java [new file with mode: 0644]
src/java/org/mxchange/jjobs/validator/emailaddress/JobsEmailAddressValidator.java
src/java/org/mxchange/jjobs/validator/emailaddress/basicdata/JobsBasicDataEmailAddressValidator.java
src/java/org/mxchange/jjobs/validator/emailaddress/branchoffice/JobsBranchOfficeEmailAddressValidator.java
src/java/org/mxchange/jjobs/validator/emailaddress/employee/JobsEmployeeEmailAddressValidator.java [new file with mode: 0644]
src/java/org/mxchange/jjobs/validator/emailaddress/headquarter/JobsHeadquarterEmailAddressValidator.java
src/java/org/mxchange/jjobs/validator/names/JobsNameValidator.java
src/java/org/mxchange/jjobs/validator/password/JobsUserPasswordValidator.java
src/java/org/mxchange/jjobs/validator/phone/abroad/JobsAbroadDialValidator.java
src/java/org/mxchange/jjobs/validator/phone/number/JobsPhoneNumberValidator.java
src/java/org/mxchange/jjobs/validator/privacy_terms/JobsPrivacyTermsCheckboxValidator.java
src/java/org/mxchange/jjobs/validator/url/JobsUrlValidator.java
src/java/org/mxchange/jjobs/validator/user/JobsUserIdValidator.java

index 4f41c2b4339e72ef5b753cde983b601b0d21ae05..a35c4594ce3c8c7ba4b4e1191055acecac963660 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 6d72217f66186913b9a7c9d9dfae77ad7b6956b8..9f216c71dcceb4c696a39d0a45931397ca226c91 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index b480e600261b969af7455adb138cec17200a55c8..60bc536b49b409260d3c34414319cf8d4daec280 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 646af467eac270db10e2ec728ef50dd1d1ce6d49..5df4a7ba6c594a90ede922dc426293256a5f61d5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 0ee2ea4c6bb62122d686ef2bac5e882fc1a9d031..0f35d756a0bea7e45596c6be5e72b4bd5f25b73a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 1d88fc8318ebf2529426dbc51bb365674eed5421..dc9c6c0af69d5c7b60af4fc06e75481fdfd62f39 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index b57562bfeb9d33fa334f378b36b38bc54462e069..562d623b5b70f66d433bccebc52f6e408f5340e1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index bf0f546170d9b9ee9e78b0ab4acb32453e665316..fd5d83aeedb2ff66e64248caaa4d5eeae3df0621 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 7a85b105e67ae21fddd766f65819758f4d07fa6d..eedf3b6a519a371cf5ad15393c34564e7a0d4dea 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -33,6 +33,7 @@ public class JobsDayOfTheWeekConverter extends EnumConverter {
         * enumeration as class type.
         */
        public JobsDayOfTheWeekConverter () {
+               // Call other constructor with class type
                super(DayOfTheWeek.class);
        }
 
index c97b4542c921eeba6d77996cd9597d5443bc5f0c..23090a38482a6ba4359ba678eebbf4eb4956671f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index c18992f40b5ca3db35e4e42d39a793bab1513430..6f90c0409c750e24e0669e4148160e5ca962e9d2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index b35e80d437c47a1423e36f1b577fed4087057896..d68cc0a42245b7dcb146a70e73951c0ed87cc4dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 8f60aecb622a04725279327dca788bd82bd32e53..d0248e45410c9b700cb18ebaef2f6372a777af87 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 00cdc6955b69d16d8800987850a6d25ce9d085f3..4447884f342f779de5894792fae8af9b9b9ca9f8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 3e9d4150e020f425e1eb2d0ffe796e31b0454d67..11e6cbf5790ea42a5cd9db889ed189acee0d7f8b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 579faef24a9d4b9e64e410d1d59a7fbeeea2e1c7..97c06c48a2214286c080ef49fc274f9362f0abdd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 371aa53b4ec4420219fb57f3cac36cceba181c26..0dc948967d43500fc45cae4fc3bec48b24623d54 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Roland Häder
+ * Copyright (C) 2017, 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
diff --git a/src/java/org/mxchange/jjobs/listener/JobsWebApplicationListener.java b/src/java/org/mxchange/jjobs/listener/JobsWebApplicationListener.java
new file mode 100644 (file)
index 0000000..fc866ea
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2017, 2018 Free Software Foundation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.listener;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+import javax.servlet.annotation.WebListener;
+import org.mxchange.jcoreee.bean.faces.BaseFacesBean;
+
+/**
+ * A web-application listener for de-/initialization stuff
+ * <p>
+ * @author Roland Haeder<roland@mxchange.org>
+ */
+@WebListener
+public class JobsWebApplicationListener implements ServletContextListener {
+
+       @Override
+       public void contextDestroyed (final ServletContextEvent sce) {
+               // Remove all bundles
+               BaseFacesBean.removeBundles();
+       }
+
+       @Override
+       public void contextInitialized (final ServletContextEvent sce) {
+       }
+
+}
index d50c1ddd198a584957693897600fcb300f232b60..bb5fd332217a2709a532d00ffb03ef853a6b948c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff --git a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsBasicDataCompanyNameValidator.java b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsBasicDataCompanyNameValidator.java
new file mode 100644 (file)
index 0000000..c4c7ced
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017, 2018 Free Software Foundation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.validator.business.basicdata;
+
+import java.text.MessageFormat;
+import javax.enterprise.inject.spi.CDI;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.ValidatorException;
+import org.mxchange.jcoreee.validator.string.BaseStringValidator;
+import org.mxchange.jjobs.beans.business.basicdata.JobsBasicDataWebRequestBean;
+import org.mxchange.jjobs.beans.business.basicdata.JobsBasicDataWebRequestController;
+
+/**
+ * A validator for basic data company names
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@FacesValidator (value = "BasicDataCompanyNameValidator")
+public class JobsBasicDataCompanyNameValidator extends BaseStringValidator {
+
+       /**
+        * Business basic data backing bean
+        */
+       private static JobsBasicDataWebRequestController BASIC_DATA_CONTROLLER;
+
+       /**
+        * Serial number
+        */
+       private static final long serialVersionUID = 57_283_657_476_561L;
+
+       @Override
+       public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+               // Is the instance there?
+               if (null == BASIC_DATA_CONTROLLER) {
+                       // Get bean from CDI directly
+                       BASIC_DATA_CONTROLLER = CDI.current().select(JobsBasicDataWebRequestBean.class).get();
+               }
+
+               // All accepted, required fields
+               final String[] requiredFields = {"companyName"}; //NOI18N
+
+               // Pre-validation (example: not null, not a string, empty string ...)
+               super.preValidate(context, component, value, requiredFields, false);
+
+               // Convert name to string (now securely checked in BaseStringValidator)
+               final String companyName = (String) value;
+
+               // Default is to check on existing names
+               Boolean checkExisting = Boolean.TRUE;
+
+               // Is attribute "allowEmptyRequiredData" set?
+               if (component.getAttributes().containsKey("checkExisting")) { //NOI18N
+                       // Get attribute
+                       final Object attribute = component.getAttributes().get("checkExisting"); //NOI18N
+
+                       // Make sure, it is Boolean as no String is accepted anymore
+                       if (!(attribute instanceof String)) {
+                               // Not valid attribute, please use "true" or "false" (default)
+                               throw new IllegalArgumentException("checkExisting must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
+                       }
+
+                       // Securely cast it
+                       checkExisting = Boolean.parseBoolean((String) attribute);
+               }
+
+               // Check if name is already used
+               final Boolean nameExists = BASIC_DATA_CONTROLLER.isCompanyNameUsed(companyName);
+
+               // Is the user id valid?
+               if ((!nameExists) && (checkExisting)) {
+                       // Format message
+                       final String message = MessageFormat.format("No basic data found with comany name {0}.", companyName);
+
+                       // Name does not exist
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
+               } else if ((nameExists) && (!checkExisting)) {
+                       // Format message
+                       final String message = MessageFormat.format("Found basic data with comany name {0}.", companyName);
+
+                       // Name already exists
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
+               }
+       }
+
+}
diff --git a/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java b/src/java/org/mxchange/jjobs/validator/business/basicdata/JobsCompanyNameValidator.java
deleted file mode 100644 (file)
index 3cc67c6..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2017 Roland Häder
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-package org.mxchange.jjobs.validator.business.basicdata;
-
-import java.text.MessageFormat;
-import javax.enterprise.inject.spi.CDI;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.validator.FacesValidator;
-import javax.faces.validator.ValidatorException;
-import org.mxchange.jcoreee.validator.string.BaseStringValidator;
-import org.mxchange.jjobs.beans.business.basicdata.JobsBasicDataWebRequestBean;
-import org.mxchange.jjobs.beans.business.basicdata.JobsBasicDataWebRequestController;
-
-/**
- * A validator for company names
- * <p>
- * @author Roland Häder<roland@mxchange.org>
- */
-@FacesValidator ("CompanyNameValidator")
-public class JobsCompanyNameValidator extends BaseStringValidator {
-
-       /**
-        * Business basic data backing bean
-        */
-       private static JobsBasicDataWebRequestController BASIC_DATA_CONTROLLER;
-
-       /**
-        * Serial number
-        */
-       private static final long serialVersionUID = 57_283_657_476_561L;
-
-       @Override
-       public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
-               // Is the instance there?
-               if (null == BASIC_DATA_CONTROLLER) {
-                       // Get bean from CDI directly
-                       BASIC_DATA_CONTROLLER = CDI.current().select(JobsBasicDataWebRequestBean.class).get();
-               }
-
-               // All accepted, required fields
-               final String[] requiredFields = {"companyName"}; //NOI18N
-
-               // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, false);
-
-               // Convert name to string (now securely checked in BaseStringValidator)
-               final String companyName = (String) value;
-
-               // Default is to check on existing names
-               Boolean checkExisting = Boolean.TRUE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("checkExisting")) { //NOI18N
-                       // Get attribute
-                       final Object attribute = component.getAttributes().get("checkExisting"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("checkExisting must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       checkExisting = Boolean.parseBoolean((String) attribute);
-               }
-
-               // Check if name is already used
-               final Boolean nameExists = BASIC_DATA_CONTROLLER.isCompanyNameUsed(companyName);
-
-               // Is the user id valid?
-               if ((!nameExists) && (checkExisting)) {
-                       // Format message
-                       final String message = MessageFormat.format("No basic data found with comany name {0}.", companyName);
-
-                       // Name does not exist
-                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
-               } else if ((nameExists) && (!checkExisting)) {
-                       // Format message
-                       final String message = MessageFormat.format("Found basic data with comany name {0}.", companyName);
-
-                       // Name already exists
-                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
-               }
-       }
-
-}
diff --git a/src/java/org/mxchange/jjobs/validator/business/headquarter/JobsHeadquarterCompanyNameValidator.java b/src/java/org/mxchange/jjobs/validator/business/headquarter/JobsHeadquarterCompanyNameValidator.java
new file mode 100644 (file)
index 0000000..eafd892
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2017, 2018 Free Software Foundation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.validator.business.headquarter;
+
+import java.text.MessageFormat;
+import javax.enterprise.inject.spi.CDI;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.ValidatorException;
+import org.mxchange.jcoreee.validator.string.BaseStringValidator;
+import org.mxchange.jjobs.beans.business.headquarter.JobsHeadquarterWebRequestBean;
+import org.mxchange.jjobs.beans.business.headquarter.JobsHeadquarterWebRequestController;
+
+/**
+ * A validator for headquarter company names
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@FacesValidator (value = "HeadquarterCompanyNameValidator")
+public class JobsHeadquarterCompanyNameValidator extends BaseStringValidator {
+
+       /**
+        * Headquarter backing bean
+        */
+       private static JobsHeadquarterWebRequestController HEADQUARTER_CONTROLLER;
+
+       /**
+        * Serial number
+        */
+       private static final long serialVersionUID = 57_283_657_476_561L;
+
+       @Override
+       public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+               // Is the instance there?
+               if (null == HEADQUARTER_CONTROLLER) {
+                       // Get bean from CDI directly
+                       HEADQUARTER_CONTROLLER = CDI.current().select(JobsHeadquarterWebRequestBean.class).get();
+               }
+
+               // All accepted, required fields
+               final String[] requiredFields = {"companyName"}; //NOI18N
+
+               // Pre-validation (example: not null, not a string, empty string ...)
+               super.preValidate(context, component, value, requiredFields, false);
+
+               // Convert name to string (now securely checked in BaseStringValidator)
+               final String companyName = (String) value;
+
+               // Default is to check on existing names
+               Boolean checkExisting = Boolean.TRUE;
+
+               // Is attribute "allowEmptyRequiredData" set?
+               if (component.getAttributes().containsKey("checkExisting")) { //NOI18N
+                       // Get attribute
+                       final Object attribute = component.getAttributes().get("checkExisting"); //NOI18N
+
+                       // Make sure, it is Boolean as no String is accepted anymore
+                       if (!(attribute instanceof String)) {
+                               // Not valid attribute, please use "true" or "false" (default)
+                               throw new IllegalArgumentException("checkExisting must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
+                       }
+
+                       // Securely cast it
+                       checkExisting = Boolean.parseBoolean((String) attribute);
+               }
+
+               // Check if name is already used
+               final Boolean nameExists = HEADQUARTER_CONTROLLER.isCompanyNameUsed(companyName);
+
+               // Is the user id valid?
+               if ((!nameExists) && (checkExisting)) {
+                       // Format message
+                       final String message = MessageFormat.format("No basic data found with comany name {0}.", companyName);
+
+                       // Name does not exist
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
+               } else if ((nameExists) && (!checkExisting)) {
+                       // Format message
+                       final String message = MessageFormat.format("Found basic data with comany name {0}.", companyName);
+
+                       // Name already exists
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message)); //NOI18N
+               }
+       }
+
+}
index 24d96d790f600fb0273ca5d9191e48055906a8ec..9ca91373b151919878227e5c83408f3f0457306a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -56,34 +56,37 @@ public class JobsEmailAddressValidator extends BaseStringValidator {
         */
        private static final long serialVersionUID = 187_536_745_607_192L;
 
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsEmailAddressValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
        @Override
        public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
                // The required field
                final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
-               // Default is to reject empty email address fields
-               Boolean allowEmptyValue = Boolean.FALSE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
-                       // Get attribute
-                       final Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("allowEmptyValue must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       allowEmptyValue = Boolean.parseBoolean((String) attribute);
-               }
-
                // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, allowEmptyValue);
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
 
                // Is the email address empty and allowed?
-               if (null == value && allowEmptyValue) {
+               if (null == value && this.allowEmptyRequiredData) {
                        // Then accept this here
                        return;
                } else if (null == value) {
index 3a6b076fa239ceaeb0faa50159f09f83a3cf08ce..f2ccf3d4314e9e151cfc9674e6ae42bf3f562728 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -56,34 +56,37 @@ public class JobsBasicDataEmailAddressValidator extends BaseStringValidator {
         */
        private static final long serialVersionUID = 187_536_745_607_195L;
 
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsBasicDataEmailAddressValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
        @Override
        public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
                // The required field
                final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
-               // Default is to reject empty email address fields
-               Boolean allowEmptyValue = Boolean.FALSE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
-                       // Get attribute
-                       final Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("allowEmptyValue must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       allowEmptyValue = Boolean.parseBoolean((String) attribute);
-               }
-
                // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, allowEmptyValue);
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
 
                // Is the email address empty and allowed?
-               if (null == value && allowEmptyValue) {
+               if (null == value && this.allowEmptyRequiredData) {
                        // Then accept this here
                        return;
                } else if (null == value) {
index acc93b900051b1483f183cf4f6e53bc4e0081718..9f70ba0a43983dfc896b1181b022348ae4ff2671 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -56,34 +56,37 @@ public class JobsBranchOfficeEmailAddressValidator extends BaseStringValidator {
         */
        private static final long serialVersionUID = 187_536_745_607_195L;
 
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsBranchOfficeEmailAddressValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
        @Override
        public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
                // The required field
                final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
-               // Default is to reject empty email address fields
-               Boolean allowEmptyValue = Boolean.FALSE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
-                       // Get attribute
-                       final Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("allowEmptyValue must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       allowEmptyValue = Boolean.parseBoolean((String) attribute);
-               }
-
                // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, allowEmptyValue);
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
 
                // Is the email address empty and allowed?
-               if (null == value && allowEmptyValue) {
+               if (null == value && this.allowEmptyRequiredData) {
                        // Then accept this here
                        return;
                } else if (null == value) {
diff --git a/src/java/org/mxchange/jjobs/validator/emailaddress/employee/JobsEmployeeEmailAddressValidator.java b/src/java/org/mxchange/jjobs/validator/emailaddress/employee/JobsEmployeeEmailAddressValidator.java
new file mode 100644 (file)
index 0000000..15aabfd
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2016 - 2018 Free Software Foundation
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.jjobs.validator.emailaddress.employee;
+
+import java.text.MessageFormat;
+import java.util.regex.Pattern;
+import javax.enterprise.inject.spi.CDI;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.ValidatorException;
+import org.mxchange.jcoreee.validator.string.BaseStringValidator;
+import org.mxchange.jjobs.beans.business.employee.JobsEmployeeWebRequestBean;
+import org.mxchange.jjobs.beans.business.employee.JobsEmployeeWebRequestController;
+
+/**
+ * A validator for employee email address validation
+ * <p>
+ * @author Roland Häder<roland@mxchange.org>
+ */
+@FacesValidator (value = "EmployeeEmailAddressValidator")
+public class JobsEmployeeEmailAddressValidator extends BaseStringValidator {
+
+       /**
+        * Email pattern
+        */
+       private static final String EMAIL_REGEX = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; //NOI18N
+
+       /**
+        * Employee backing bean
+        */
+       private static JobsEmployeeWebRequestController EMPLOYEE_CONTROLLER;
+
+       /**
+        * Pattern matcher
+        */
+       private static final Pattern PATTERN_MATCHER = Pattern.compile(JobsEmployeeEmailAddressValidator.EMAIL_REGEX);
+
+       /**
+        * Serial number
+        */
+       private static final long serialVersionUID = 187_536_745_607_196L;
+
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsEmployeeEmailAddressValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
+       @Override
+       public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+               // The required field
+               final String[] requiredFields = {"employeeEmailAddress"}; //NOI18N
+
+               // Pre-validation (example: not null, not a string, empty string ...)
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
+
+               // Is the email address empty and allowed?
+               if (null == value && this.allowEmptyRequiredData) {
+                       // Then accept this here
+                       return;
+               } else if (null == value) {
+                       // Abort here
+                       throw new ValidatorException(new FacesMessage("No empty email address allowed.")); //NOI18N
+               }
+
+               // Get string from object ... ;-)
+               // @TODO Add IDN support (GNU lib?) Search for emailAddressRepeat
+               final String emailAddress = String.valueOf(value).trim();
+
+               // Checks if the email address matches a regex ("low-level" check)
+               // @TODO Should also be done by <f:validatorRegex />)
+               final boolean matches = PATTERN_MATCHER.matcher(emailAddress).matches(); //NOI18N
+
+               // Is the email address valid?
+               if (!matches) {
+                       // Generate message
+                       String message = MessageFormat.format("Email address {0} does not match regular expression.", emailAddress); //NOI18N
+
+                       // Not matching
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_WARN, message, message));
+               }
+
+               // Get client id (aka form id)
+               final String clientId = component.getClientId();
+
+               // Is the instance there?
+               if (null == EMPLOYEE_CONTROLLER) {
+                       // Get bean from CDI directly
+                       EMPLOYEE_CONTROLLER = CDI.current().select(JobsEmployeeWebRequestBean.class).get();
+               }
+
+               // Is it registered?
+               final Boolean isRegistered = EMPLOYEE_CONTROLLER.isEmailAddressRegistered(emailAddress);
+
+               // Is the email address already registered?
+               if ((!clientId.endsWith("resendEmailAddress")) && (isRegistered)) { //NOI18N
+                       // Generate message
+                       final String message = MessageFormat.format("Email address {0} is already registered.", emailAddress); //NOI18N
+
+                       // No, then abort here
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
+               } else if ((clientId.endsWith("resendEmailAddress")) && (!isRegistered)) { //NOI18N
+                       // Generate message
+                       final String message = MessageFormat.format("Email address {0} is not registered.", emailAddress); //NOI18N
+
+                       // No, then abort here
+                       throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
+               }
+       }
+
+}
index aa566f7a8f2d77f8cef2091df4bbf570c639206c..698366c47dfe7636d104c47e86d54a6b129dbf1e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -56,34 +56,37 @@ public class JobsHeadquarterEmailAddressValidator extends BaseStringValidator {
         */
        private static final long serialVersionUID = 187_536_745_607_194L;
 
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsHeadquarterEmailAddressValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
        @Override
        public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
                // The required field
                final String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
 
-               // Default is to reject empty email address fields
-               Boolean allowEmptyValue = Boolean.FALSE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
-                       // Get attribute
-                       final Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("allowEmptyValue must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       allowEmptyValue = Boolean.parseBoolean((String) attribute);
-               }
-
                // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, allowEmptyValue);
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
 
                // Is the email address empty and allowed?
-               if (null == value && allowEmptyValue) {
+               if (null == value && this.allowEmptyRequiredData) {
                        // Then accept this here
                        return;
                } else if (null == value) {
index 3482a4db9b75b61b01641afa9971eb0073fc9a56..ae57c5784de766ef2e2a0370e19df0b731c081c2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
index f2bce2baedeef3644709dda9040402333043ca2b..8430d9c600dba75d7330161f536880d2a1de8613 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
index 40b31102c179fb74e1714280e82aa15ee7b7f4f2..fa4083bfc102e06edd827e569a0ba6bd42efc8e6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
index ca3c844704bc0f89377aca859d21c6f7a0ab1994..7a3edc51705ad9d2b01d78263299bb18c871d619 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
index 489e75bf6aaa518b241f8fcfd310f0ba6909eb90..5473a500bb3e3c682047be2b333cd541ad368469 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
index 441397473837cd3d05469910cdb1a6aa7f4c2725..ff956ce50b61dce02161fa79b205e5360e338944 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -49,34 +49,37 @@ public class JobsUrlValidator extends BaseStringValidator {
         */
        private static final long serialVersionUID = 187_536_745_607_193L;
 
+       /**
+        * Whether empty data is allowed
+        */
+       private Boolean allowEmptyRequiredData;
+
+       /**
+        * Default constructor
+        */
+       public JobsUrlValidator () {
+               this.allowEmptyRequiredData = Boolean.FALSE;
+       }
+
+       /**
+        * Setter for allowEmptyRequiredData flag
+        * <p>
+        * @param allowEmptyRequiredData Whether empty values are allowed
+        */
+       public void setAllowEmptyRequiredData (final Boolean allowEmptyRequiredData) {
+               this.allowEmptyRequiredData = allowEmptyRequiredData;
+       }
+
        @Override
        public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
                // The required field
                final String[] requiredFields = {"companyWebsiteUrl"}; //NOI18N
 
-               // Default is to reject empty email address fields
-               Boolean allowEmptyValue = Boolean.FALSE;
-
-               // Is attribute "allowEmptyValue" set?
-               if (component.getAttributes().containsKey("allowEmptyValue")) { //NOI18N
-                       // Get attribute
-                       Object attribute = component.getAttributes().get("allowEmptyValue"); //NOI18N
-
-                       // Make sure, it is Boolean as no String is accepted anymore
-                       if (!(attribute instanceof String)) {
-                               // Not valid attribute, please use "true" or "false" (default)
-                               throw new IllegalArgumentException("allowEmptyValue must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
-                       }
-
-                       // Securely cast it
-                       allowEmptyValue = Boolean.parseBoolean((String) attribute);
-               }
-
                // Pre-validation (example: not null, not a string, empty string ...)
-               super.preValidate(context, component, value, requiredFields, allowEmptyValue);
+               super.preValidate(context, component, value, requiredFields, this.allowEmptyRequiredData);
 
                // Is the email address empty and allowed?
-               if (null == value && allowEmptyValue) {
+               if (null == value && this.allowEmptyRequiredData) {
                        // Then accept this here
                        return;
                } else if (null == value) {
index d3bc56a9365a18537f0b6c45c0d48ff4202c07b8..267a071f0c2311ad7bc04de6ea78e1f17117fcd1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016, 2017 Roland Häder
+ * Copyright (C) 2016 - 2018 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by