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

fr.xelians.sipg.service.sedav2.Sedav2ConfigBuilder 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.service.sedav2;

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

  private boolean validate = true;
  private boolean format = false;
  private int indent = 3;
  private int thread = 0;
  private boolean strict = true;
  private boolean checkBinary = true;
  private boolean checkSize = true;
  private boolean checkDigest = true;
  private boolean useMemory = false;
  private boolean identifyFileFormat = true;

  private Sedav2ConfigBuilder() {}

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

  /**
   * Spécifie si une validation doit être réalisée lors de la conversion. True par défaut.
   *
   * @param validate si une validation doit être réalisée
   * @return le builder
   */
  public Sedav2ConfigBuilder validate(boolean validate) {
    this.validate = validate;
    return this;
  }

  /**
   * Spécifie si le fichier de description doit être formaté (pretty-print). False par défaut.
   *
   * @param format si le fichier de description doit être formaté
   * @return le builder
   */
  public Sedav2ConfigBuilder format(boolean format) {
    this.format = format;
    return this;
  }

  /**
   * Spécifie la valeur de l'indentation lors du formatage. Par défaut 3.
   *
   * @param indent la valeur de l'indentation
   * @return le builder
   */
  public Sedav2ConfigBuilder indent(int indent) {
    this.indent = indent;
    return this;
  }

  /**
   * Spécifie le nombre de threads à utiliser lors de la conversion. Le nombre de cœurs du CPU par
   * défaut.
   *
   * @param thread le nombre de threads
   * @return le builder
   */
  public Sedav2ConfigBuilder thread(int thread) {
    this.thread = thread;
    return this;
  }

  /**
   * Spécifie si la conversion doit être stricte. False par défaut.
   *
   * @param strict si la conversion doit être stricte
   * @return le builder
   */
  public Sedav2ConfigBuilder strict(boolean strict) {
    this.strict = strict;
    return this;
  }

  /**
   * Spécifie si la validation doit vérifier les objets binaires.
   *
   * @param checkBinary si la validation doit vérifier les objets binaires
   * @return le builder
   */
  public Sedav2ConfigBuilder checkBinary(boolean checkBinary) {
    this.checkBinary = checkBinary;
    return this;
  }

  /**
   * Spécifie si la validation doit vérifier la taille des objets binaires.
   *
   * @param checkSize si la validation doit vérifier la taille des objets binaires
   * @return le builder
   */
  public Sedav2ConfigBuilder checkSize(boolean checkSize) {
    this.checkSize = checkSize;
    return this;
  }

  /**
   * Spécifie si la validation doit vérifier l'empreinte des objets binaires.
   *
   * @param checkDigest si la validation doit vérifier l'empreinte des objets binaires
   * @return le builder
   */
  public Sedav2ConfigBuilder checkDigest(boolean checkDigest) {
    this.checkDigest = checkDigest;
    return this;
  }

  /**
   * Spécifie si la génération du sip utilise la mémoire ou le disque. La génération en mémoire peut
   * s'avérer légèrement plus rapide, mais peut entrainer un dépassement de la mémoire de la machine
   * virtuelle. Il est fortement conseiller de s'assurer de connaitre la capacité mémoire de la
   * machine virtuelle et des sip à générer avant d'utiliser cette option.
   *
   * @param useMemory si la genération du sip doit se faire en mémoire
   * @return le builder
   */
  public Sedav2ConfigBuilder useMemory(boolean useMemory) {
    this.useMemory = useMemory;
    return this;
  }

  /**
   * Spécifie si le format de fichier des objets binaires doit etre identifié.
   *
   * @param identifyFileFormat si le format de fichier des objets binaires doit etre identifié.
   * @return le builder
   */
  public Sedav2ConfigBuilder identifyFileFormat(boolean identifyFileFormat) {
    this.identifyFileFormat = identifyFileFormat;
    return this;
  }

  /**
   * Instancie la classe Sedav2Config selon les paramètres précédemment spécifiés dans le builder.
   *
   * @return la configuration SEDA v2
   */
  public Sedav2Config build() {
    return new Sedav2Config(
        validate,
        format,
        indent,
        thread,
        strict,
        checkBinary,
        checkSize,
        checkDigest,
        useMemory,
        identifyFileFormat);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy