All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.xelians.sipg.model.ValidatorBuilder Maven / Gradle / Ivy

There is a newer version: 1.35
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package fr.xelians.sipg.model;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * La classe ValidatorBuilder facilite la création d'un objet Validator en suivant le principe de
 * conception du pattern builder.
 *
 * @author Emmanuel Deviller
 * @see Validator
 */
public class ValidatorBuilder {

  private String firstName;
  private String birthName;
  private String fullName;
  private String givenName;
  private String gender;
  private LocalDate birthDate;
  private Place birthPlace;
  private LocalDate deathDate;
  private Place deathPlace;
  private String corpName;
  private LocalDateTime validationTime;

  private List nationality = new ArrayList<>();
  private List identifier = new ArrayList<>();
  private List function = new ArrayList<>();
  private List activity = new ArrayList<>();
  private List position = new ArrayList<>();
  private List role = new ArrayList<>();
  private List mandate = new ArrayList<>();

  private ValidatorBuilder() {}

  /**
   * Instancie le builder.
   *
   * @return le builder
   */
  public static ValidatorBuilder builder() {
    return new ValidatorBuilder();
  }

  /**
   * Spécifie le prénom de la personne.
   *
   * @param firstName le prénom
   * @return le builder
   */
  public ValidatorBuilder withFirstName(String firstName) {
    this.firstName = firstName;
    return this;
  }

  /**
   * Spécifie le nom de naissance de la personne.
   *
   * @param birthName le nom de naissance
   * @return le builder
   */
  public ValidatorBuilder withBirthName(String birthName) {
    this.birthName = birthName;
    return this;
  }

  /**
   * Spécifie le nom de complet de la personne.
   *
   * @param fullName le nom complet
   * @return le builder
   */
  public ValidatorBuilder withFullName(String fullName) {
    this.fullName = fullName;
    return this;
  }

  /**
   * Spécifie le nom d'usage de la personne.
   *
   * @param givenName le nom d'usage
   * @return le builder
   */
  public ValidatorBuilder withGivenName(String givenName) {
    this.givenName = givenName;
    return this;
  }

  /**
   * Spécifie le sexe de la personne.
   *
   * @param gender le sexe
   * @return le builder
   */
  public ValidatorBuilder withGender(String gender) {
    this.gender = gender;
    return this;
  }

  /**
   * Spécifie la date de naissance de la personne.
   *
   * @param birthDate la date de naissance
   * @return le builder
   */
  public ValidatorBuilder withBirthDate(LocalDate birthDate) {
    this.birthDate = birthDate;
    return this;
  }

  /**
   * Spécifie le lieu de naissance de la personne.
   *
   * @param birthPlace le lieu de naissance
   * @return le builder
   */
  public ValidatorBuilder withBirthPlace(Place birthPlace) {
    this.birthPlace = birthPlace;
    return this;
  }

  /**
   * Spécifie la date de décès de la personne.
   *
   * @param deathDate la date de décès
   * @return le builder
   */
  public ValidatorBuilder withDeathDate(LocalDate deathDate) {
    this.deathDate = deathDate;
    return this;
  }

  /**
   * Spécifie le lieu de décès de la personne.
   *
   * @param deathPlace le lieu de décès
   * @return le builder
   */
  public ValidatorBuilder withDeathPlace(Place deathPlace) {
    this.deathPlace = deathPlace;
    return this;
  }

  /**
   * Spécifie l'entité d'appartenance de la personne.
   *
   * @param corpName l'entité
   * @return le builder
   */
  public ValidatorBuilder withCorpName(String corpName) {
    this.corpName = corpName;
    return this;
  }

  /**
   * Spécifie la date et l'heure de la validation.
   *
   * @param validationTime la date et l'heure
   * @return le builder
   */
  public ValidatorBuilder withValidationTime(LocalDateTime validationTime) {
    this.validationTime = validationTime;
    return this;
  }

  /**
   * Spécifie la liste des nationalités de la personne.
   *
   * @param list la liste des nationalités
   * @return le builder
   */
  public ValidatorBuilder withNationality(List list) {
    nationality = list;
    return this;
  }

  /**
   * Spécifie la liste des identifiants de la personne.
   *
   * @param list la liste des identifiants
   * @return le builder
   */
  public ValidatorBuilder withIdentifier(List list) {
    identifier = list;
    return this;
  }

  /**
   * Spécifie la liste des fonctions de la personne.
   *
   * @param list la liste des fonctions
   * @return le builder
   */
  public ValidatorBuilder withFunction(List list) {
    function = list;
    return this;
  }

  /**
   * Spécifie la liste des activités de la personne.
   *
   * @param list la liste des activités
   * @return le builder
   */
  public ValidatorBuilder withActivity(List list) {
    activity = list;
    return this;
  }

  /**
   * Spécifie la liste des positions de la personne.
   *
   * @param list la liste des positions
   * @return le builder
   */
  public ValidatorBuilder withPosition(List list) {
    position = list;
    return this;
  }

  /**
   * Spécifie la liste des rôles de la personne.
   *
   * @param list la liste des rôles
   * @return le builder
   */
  public ValidatorBuilder withRole(List list) {
    role = list;
    return this;
  }

  /**
   * Spécifie la liste des propriétés intellectuelles ou artistiques de la personne.
   *
   * @param list la liste des propriétés intellectuelles ou artistiques
   * @return le builder
   */
  public ValidatorBuilder withMandate(List list) {
    mandate = list;
    return this;
  }

  /**
   * Ajoute une nationalité à la personne.
   *
   * @param value la nationalité à ajouter
   * @return le builder
   */
  public ValidatorBuilder addNationality(String value) {
    nationality.add(value);
    return this;
  }

  /**
   * Ajoute un identifiant à la personne.
   *
   * @param value l'identifiant à ajouter
   * @return le builder
   */
  public ValidatorBuilder addIdentifier(String value) {
    identifier.add(value);
    return this;
  }

  /**
   * Ajoute une fonction à la personne.
   *
   * @param value la fonction à ajouter
   * @return le builder
   */
  public ValidatorBuilder addFunction(String value) {
    function.add(value);
    return this;
  }

  /**
   * Ajoute une activité à la personne.
   *
   * @param value l'activité à ajouter
   * @return le builder
   */
  public ValidatorBuilder addActivity(String value) {
    activity.add(value);
    return this;
  }

  /**
   * Ajoute une position à la personne.
   *
   * @param value la position à ajouter
   * @return le builder
   */
  public ValidatorBuilder addPosition(String value) {
    position.add(value);
    return this;
  }

  /**
   * Ajoute un rôle à la personne.
   *
   * @param value le rôle à ajouter
   * @return le builder
   */
  public ValidatorBuilder addRole(String value) {
    role.add(value);
    return this;
  }

  /**
   * Ajoute une propriété intellectuelle ou artistique à la personne.
   *
   * @param value la propriété à ajouter
   * @return le builder
   */
  public ValidatorBuilder addMandate(String value) {
    mandate.add(value);
    return this;
  }

  /**
   * Instancie la classe Validator selon les paramètres précédemment spécifiés dans le builder.
   *
   * @return le validateur
   */
  public Validator build() {
    Validator validator =
        new Validator(
            firstName,
            birthName,
            fullName,
            givenName,
            gender,
            birthDate,
            birthPlace,
            deathDate,
            deathPlace,
            corpName,
            validationTime);

    nationality.forEach(validator::addNationality);
    identifier.forEach(validator::addIdentifier);
    function.forEach(validator::addFunction);
    activity.forEach(validator::addActivity);
    position.forEach(validator::addPosition);
    role.forEach(validator::addRole);
    mandate.forEach(validator::addMandate);
    return validator;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy