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

fr.xelians.sipg.model.ArchiveUnit 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 com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import fr.xelians.sipg.utils.SipException;
import fr.xelians.sipg.utils.SipUtils;
import java.nio.file.Path;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
import org.apache.commons.lang3.Validate;

/**
 * La classe ArchiveUnit représente une unité d'archive qui contient la référence de l'objet
 * physique ou numérique à archiver, les métadonnées de description, les règles et les métadonnées
 * de gestion de l'objet. Une unité d'archive peut contenir d'autres unités d'archives et constituer
 * ainsi une arborescence. L'unité d'archive racine de l'arborescence est rattachée à un
 * ArchiveTransfer.
 *
 * 

Supporté en SEDA v2.1 et FNTC v4. * * @author Emmanuel Deviller * @see ArchiveTransfer */ @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class) public class ArchiveUnit implements ArchiveUnitContainer { public static final String PHYSICAL_MASTER = "PhysicalMaster"; /** * La liste des évènements de l'unité d'archive. Un évènement correspond à toute opération * concernant l'unité d'archive : opération de versement, de mise à jour de métadonnées, de * préservation, etc. */ protected final List logEvents = new ArrayList<>(); /** La liste des intitulés de l'unité d'archive. */ protected final List titles = new ArrayList<>(); /** La liste des descriptions de l'unité d'archive. */ protected final List descriptions = new ArrayList<>(); /** * La liste des changements successifs de propriété, de responsabilité et de conservation des * unités d'archives avant leur entrée dans le lieu de conservation. On peut notamment y indiquer * comment s'est effectué le passage de l'application d'origine au fichier archivable. Correspond * à l'historique de la conservation en ISAD(G). */ protected final List custodialItems = new ArrayList<>(); /** La liste des langues du contenu des objets binaires ou physiques. */ protected final List languages = new ArrayList<>(); /** La liste de mots-clés de description. */ protected final List tags = new ArrayList<>(); /** La liste des titulaires des droits de propriété intellectuelle. */ protected final List authorizedAgents = new ArrayList<>(); /** La liste des rédacteurs de l’unité d'archive. */ protected final List writers = new ArrayList<>(); /** * La liste des destinataires pour action. Utilisé pour indiquer le nom du destinataire par * exemple dans un courrier électronique. */ protected final List addressees = new ArrayList<>(); /** * La liste des destinataires pour information. Utilisé pour indiquer le nom du destinataire en * copie, pour information, par exemple dans un courrier électronique. */ protected final List recipients = new ArrayList<>(); /** La liste des émetteurs du message. */ protected final List transmitters = new ArrayList<>(); /** La liste des expéditeurs du message. */ protected final List senders = new ArrayList<>(); /** La liste des informations relatives à la signature. */ protected final List signatures = new ArrayList<>(); /** La liste des éléments étendus qui n'appartiennent pas à l'ontolgie standard. */ protected final List elements = new ArrayList<>(); /** La liste d'autres unités d'archives contenues dans cette unité d'archive. */ protected final List archiveUnits = new ArrayList<>(); /** La liste des archives unites référencées par cette unité d'archive. */ protected final List references = new ArrayList<>(); /** L'identifiant unique de l'archive unit dans le document. */ protected String id; /** L'identifiant de l'objet physique. */ protected String physicalId; /** La quantité ou taille de l'objet physique. */ protected double measure; /** La version de l'objet physique. */ protected String physicalVersion; /** L'objet binaire de type binary master. */ protected BinaryMasterDataObject binaryMasterDataObject; /** L'objet binaire de type dissemination (publication). */ protected DisseminationDataObject disseminationDataObject; /** L'objet binaire de type thumbnail (vignette). */ protected ThumbnailDataObject thumbnailDataObject; /** L'objet binaire de type text content (contenu texte). */ protected TextContentDataObject textContentDataObject; /** Le statut de la signature de l'objet binaire. */ protected String signatureStatus; /** Le profile d’archivage applicable à l'unité d'archive. */ protected String archiveUnitProfile; /** L'identifiant du service producteur. */ protected String originatingAgencyIdentifier; /** L'identifiant du service versant. */ protected String submissionAgencyIdentifier; /** * Indique si une autorisation humaine est nécessaire pour vérifier ou valider les opérations de * gestion des ArchiveUnit. */ protected Boolean needAuthorization; /** Les règles de communicabilité (accessibilité). */ protected AccessRules accessRules; /** Les règles de durée d’utilité administrative. */ protected AppraisalRules appraisalRules; /** Les règles de diffusion. */ protected DisseminationRules disseminationRules; /** Les règles de réutilisation. */ protected ReuseRules reuseRules; /** Les règles de classification. */ protected ClassificationRules classificationRules; /** Les règles de durée d'utilité courante. */ protected StorageRules storageRules; /** Les règles de gel. */ protected HoldRules holdRules; /** L'opération de mise à jour. */ protected UpdateOperation updateOperation; /** * Le niveau de description au sens de la norme ISAD (G). Indique si l’unité d'archive correspond * à un fonds, à un sous-fonds, à une classe, à une série organique, à une sous-série organique, à * un dossier, à un sous-dossier ou à une pièce. */ protected String descriptionLevel; /** La position de l’unité d'archive dans le plan de classement du service producteur. */ protected final List filePlanPositions = new ArrayList<>(); /** * L'identifiant attribué aux objets. Il est attribué par le SAE et correspond à un identifiant * interne. */ protected final List systemIds = new ArrayList<>(); /** * L'identifiant attribué aux objets de données. Il est attribué par le SAE et correspond à un * identifiant interne. */ protected final List dataObjectSystemIds = new ArrayList<>(); /** L'identifiant système attribué à l’ArchiveUnit par l’application du service producteur. */ protected final List originatingSystemIds = new ArrayList<>(); /** * L'identifiant métier attribué à l'unité d'archive par le service d'archives. Peut être comparé * à une cote. */ protected final List archivalAgencyArchiveUnitIdentifiers = new ArrayList<>(); /** L'identifiant métier attribué à l’ArchiveUnit par le service producteur. */ protected final List originatingAgencyArchiveUnitIdentifiers = new ArrayList<>(); /** L'identifiant attribué à l'ArchiveUnit par le service versant. */ protected final List transferringAgencyArchiveUnitIdentifiers = new ArrayList<>(); /** * Le type d’information au sens de l’OAIS (information de représentation, information de * pérennisation, etc.). */ protected String type; /** * Le type de document au sens diplomatique du terme (ex. compte rendu de réunion, note, * correspondance, etc.). Attention à ne pas confondre avec le Type. */ protected String documentType; /** La langue utilisée pour les métadonnées de description. */ protected String descriptionLanguage; /** * L'état de l'objet binaire ou physique (par rapport avec son cycle de vie). L'état permet par * exemple d'indiquer si la signature du fichier a été vérifiée avant le transfert aux archives. */ protected String status; /** La version du document. */ protected String version; /** * Le service producteur. Il s'agit d'une personne physique ou morale, publique ou privée, qui a * produit, reçu et conservé des archives dans l'exercice de son activité. */ protected Agency originatingAgency; /** Le service versant responsable du transfert des données. */ protected Agency submissionAgency; /** La référence à la source papier originale. */ protected String source; /** La référence à un objet faisant ou ne faisant pas partie du présent paquet d'information. */ // TODO: implement deserialization for RelatedObjectRef (serialization is done) @JsonIgnore protected RelatedObjectRef relation; /** L'identifiant de la version du GPS. */ protected String gpsVersionID; /** L'altitude basée sur la référence dans GPSAltitudeRef. L'altitude est exprimée en mètres. */ protected String gpsAltitude; /** * L'altitude utilisée comme altitude de référence. Si l'altitude est au-dessus du niveau de la * mer, la valeur 0 est normalement donnée. Si l'altitude est au-dessous du niveau de la mer, la * valeur 1 est donnée. */ protected String gpsAltitudeRef; /** * La latitude qui peut être exprimée de deux manières différentes : degrés, décimaux ou degrés, * minutes et secondes. Si la latitude est exprimée en degrés, décimaux, le format type est dd, * dd. Par exemple : "45.3130339". Si la latitude est exprimée en degrés, minutes et secondes, le * format type est dd, mm, ss. Par exemple : "45 18 46.922". */ protected String gpsLatitude; /** * Indique la latitude. La valeur 'N' indique la latitude nord, et 'S' indique la latitude sud. */ protected String gpsLatitudeRef; /** * La longitude peut être exprimée de deux manières différentes : degrés, décimaux ou degrés, * minutes et secondes. Si la longitude est exprimée en degrés, décimaux, le format type est dd, * dd. Par exemple : "5.392285833333334". Si la longitude est exprimée en degrés, minutes et * secondes, le format type est dd, mm, ss. Par exemple : "5 23 32.229". */ protected String gpsLongitude; /** * Indique la longitude. La valeur 'E' indique la longitude EST, et 'W' indique la longitude * OUEST. */ protected String gpsLongitudeRef; /** L'heure et la date de la position GPS. */ protected String gpsDateStamp; /** La date de création. */ protected LocalDate createdDate; /** La date de la transaction. */ protected LocalDate transactedDate; /** La date de numérisation. */ protected LocalDate acquiredDate; /** La date d'envoi. */ protected LocalDate sentDate; /** La date de réception. */ protected LocalDate receivedDate; /** La date d'enregistrement. */ protected LocalDate registeredDate; /** La date d'ouverture / date de début. */ protected LocalDate startDate; /** La date de fermeture / Date de fin. */ protected LocalDate endDate; /** Instancie la classe. */ public ArchiveUnit() { // Do nothing here } /** * Indique l'identifiant de l'objet physique. * * @return l'identifiant de l'objet physique */ public String getPhysicalId() { return physicalId; } /** * Spécifie l'identifiant de l'objet physique. * * @param physicalId l'identifiant de l'objet physique */ public void setPhysicalId(String physicalId) { this.physicalId = physicalId; } /** * Indique la quantité ou taille de l'objet physique. * * @return la quantité ou taille de l'objet physique */ public double getMeasure() { return measure; } /** * Spécifie la quantité ou taille de l'objet physique. * * @param measure la quantité ou taille de l'objet physique */ public void setMeasure(double measure) { this.measure = measure; } /** * Indique l'objet binaire de type binary master. * * @return l'objet binaire */ public BinaryDataObject getBinaryMasterDataObject() { return binaryMasterDataObject; } /** * Indique l'objet binaire de type dissemination. * * @return l'objet binaire */ public BinaryDataObject getDisseminationDataObject() { return disseminationDataObject; } /** * Indique l'objet binaire de type thumbnail. * * @return l'objet binaire */ public BinaryDataObject getThumbnailDataObject() { return thumbnailDataObject; } /** * Indique l'objet binaire de type text content. * * @return l'objet binaire */ public BinaryDataObject getTextContentDataObject() { return textContentDataObject; } /** * Fournit l'objet binaire de type "qualifier". Si l'objet n'existe pas, il est alors créé. * * @return l'objet binaire */ public BinaryDataObject provideBinaryDataObject(String qualifier) { return switch (qualifier) { case BinaryDataObject.BINARY_MASTER -> provideBinaryMasterDataObject(); case BinaryDataObject.DISSEMINATION -> provideDisseminationDataObject(); case BinaryDataObject.THUMBNAIL -> provideThumbnailDataObject(); case BinaryDataObject.TEXT_CONTENT -> provideTextContentDataObject(); default -> throw new SipException(String.format("Unknown qualifier %s", qualifier)); }; } /** * Indique le fournisseur du path de l'objet binaire de type binary master. * * @return le fournisseur du path de l'objet binaire */ @JsonIgnore public Supplier getBinaryPathSupplier() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getBinaryPathSupplier(); } private BinaryMasterDataObject provideBinaryMasterDataObject() { if (binaryMasterDataObject == null) { binaryMasterDataObject = new BinaryMasterDataObject(); } return binaryMasterDataObject; } /** * Spécifie le fournisseur du path de l'objet binaire de type binary master. * * @param binaryPathSupplier le fournisseur du path de l'objet binaire */ public void setBinaryPathSupplier(Supplier binaryPathSupplier) { provideBinaryMasterDataObject().setBinaryPathSupplier(binaryPathSupplier); } /** * Indique le path de l'objet binaire de type binary master. * * @return le path de l'objet binaire */ public Path getBinaryPath() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getBinaryPath(); } /** * Spécifie le path de l'objet binaire de type binary master. * * @param binaryPath le path de l'objet binaire */ public void setBinaryPath(Path binaryPath) { provideBinaryMasterDataObject().setBinaryPath(binaryPath); } /** * Indique la version de l'objet binaire de type binary master. * * @return la version de l'objet binaire */ public String getBinaryVersion() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getBinaryVersion(); } /** * Spécifie la version de l'objet binaire de type binary master. * * @param binaryVersion la version de l'objet binaire */ public void setBinaryVersion(String binaryVersion) { provideBinaryMasterDataObject().setBinaryVersion(binaryVersion); } /** * Indique l'algorithme utilisé pour générer l'empreinte (hash) de l'objet binaire de type binary * master. * * @return l'algorithme utilisé */ public String getDigestAlgorithm() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getDigestAlgorithm(); } /** * Indique les informations techniques de l'objet binaire de type binary master. * * @return les informations techniques */ public FileInfo getFileInfo() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getFileInfo(); } /** * Spécifie les informations techniques de l'objet binaire de type binary master. * * @param fileInfo les informations techniques */ public void setFileInfo(FileInfo fileInfo) { provideBinaryMasterDataObject().setFileInfo(fileInfo); } /** * Indique l'identifiant du format de l'objet binaire de type binary master. Il est fortement * conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité par The * British National Archives. * * @return l 'identifiant du format de l'objet binaire */ public String getFormatId() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getFormatIdentification().getFormatId(); } /** * Spécifie l'identifiant du format de l'objet binaire de type binary master. Il est fortement * conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité par The * British National Archives. * * @param formatId l'identifiant du format de l'objet binaire */ public void setFormatId(String formatId) { provideBinaryMasterDataObject().getFormatIdentification().setFormatId(formatId); } /** * Indique le nom du format de l'objet binaire de type binary master. Il est fortement conseillé * de nommer le format de l'objet binaire selon le référentiel Pronom édité par The British * National Archives. * * @return le nom du format de l'objet binaire */ public String getFormatName() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getFormatIdentification().getFormatName(); } /** * Spécifie le nom du format de l'objet binaire de type binary master. Il est fortement conseillé * de nommer le format de l'objet binaire selon le référentiel Pronom édite par The British * National Archives. * * @param formatName le nom du format de l'objet binaire */ public void setFormatName(String formatName) { provideBinaryMasterDataObject().getFormatIdentification().setFormatName(formatName); } /** * Indique le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type binary * master. * * @return le type MIME */ public String getMimeType() { return binaryMasterDataObject == null ? null : binaryMasterDataObject.getFormatIdentification().getMimeType(); } /** * Spécifie le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type binary * master. * * @param mimeType le type MIME */ public void setMimeType(String mimeType) { provideBinaryMasterDataObject().getFormatIdentification().setMimeType(mimeType); } private DisseminationDataObject provideDisseminationDataObject() { if (disseminationDataObject == null) { disseminationDataObject = new DisseminationDataObject(); } return disseminationDataObject; } /** * Indique le fournisseur du path de l'objet binaire de type dissemination (publication). * * @return le fournisseur du path de l'objet binaire */ @JsonIgnore public Supplier getDisseminationPathSupplier() { return disseminationDataObject == null ? null : disseminationDataObject.getBinaryPathSupplier(); } /** * Spécifie le fournisseur du path de l'objet binaire de type dissemination (publication). * * @param binaryPathSupplier le fournisseur du path de l'objet binaire */ public void setDisseminationPathSupplier(Supplier binaryPathSupplier) { provideDisseminationDataObject().setBinaryPathSupplier(binaryPathSupplier); } /** * Indique le path de l'objet binaire de type dissemination (publication). * * @return le path de l'objet binaire */ public Path getDisseminationPath() { return disseminationDataObject == null ? null : disseminationDataObject.getBinaryPath(); } /** * Spécifie le path de l'objet binaire de type dissemination (publication). * * @param binaryPath le path de l'objet binaire */ public void setDisseminationPath(Path binaryPath) { provideDisseminationDataObject().setBinaryPath(binaryPath); } /** * Indique la version de l'objet binaire de type dissemination (publication). * * @return la version de l'objet binaire */ public String getDisseminationVersion() { return disseminationDataObject == null ? null : disseminationDataObject.getBinaryVersion(); } /** * Spécifie la version de l'objet binaire de type dissemination (publication). * * @param binaryVersion la version de l'objet binaire */ public void setDisseminationVersion(String binaryVersion) { provideDisseminationDataObject().setBinaryVersion(binaryVersion); } /** * Indique l'algorithme utilisé pour générer l'empreinte (hash) de l'objet binaire de type * dissemination (publication). * * @return l'algorithme utilisé */ public String getDisseminationDigestAlgorithm() { return disseminationDataObject == null ? null : disseminationDataObject.getDigestAlgorithm(); } /** * Indique les informations techniques de l'objet binaire de type dissemination (publication). * * @return les informations techniques */ public FileInfo getDisseminationFileInfo() { return disseminationDataObject == null ? null : disseminationDataObject.getFileInfo(); } /** * Spécifie les informations techniques de l'objet binaire de type dissemination (publication). * * @param fileInfo les informations techniques */ public void setDisseminationFileInfo(FileInfo fileInfo) { provideDisseminationDataObject().setFileInfo(fileInfo); } /** * Indique l'identifiant du format de l'objet binaire de type dissemination (publication). Il est * fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @return l 'identifiant du format de l'objet binaire */ public String getDisseminationFormatId() { return disseminationDataObject == null ? null : disseminationDataObject.getFormatIdentification().getFormatId(); } /** * Spécifie l'identifiant du format de l'objet binaire de type dissemination (publication). Il est * fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @param formatId l'identifiant du format de l'objet binaire */ public void setDisseminationFormatId(String formatId) { provideDisseminationDataObject().getFormatIdentification().setFormatId(formatId); } /** * Indique le nom du format de l'objet binaire de type dissemination (publication). Il est * fortement conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @return le nom du format de l'objet binaire */ public String getDisseminationFormatName() { return disseminationDataObject == null ? null : disseminationDataObject.getFormatIdentification().getFormatName(); } /** * Spécifie le nom du format de l'objet binaire de type dissemination (publication). Il est * fortement conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édite * par The British National Archives. * * @param formatName le nom du format de l'objet binaire */ public void setDisseminationFormatName(String formatName) { provideDisseminationDataObject().getFormatIdentification().setFormatName(formatName); } /** * Indique le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type * dissemination (publication). * * @return le type MIME */ public String getDisseminationMimeType() { return disseminationDataObject == null ? null : disseminationDataObject.getFormatIdentification().getMimeType(); } /** * Spécifie le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type * dissemination (publication). * * @param mimeType le type MIME */ public void setDisseminationMimeType(String mimeType) { provideDisseminationDataObject().getFormatIdentification().setMimeType(mimeType); } private ThumbnailDataObject provideThumbnailDataObject() { if (thumbnailDataObject == null) { thumbnailDataObject = new ThumbnailDataObject(); } return thumbnailDataObject; } /** * Indique le fournisseur du path de l'objet binaire de type thumbnail (vignette). * * @return le fournisseur du path de l'objet binaire */ @JsonIgnore public Supplier getThumbnailPathSupplier() { return thumbnailDataObject == null ? null : thumbnailDataObject.getBinaryPathSupplier(); } /** * Spécifie le fournisseur du path de l'objet binaire de type thumbnail (vignette). * * @param binaryPathSupplier le fournisseur du path de l'objet binaire */ public void setThumbnailPathSupplier(Supplier binaryPathSupplier) { provideThumbnailDataObject().setBinaryPathSupplier(binaryPathSupplier); } /** * Indique le path de l'objet binaire de type thumbnail (vignette). * * @return le path de l'objet binaire */ public Path getThumbnailPath() { return thumbnailDataObject == null ? null : thumbnailDataObject.getBinaryPath(); } /** * Spécifie le path de l'objet binaire de type thumbnail (vignette). * * @param binaryPath le path de l'objet binaire */ public void setThumbnailPath(Path binaryPath) { provideThumbnailDataObject().setBinaryPath(binaryPath); } /** * Indique la version de l'objet binaire de type thumbnail (vignette). * * @return la version de l'objet binaire */ public String getThumbnailVersion() { return thumbnailDataObject == null ? null : thumbnailDataObject.getBinaryVersion(); } /** * Spécifie la version de l'objet binaire de type thumbnail (vignette). * * @param binaryVersion la version de l'objet binaire */ public void setThumbnailVersion(String binaryVersion) { provideThumbnailDataObject().setBinaryVersion(binaryVersion); } /** * Indique l'algorithme utilisé pour générer l'empreinte (hash) de l'objet binaire de type * thumbnail (vignette). * * @return l'algorithme utilisé */ public String getThumbnailDigestAlgorithm() { return thumbnailDataObject == null ? null : thumbnailDataObject.getDigestAlgorithm(); } /** * Indique les informations techniques de l'objet binaire de type thumbnail (vignette). * * @return les informations techniques */ public FileInfo getThumbnailFileInfo() { return thumbnailDataObject == null ? null : thumbnailDataObject.getFileInfo(); } /** * Spécifie les informations techniques de l'objet binaire de type thumbnail (vignette). * * @param fileInfo les informations techniques */ public void setThumbnailFileInfo(FileInfo fileInfo) { provideThumbnailDataObject().setFileInfo(fileInfo); } /** * Indique l'identifiant du format de l'objet binaire de type thumbnail (vignette). Il est * fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @return l 'identifiant du format de l'objet binaire */ public String getThumbnailFormatId() { return thumbnailDataObject == null ? null : thumbnailDataObject.getFormatIdentification().getFormatId(); } /** * Spécifie l'identifiant du format de l'objet binaire de type thumbnail (vignette). Il est * fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @param formatId l'identifiant du format de l'objet binaire */ public void setThumbnailFormatId(String formatId) { provideThumbnailDataObject().getFormatIdentification().setFormatId(formatId); } /** * Indique le nom du format de l'objet binaire de type thumbnail (vignette). Il est fortement * conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édité par The * British National Archives. * * @return le nom du format de l'objet binaire */ public String getThumbnailFormatName() { return thumbnailDataObject == null ? null : thumbnailDataObject.getFormatIdentification().getFormatName(); } /** * Spécifie le nom du format de l'objet binaire de type thumbnail (vignette). Il est fortement * conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édite par The * British National Archives. * * @param formatName le nom du format de l'objet binaire */ public void setThumbnailFormatName(String formatName) { provideThumbnailDataObject().getFormatIdentification().setFormatName(formatName); } /** * Indique le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type * thumbnail (vignette). * * @return le type MIME */ public String getThumbnailMimeType() { return thumbnailDataObject == null ? null : thumbnailDataObject.getFormatIdentification().getMimeType(); } /** * Spécifie le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type * thumbnail (vignette). * * @param mimeType le type MIME */ public void setThumbnailMimeType(String mimeType) { provideThumbnailDataObject().getFormatIdentification().setMimeType(mimeType); } private TextContentDataObject provideTextContentDataObject() { if (textContentDataObject == null) { textContentDataObject = new TextContentDataObject(); } return textContentDataObject; } /** * Indique le fournisseur du path de l'objet binaire de type text content (contenu texte). * * @return le fournisseur du path de l'objet binaire */ @JsonIgnore public Supplier getTextContentPathSupplier() { return textContentDataObject == null ? null : textContentDataObject.getBinaryPathSupplier(); } /** * Spécifie le fournisseur du path de l'objet binaire de type text content (contenu texte). * * @param binaryPathSupplier le fournisseur du path de l'objet binaire */ public void setTextContentPathSupplier(Supplier binaryPathSupplier) { provideTextContentDataObject().setBinaryPathSupplier(binaryPathSupplier); } /** * Indique le path de l'objet binaire de type text content (contenu texte). * * @return le path de l'objet binaire */ public Path getTextContentPath() { return textContentDataObject == null ? null : textContentDataObject.getBinaryPath(); } /** * Spécifie le path de l'objet binaire de type text content (contenu texte). * * @param binaryPath le path de l'objet binaire */ public void setTextContentPath(Path binaryPath) { provideTextContentDataObject().setBinaryPath(binaryPath); } /** * Indique la version de l'objet binaire de type text content (contenu texte). * * @return la version de l'objet binaire */ public String getTextContentVersion() { return textContentDataObject == null ? null : textContentDataObject.getBinaryVersion(); } /** * Spécifie la version de l'objet binaire de type text content (contenu texte). * * @param binaryVersion la version de l'objet binaire */ public void setTextContentVersion(String binaryVersion) { provideTextContentDataObject().setBinaryVersion(binaryVersion); } /** * Indique l'algorithme utilisé pour générer l'empreinte (hash) de l'objet binaire de type text * content (contenu texte). * * @return l'algorithme utilisé */ public String getTextContentDigestAlgorithm() { return textContentDataObject == null ? null : textContentDataObject.getDigestAlgorithm(); } /** * Indique les informations techniques de l'objet binaire de type text content (contenu texte). * * @return les informations techniques */ public FileInfo getTextContentFileInfo() { return textContentDataObject == null ? null : textContentDataObject.getFileInfo(); } /** * Spécifie les informations techniques de l'objet binaire de type text content (contenu texte). * * @param fileInfo les informations techniques */ public void setTextContentFileInfo(FileInfo fileInfo) { provideTextContentDataObject().setFileInfo(fileInfo); } /** * Indique l'identifiant du format de l'objet binaire de type text content (contenu texte). Il est * fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @return l 'identifiant du format de l'objet binaire */ public String getTextContentFormatId() { return textContentDataObject == null ? null : textContentDataObject.getFormatIdentification().getFormatId(); } /** * Spécifie l'identifiant du format de l'objet binaire de type text content (contenu texte). Il * est fortement conseillé d'identifier le format de l'objet binaire selon le référentiel Pronom * édité par The British National Archives. * * @param formatId l'identifiant du format de l'objet binaire */ public void setTextContentFormatId(String formatId) { provideTextContentDataObject().getFormatIdentification().setFormatId(formatId); } /** * Indique le nom du format de l'objet binaire de type text content (contenu texte). Il est * fortement conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édité * par The British National Archives. * * @return le nom du format de l'objet binaire */ public String getTextContentFormatName() { return textContentDataObject == null ? null : textContentDataObject.getFormatIdentification().getFormatName(); } /** * Spécifie le nom du format de l'objet binaire de type text content (contenu texte). Il est * fortement conseillé de nommer le format de l'objet binaire selon le référentiel Pronom édite * par The British National Archives. * * @param formatName le nom du format de l'objet binaire */ public void setTextContentFormatName(String formatName) { provideTextContentDataObject().getFormatIdentification().setFormatName(formatName); } /** * Indique le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type text * content (contenu texte). * * @return le type MIME */ public String getTextContentMimeType() { return textContentDataObject == null ? null : textContentDataObject.getFormatIdentification().getMimeType(); } /** * Spécifie le type MIME (Multipurpose Internet Mail Extensions) de l'objet binaire de type text * content (contenu texte). * * @param mimeType le type MIME */ public void setTextContentMimeType(String mimeType) { provideTextContentDataObject().getFormatIdentification().setMimeType(mimeType); } /** * Indique la version de l'objet physique. * * @return la version de l'objet physique */ public String getPhysicalVersion() { return physicalVersion; } /** * Spécifie la version de l'objet physique. * * @param physicalVersion la version de l'objet physique */ public void setPhysicalVersion(String physicalVersion) { this.physicalVersion = physicalVersion; } /** * Indique le statut de la signature de l'objet binaire. * * @return le statut de la signature de l'objet binaire */ public String getSignatureStatus() { return signatureStatus; } /** * Spécifie le statut de la signature de l'objet binaire. * * @param signatureStatus le statut de la signature de l'objet binaire */ public void setSignatureStatus(String signatureStatus) { this.signatureStatus = signatureStatus; } /** * Indique le profile d’archivage applicable à l'unité d'archive. * * @return le profile d’archivage */ public String getArchiveUnitProfile() { return archiveUnitProfile; } /** * Spécifie le profile d’archivage applicable à l'unité d'archive. * * @param achiveUnitProfile le profile d’archivage */ public void setArchiveUnitProfile(String achiveUnitProfile) { this.archiveUnitProfile = achiveUnitProfile; } /** * Indique les règles de communicabilité (accessibilité). * * @return les règles de communicabilité */ public AccessRules getAccessRules() { return accessRules; } /** * Spécifie les règles de communicabilité (accessibilité). * * @param accessRules les règles de communicabilité */ public void setAccessRules(AccessRules accessRules) { this.accessRules = accessRules; } /** * Spécifie les règles de communicabilité (accessibilité). * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setAccessRules(String ruleName, LocalDate startDate) { this.accessRules = new AccessRules(ruleName, startDate); } /** * Indique les règles de diffusion. * * @return les règles de diffusion */ public DisseminationRules getDisseminationRules() { return disseminationRules; } /** * Spécifie les règles de diffusion. * * @param disseminationRules les règles de diffusion. */ public void setDisseminationRules(DisseminationRules disseminationRules) { this.disseminationRules = disseminationRules; } /** * Spécifie les règles de diffusion. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setDisseminationRule(String ruleName, LocalDate startDate) { this.disseminationRules = new DisseminationRules(ruleName, startDate); } /** * Indique les règles de classification. * * @return les règles de classification */ public ClassificationRules getClassificationRules() { return classificationRules; } /** * Spécifie les règles de classification. * * @param classificationRules les règles de classification */ public void setClassificationRules(ClassificationRules classificationRules) { this.classificationRules = classificationRules; } /** * Spécifie les règles de classification. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setClassificationRules(String ruleName, LocalDate startDate) { this.classificationRules = new ClassificationRules(ruleName, startDate); } /** * Indique les règles de réutilisation. * * @return les règles de réutilisation */ public ReuseRules getReuseRules() { return reuseRules; } /** * Spécifie les règles de réutilisation. * * @param reuseRules les règles de réutilisation */ public void setReuseRules(ReuseRules reuseRules) { this.reuseRules = reuseRules; } /** * Spécifie les règles de réutilisation. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setReuseRules(String ruleName, LocalDate startDate) { this.reuseRules = new ReuseRules(ruleName, startDate); } /** * Indique les règles de durée d’utilité administrative. * * @return les règles de durée d’utilité administrative */ public AppraisalRules getAppraisalRules() { return appraisalRules; } /** * Spécifie les règles de durée d’utilité administrative. * * @param appraisalRules les règles de durée d’utilité administrative */ public void setAppraisalRules(AppraisalRules appraisalRules) { this.appraisalRules = appraisalRules; } /** * Spécifie les règles de durée d’utilité administrative. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setAppraisalRules(String ruleName, LocalDate startDate) { this.appraisalRules = new AppraisalRules(ruleName, startDate); } /** * Indique les règles de durée d'utilité courante. * * @return les règles de durée d'utilité courante */ public StorageRules getStorageRules() { return storageRules; } /** * Spécifie les règles de durée d'utilité courante. * * @param storageRules les règles de durée d'utilité courante */ public void setStorageRules(StorageRules storageRules) { this.storageRules = storageRules; } /** * Spécifie les règles de durée d'utilité courante. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setStorageRules(String ruleName, LocalDate startDate) { this.storageRules = new StorageRules(ruleName, startDate); } /** * Indique les règles de gel. * * @return les règles de gel */ public HoldRules getHoldRules() { return holdRules; } /** * Spécifie les règles de gel. * * @param holdRules les règles de gel */ public void setHoldRules(HoldRules holdRules) { this.holdRules = holdRules; } /** * Spécifie les règles de gel. * * @param ruleName le nom de la règle * @param startDate la date de début */ public void setHoldRules( String ruleName, LocalDate startDate, LocalDate holdEndDate, String holdOwner, String holdReason, LocalDate holdReassessingDate, Boolean preventRearrangement) { this.holdRules = new HoldRules( ruleName, startDate, holdEndDate, holdOwner, holdReason, holdReassessingDate, preventRearrangement); } /** * Indique si une autorisation humaine est nécessaire pour vérifier ou valider les opérations de * gestion des ArchiveUnit. * * @return si une autorisation est nécessaire */ public Boolean getNeedAuthorization() { return needAuthorization; } /** * Spécifie si une autorisation humaine est nécessaire pour vérifier ou valider les opérations de * gestion des ArchiveUnit. * * @param needAuthorization si une autorisation est nécessaire */ public void setNeedAuthorization(Boolean needAuthorization) { this.needAuthorization = needAuthorization; } /** * Indique l'opération de mise à jour. * * @return l'opération de mise à jour */ public UpdateOperation getUpdateOperation() { return updateOperation; } /** * Spécifie l'opération de mise à jour. * * @param updateOperation l'opération de mise à jour */ public void setUpdateOperation(UpdateOperation updateOperation) { this.updateOperation = updateOperation; } /** * Ajoute un évènement à la liste des évènements de l'unité d'archive. * * @param event l'évènement à ajouter */ public void addLogEvent(Event event) { Validate.notNull(event, SipUtils.NOT_NULL, "event"); logEvents.add(event); } /** * Supprime un évènement de la liste des évènements de l'unité d'archive. * * @param event l'évènement à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeLogEvent(Event event) { Validate.notNull(event, SipUtils.NOT_NULL, "event"); return logEvents.remove(event); } /** * Fournit la liste des évènements de l'unité d'archive. Un évènement correspond à toute opération * concernant l'unité d'archive : opération de versement, de mise à jour de métadonnées, de * préservation, etc. * * @return la liste des évènements de l'unité d'archive */ public List getLogEvents() { return new ArrayList<>(logEvents); } /** * Indique le niveau de description au sens de la norme ISAD (G). Indique si l’unité d'archive * correspond à un fonds, à un sous-fonds, à une classe, à une série organique, à une sous-série * organique, à un dossier, à un sous-dossier ou à une pièce. * * @return le niveau de description */ public String getDescriptionLevel() { return descriptionLevel; } /** * Spécifie le niveau de description au sens de la norme ISAD (G). Indique si l’unité d'archive * correspond à un fonds, à un sous-fonds, à une classe, à une série organique, à une sous-série * organique, à un dossier, à un sous-dossier ou à une pièce. * * @param descriptionLevel le niveau de description */ public void setDescriptionLevel(String descriptionLevel) { this.descriptionLevel = descriptionLevel; } /** * Fournit la liste des intitulés de l'unité d'archive. * * @return la liste des intitulés */ public List getTitles() { return new ArrayList<>(titles); } /** * Ajoute un intitulé à l'unité d'archive. * * @param message l'intitulé à ajouter */ public void addTitle(String message) { titles.add(new Text(message)); } /** * Ajoute un intitulé à l'unité d'archive. * * @param message l'intitulé à ajouter * @param lang la langue à ajouter */ public void addTitle(String message, String lang) { titles.add(new Text(message, lang)); } /** * Ajoute un intitulé à l'unité d'archive. * * @param title le texte de l'intitulé à ajouter */ public void addTitle(Text title) { Validate.notNull(title, SipUtils.NOT_NULL, "title"); titles.add(title); } /** * Supprime un intitulé de l'unité d'archive. * * @param title le texte de l'intitulé à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeTitle(Text title) { Validate.notNull(title, SipUtils.NOT_NULL, "title"); return titles.remove(title); } /** * Fournit la liste des descriptions de l'unité d'archive. * * @return la liste des descriptions */ public List getDescriptions() { return new ArrayList<>(descriptions); } /** * Ajoute une description à l'unité d'archive. * * @param message la description à ajouter */ public void addDescription(String message) { descriptions.add(new Text(message)); } /** * Ajoute une description à l'unité d'archive. * * @param message la description à ajouter * @param lang la langue à ajouter */ public void addDescription(String message, String lang) { descriptions.add(new Text(message, lang)); } /** * Ajoute une description à l'unité d'archive. * * @param description le texte de la description à ajouter */ public void addDescription(Text description) { Validate.notNull(description, SipUtils.NOT_NULL, "description"); descriptions.add(description); } /** * Indique l'identifiant de l'archive unit. Note. L'identifiant de l'archive unit est unique dans * le document. * * @return l'identifiant de l'archive unit. */ public String getId() { return id; } /** * Spécifie l'attribut ID identifiant l'archive unit. Il est de la responsabilité du développeur * de s'assurer que l'attribut spécifié est unique dans le document. Pour éviter d'éventuels * conflits avec les attributs générés automatiquement, il est conseillé de préfixer l'attribut * une valeur différente de "ID" qui est celle utilisée par le générateur. * *

Note. Les attributs de type ID permettent d'identifier de manière unique un élément dans le * document. La valeur d'un attribut de type ID doit donc être unique parmi toutes les valeurs de * tous les attributs ID de tout le document. Dans le cas contraire le document XML n'est pas * valide. Si l'ID d'un élément n'est pas défini, le générateur crée automatiquement en se basant * sur une séquence un ID unique préfixé par "ID". * * @param id l'identifiant de l'archive unit */ public void setId(String id) { this.id = id; } /** * Supprime une description de l'unité d'archive. * * @param description la description à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeDescription(Text description) { Validate.notNull(description, SipUtils.NOT_NULL, "description"); return descriptions.remove(description); } /** * Indique les positions de l’unité d'archive dans le plan de classement du service producteur. * * @return la position */ public List getFilePlanPositions() { return new ArrayList<>(filePlanPositions); } /** * Ajoute la position de l’unité d'archive dans le plan de classement du service producteur. * * @param filePlanPosition la position à ajouter */ public void addFilePlanPosition(String filePlanPosition) { Validate.notNull(filePlanPosition, SipUtils.NOT_NULL, "filePlanPosition"); this.filePlanPositions.add(filePlanPosition); } /** * Supprime la position de l’unité d'archive. * * @param filePlanPosition la position à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeFilePlanPosition(String filePlanPosition) { Validate.notNull(filePlanPosition, SipUtils.NOT_NULL, "filePlanPosition"); return filePlanPositions.remove(filePlanPosition); } /** * Indique les identifiants attribués à l'archive. Il est attribué par le SAE et correspond à un * identifiant interne. * * @return l 'identifiant */ public List getSystemIds() { return new ArrayList<>(systemIds); } /** * Ajoute l'identifiant. * * @param systemId la position à ajouter */ public void addSystemId(String systemId) { Validate.notNull(systemId, SipUtils.NOT_NULL, "systemId"); this.systemIds.add(systemId); } /** * Supprime l'identifiant. * * @param systemId la position à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeSystemId(String systemId) { Validate.notNull(systemId, SipUtils.NOT_NULL, "systemId"); return systemIds.remove(systemId); } /** * Indique les identifiants attribués aux objets de données. Il est attribué par le SAE et * correspond à un identifiant interne. * * @return l 'identifiant */ public List getDataObjectSystemIds() { return dataObjectSystemIds; } /** * Ajoute l'identifiant. * * @param dataObjectSystemId la position à ajouter */ public void addDataObjectSystemId(String dataObjectSystemId) { Validate.notNull(dataObjectSystemId, SipUtils.NOT_NULL, "dataObjectSystemId"); this.dataObjectSystemIds.add(dataObjectSystemId); } /** * Supprime l'identifiant. * * @param dataObjectSystemId la position à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeDataObjectSystemId(String dataObjectSystemId) { Validate.notNull(dataObjectSystemId, SipUtils.NOT_NULL, "dataObjectSystemId"); return dataObjectSystemIds.remove(dataObjectSystemId); } /** * Indique les identifiants système attribué à l’ArchiveUnit par l’application du service * producteur. * * @return l 'identifiant */ public List getOriginatingSystemIds() { return new ArrayList<>(originatingSystemIds); } /** * Ajoute l'identifiant système attribué à l’ArchiveUnit par l’application du service producteur. * * @param originatingSystemId l'identifiant à ajouter */ public void addOriginatingSystemId(String originatingSystemId) { Validate.notNull(originatingSystemId, SipUtils.NOT_NULL, "originatingSystemId"); this.originatingSystemIds.add(originatingSystemId); } /** * Supprime l'identifiant système à la liste. * * @param originatingSystemId l'identifiant à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeOriginatingSystemId(String originatingSystemId) { Validate.notNull(originatingSystemId, SipUtils.NOT_NULL, "originatingSystemId"); return originatingSystemIds.remove(originatingSystemId); } /** * Indique les identifiants métier attribué à l'unité d'archive par le service d'archives. Peut * être comparé à une cote. * * @return l 'identifiant */ public List getArchivalAgencyArchiveUnitIdentifiers() { return new ArrayList<>(archivalAgencyArchiveUnitIdentifiers); } /** * Ajoute l'identifiant métier attribué à l’ArchiveUnit par l’application du service producteur. * * @param archivalAgencyArchiveUnitIdentifier l'identifiant à ajouter */ public void addArchivalAgencyArchiveUnitIdentifier(String archivalAgencyArchiveUnitIdentifier) { Validate.notNull( archivalAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "archivalAgencyArchiveUnitIdentifier"); this.archivalAgencyArchiveUnitIdentifiers.add(archivalAgencyArchiveUnitIdentifier); } /** * Supprime l'identifiant métier à la liste. * * @param archivalAgencyArchiveUnitIdentifier l'identifiant à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeArchivalAgencyArchiveUnitIdentifier( String archivalAgencyArchiveUnitIdentifier) { Validate.notNull( archivalAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "archivalAgencyArchiveUnitIdentifier"); return archivalAgencyArchiveUnitIdentifiers.remove(archivalAgencyArchiveUnitIdentifier); } /** * Indique les identifiants métier attribués à l’ArchiveUnit par le service producteur. * * @return l 'identifiant */ public List getOriginatingAgencyArchiveUnitIdentifiers() { return new ArrayList<>(originatingAgencyArchiveUnitIdentifiers); } /** * Ajoute l'identifiant métier attribué à l’ArchiveUnit par l’application du service producteur. * * @param originatingAgencyArchiveUnitIdentifier l'identifiant à ajouter */ public void addOriginatingAgencyArchiveUnitIdentifier( String originatingAgencyArchiveUnitIdentifier) { Validate.notNull( originatingAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "originatingAgencyArchiveUnitIdentifier"); this.originatingAgencyArchiveUnitIdentifiers.add(originatingAgencyArchiveUnitIdentifier); } /** * Supprime l'identifiant métier à la liste des langues du contenu des objets binaires ou * physiques. * * @param originatingAgencyArchiveUnitIdentifier l'identifiant à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeOriginatingAgencyArchiveUnitIdentifier( String originatingAgencyArchiveUnitIdentifier) { Validate.notNull( originatingAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "archivalAgencyArchiveUnitIdentifier"); return originatingAgencyArchiveUnitIdentifiers.remove(originatingAgencyArchiveUnitIdentifier); } /** * Indique les identifiants attribués à l'ArchiveUnit par le service versant. * * @return l 'identifiant */ public List getTransferringAgencyArchiveUnitIdentifiers() { return new ArrayList<>(transferringAgencyArchiveUnitIdentifiers); } /** * Ajoute l'identifiant attribué à l’ArchiveUnit par le service versant. * * @param transferringAgencyArchiveUnitIdentifier l'identifiant à ajouter */ public void addTransferringAgencyArchiveUnitIdentifier( String transferringAgencyArchiveUnitIdentifier) { Validate.notNull( transferringAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "transferringAgencyArchiveUnitIdentifier"); this.transferringAgencyArchiveUnitIdentifiers.add(transferringAgencyArchiveUnitIdentifier); } /** * Supprime l'identifiant métier à la liste. * * @param transferringAgencyArchiveUnitIdentifier l'identifiant à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeTransferringAgencyArchiveUnitIdentifier( String transferringAgencyArchiveUnitIdentifier) { Validate.notNull( transferringAgencyArchiveUnitIdentifier, SipUtils.NOT_NULL, "transferringAgencyArchiveUnitIdentifier"); return transferringAgencyArchiveUnitIdentifiers.remove(transferringAgencyArchiveUnitIdentifier); } /** * Ajoute un changement à la liste des changements. La liste contient les changements successifs * de propriété, de responsabilité et de conservation des unités d'archives avant leur entrée dans * le lieu de conservation. On peut notamment y indiquer comment s'est effectué le passage de * l'application d'origine au fichier archivable. Correspond à l'historique de la conservation en * ISAD(G). * * @param custodialItem le changement à ajouter */ public void addCustodialItem(CustodialItem custodialItem) { Validate.notNull(custodialItem, SipUtils.NOT_NULL, "custodialItem"); custodialItems.add(custodialItem); } /** * Ajoute un changement à la liste des changements. La liste contient les changements successifs * de propriété, de responsabilité et de conservation des unités d'archives avant leur entrée dans * le lieu de conservation. On peut notamment y indiquer comment s'est effectué le passage de * l'application d'origine au fichier archivable. Correspond à l'historique de la conservation en * ISAD(G). * * @param value l'intitulé du changement à ajouter * @param when la date du changement à ajouter */ public void addCustodialItem(String value, LocalDateTime when) { custodialItems.add(new CustodialItem(value, when)); } /** * Supprime un changement à la liste des changements. La liste contient les changements successifs * de propriété, de responsabilité et de conservation des unités d'archives avant leur entrée dans * le lieu de conservation. On peut notamment y indiquer comment s'est effectué le passage de * l'application d'origine au fichier archivable. Correspond à l'historique de la conservation en * ISAD(G). * * @param custodialItem le changement à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeCustodialItem(CustodialItem custodialItem) { Validate.notNull(custodialItem, SipUtils.NOT_NULL, "custodialItem"); return custodialItems.remove(custodialItem); } /** * Fournit la liste des changements successifs de propriété, de responsabilité et de conservation * des unités d'archives avant leur entrée dans le lieu de conservation. * * @return la liste des changements */ public List getCustodialItems() { return new ArrayList<>(custodialItems); } /** * Indique le type d’information au sens de l’OAIS (information de représentation, information de * pérennisation, etc.). * * @return le type */ public String getType() { return type; } /** * Spécifie le type d’information au sens de l’OAIS (information de représentation, information de * pérennisation, etc.). * * @param type le type */ public void setType(String type) { this.type = type; } /** * Indique le type de document au sens diplomatique du terme (ex. compte rendu de réunion, note, * correspondance, etc.). * * @return le type de document */ public String getDocumentType() { return documentType; } /** * Spécifie le type de document au sens diplomatique du terme (ex. compte rendu de réunion, note, * correspondance, etc.). * * @param documentType le type de document */ public void setDocumentType(String documentType) { this.documentType = documentType; } /** * Ajoute la langue à la liste des langues du contenu des objets binaires ou physiques. * * @param language la langue à ajouter */ public void addLanguage(String language) { Validate.notNull(language, SipUtils.NOT_NULL, "language"); languages.add(language); } /** * Supprime la langue à la liste des langues du contenu des objets binaires ou physiques. * * @param language la langue à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeLanguage(String language) { Validate.notNull(language, SipUtils.NOT_NULL, "language"); return languages.remove(language); } /** * Fournit la liste des langues du contenu des objets binaires ou physiques. * * @return la liste des langues */ public List getLanguages() { return new ArrayList<>(languages); } /** * Indique la langue utilisée pour les métadonnées de description. * * @return la langue */ public String getDescriptionLanguage() { return descriptionLanguage; } /** * Spécifie la langue utilisée pour les métadonnées de description. * * @param descriptionLanguage la langue */ public void setDescriptionLanguage(String descriptionLanguage) { this.descriptionLanguage = descriptionLanguage; } /** * Indique l'état de l'objet binaire ou physique (par rapport avec son cycle de vie). L'état * permet par exemple d'indiquer si la signature du fichier a été vérifiée avant le transfert aux * archives. * * @return la statut */ public String getStatus() { return status; } /** * Spécifie l'état de l'objet binaire ou physique (par rapport avec son cycle de vie). L'état * permet par exemple d'indiquer si la signature du fichier a été vérifiée avant le transfert aux * archives. * * @param status la statut */ public void setStatus(String status) { this.status = status; } /** * Indique la version du document. * * @return la version */ public String getVersion() { return version; } /** * Spécifie la version du document. * * @param version la version */ public void setVersion(String version) { this.version = version; } /** * Indique le service producteur. Il s'agit d'une personne physique ou morale, publique ou privée, * qui a produit, reçu et conservé des archives dans l'exercice de son activité. * * @return le service producteur */ public Agency getOriginatingAgency() { return originatingAgency; } /** * Spécifie le service producteur. Il s'agit d'une personne physique ou morale, publique ou * privée, qui a produit, reçu et conservé des archives dans l'exercice de son activité. * * @param originatingAgency le service producteur */ public void setOriginatingAgency(Agency originatingAgency) { this.originatingAgency = originatingAgency; } /** * Indique le service versant responsable du transfert des données. * * @return le service versant */ public Agency getSubmissionAgency() { return submissionAgency; } /** * Spécifie le service versant responsable du transfert des données. * * @param submissionAgency le service versant */ public void setSubmissionAgency(Agency submissionAgency) { this.submissionAgency = submissionAgency; } /** * Ajoute un titulaire à la liste des titulaires des droits de propriété intellectuelle. * * @param authorizedAgent le titulaire à ajouter */ public void addAuthorizedAgent(Agent authorizedAgent) { Validate.notNull(authorizedAgent, SipUtils.NOT_NULL, "authorizedAgent"); authorizedAgents.add(authorizedAgent); } /** * Supprime un titulaire à la liste des titulaires des droits de propriété intellectuelle. * * @param authorizedAgent le titulaire à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeAuthorizedAgent(Agent authorizedAgent) { Validate.notNull(authorizedAgent, SipUtils.NOT_NULL, "authorizedAgent"); return authorizedAgents.remove(authorizedAgent); } /** * Fournit la liste des titulaires des droits de propriété intellectuelle. * * @return la liste des titulaires */ public List getAuthorizedAgents() { return new ArrayList<>(authorizedAgents); } /** * Ajoute un rédacteur à la liste des rédacteurs de l’unité d'archive. * * @param writer le rédacteur à ajouter */ public void addWriter(Agent writer) { Validate.notNull(writer, SipUtils.NOT_NULL, "writer"); writers.add(writer); } /** * Supprime un rédacteur de la liste des rédacteurs de l’unité d'archive. * * @param writer le rédacteur à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeWriter(Agent writer) { Validate.notNull(writer, SipUtils.NOT_NULL, "writer"); return writers.remove(writer); } /** * Fournit la liste des rédacteurs de l’unité d'archive. * * @return la liste des rédacteurs */ public List getWriters() { return new ArrayList<>(writers); } /** * Ajoute un destinataire à la liste des destinataires pour action. Utilisé pour indiquer le nom * du destinataire par exemple dans un courrier électronique. * * @param addressee le destinataire à ajouter */ public void addAddressee(Agent addressee) { Validate.notNull(addressee, SipUtils.NOT_NULL, "addressee"); addressees.add(addressee); } /** * Supprime un destinataire de la liste des destinataires pour action. Utilisé pour indiquer le * nom du destinataire par exemple dans un courrier électronique. * * @param addressee le destinataire à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeAddressee(Agent addressee) { Validate.notNull(addressee, SipUtils.NOT_NULL, "addressee"); return addressees.remove(addressee); } /** * Fournit la liste des destinataires pour action. Utilisé pour indiquer le nom du destinataire * par exemple dans un courrier électronique. * * @return la liste des destinataires pour action */ public List getAddressees() { return new ArrayList<>(addressees); } /** * Ajoute un destinataire à la liste des destinataires pour information. Utilisé pour indiquer le * nom du destinataire en copie, pour information, par exemple dans un courrier électronique. * * @param recipient le destinataire à ajouter */ public void addRecipient(Agent recipient) { Validate.notNull(recipient, SipUtils.NOT_NULL, "recipient"); recipients.add(recipient); } /** * Supprime un destinataire de la liste des destinataires pour information. Utilisé pour indiquer * le nom du destinataire en copie, pour information, par exemple dans un courrier électronique. * * @param recipient le destinataire à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeRecipient(Agent recipient) { Validate.notNull(recipient, SipUtils.NOT_NULL, "recipient"); return recipients.remove(recipient); } /** * Fournit la liste des destinataires pour information. Utilisé pour indiquer le nom du * destinataire en copie, pour information, par exemple dans un courrier électronique. * * @return la liste des destinataires pour information */ public List getRecipients() { return new ArrayList<>(recipients); } /** * Ajoute un émetteur à la liste des émetteurs du message. * * @param transmitter l'émetteur du message à ajouter */ public void addTransmitter(Agent transmitter) { Validate.notNull(transmitter, SipUtils.NOT_NULL, "transmitter"); transmitters.add(transmitter); } /** * Supprime un émetteur de la liste des émetteurs du message. * * @param transmitter l'émetteur du message à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeTransmitter(Agent transmitter) { Validate.notNull(transmitter, SipUtils.NOT_NULL, "transmitter"); return transmitters.remove(transmitter); } /** * Fournit la liste des émetteurs du message. * * @return la liste des émetteurs du message */ public List getTransmitters() { return new ArrayList<>(transmitters); } /** * Ajoute un expéditeur à la liste des expéditeurs du message. * * @param sender l'expéditeur à ajouter */ public void addSender(Agent sender) { Validate.notNull(sender, SipUtils.NOT_NULL, "sender"); senders.add(sender); } /** * Supprime un expéditeur de la liste des expéditeurs du message. * * @param sender l'expéditeur à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeSender(Agent sender) { Validate.notNull(sender, SipUtils.NOT_NULL, "sender"); return senders.remove(sender); } /** * Fournit la liste des expéditeurs du message. * * @return la liste des expéditeurs du message */ public List getSenders() { return new ArrayList<>(senders); } /** * Indique la référence à la source papier originale. * * @return la source */ public String getSource() { return source; } /** * Spécifie la référence à la source papier originale. * * @param source la source */ public void setSource(String source) { this.source = source; } /** * Indique la référence à un objet faisant ou ne faisant pas partie du présent paquet * d'information. * * @return la référence */ public RelatedObjectRef getRelation() { return relation; } /** * Spécifie la référence à un objet faisant ou ne faisant pas partie du présent paquet * d'information. * * @param relation la référence */ public void setRelation(RelatedObjectRef relation) { this.relation = relation; } /** * Ajoute une signature à la liste des informations relatives à la signature. * * @param signature la signature à ajouter */ public void addSignature(Signature signature) { Validate.notNull(signature, SipUtils.NOT_NULL, "signature"); signatures.add(signature); } /** * Supprime une signature à la liste des informations relatives à la signature. * * @param signature la signature à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeSignature(Signature signature) { Validate.notNull(signature, SipUtils.NOT_NULL, "signature"); return signatures.remove(signature); } /** * Fournit la liste des informations relatives à la signature. * * @return la liste des informations relatives à la signature */ public List getSignatures() { return new ArrayList<>(signatures); } /** * Indique l'identifiant de la version du GPS. * * @return l 'identifiant */ public String getGpsVersionID() { return gpsVersionID; } /** * Spécifie l'identifiant de la version du GPS. * * @param gpsVersionID l'identifiant */ public void setGpsVersionID(String gpsVersionID) { this.gpsVersionID = gpsVersionID; } /** * Indique l'altitude basée sur la référence dans GPSAltitudeRef. L'altitude est exprimée en * mètres. * * @return l 'altitude */ public String getGpsAltitude() { return gpsAltitude; } /** * Spécifie l'altitude basée sur la référence dans GPSAltitudeRef. L'altitude est exprimée en * mètres. * * @param gpsAltitude l'altitude */ public void setGpsAltitude(String gpsAltitude) { this.gpsAltitude = gpsAltitude; } /** * Indique l'altitude utilisée comme altitude de référence. Si l'altitude est au-dessus du niveau * de la mer, la valeur 0 est normalement donnée. Si l'altitude est au-dessous du niveau de la * mer, la valeur 1 est donnée. * * @return l'altitude de référence */ public String getGpsAltitudeRef() { return gpsAltitudeRef; } /** * Spécifie l'altitude utilisée comme altitude de référence. Si l'altitude est au-dessus du niveau * de la mer, la valeur 0 est normalement donnée. Si l'altitude est au-dessous du niveau de la * mer, la valeur 1 est donnée. * * @param gpsAltitudeRef l'altitude de référence */ public void setGpsAltitudeRef(String gpsAltitudeRef) { this.gpsAltitudeRef = gpsAltitudeRef; } /** * Indique la latitude. La latitude qui peut être exprimée de deux manières différentes : degrés, * décimaux ou degrés, minutes et secondes. Si la latitude est exprimée en degrés, décimaux, le * format type est dd, dd. Par exemple : "45.3130339". Si la latitude est exprimée en degrés, * minutes et secondes, le format type est dd, mm, ss. Par exemple : "45 18 46.922". * * @return la latitude */ public String getGpsLatitude() { return gpsLatitude; } /** * Spécifie la latitude. La latitude qui peut être exprimée de deux manières différentes : degrés, * décimaux ou degrés, minutes et secondes. Si la latitude est exprimée en degrés, décimaux, le * format type est dd, dd. Par exemple : "45.3130339". Si la latitude est exprimée en degrés, * minutes et secondes, le format type est dd, mm, ss. Par exemple : "45 18 46.922". * * @param gpsLatitude la latitude */ public void setGpsLatitude(String gpsLatitude) { this.gpsLatitude = gpsLatitude; } /** * Indique la latitude. La valeur 'N' indique la latitude nord, et 'S' indique la latitude sud. * * @return la latitude de référence */ public String getGpsLatitudeRef() { return gpsLatitudeRef; } /** * Spécifie la latitude. La valeur 'N' indique la latitude nord, et 'S' indique la latitude sud. * * @param gpsLatitudeRef la latitude de référence */ public void setGpsLatitudeRef(String gpsLatitudeRef) { this.gpsLatitudeRef = gpsLatitudeRef; } /** * Indique la longitude. La longitude peut être exprimée de deux manières différentes : degrés, * décimaux ou degrés, minutes et secondes. Si la longitude est exprimée en degrés, décimaux, le * format type est dd, dd. Par exemple : "5.392285833333334". Si la longitude est exprimée en * degrés, minutes et secondes, le format type est dd, mm, ss. Par exemple : "5 23 32.229". * * @return la longitude */ public String getGpsLongitude() { return gpsLongitude; } /** * Spécifie la longitude. La longitude peut être exprimée de deux manières différentes : degrés, * décimaux ou degrés, minutes et secondes. Si la longitude est exprimée en degrés, décimaux, le * format type est dd, dd. Par exemple : "5.392285833333334". Si la longitude est exprimée en * degrés, minutes et secondes, le format type est dd, mm, ss. Par exemple : "5 23 32.229". * * @param gpsLongitude la longitude */ public void setGpsLongitude(String gpsLongitude) { this.gpsLongitude = gpsLongitude; } /** * Indique la longitude. La valeur 'E' indique la longitude EST, et 'W' indique la longitude * OUEST. * * @return la longitude de référence */ public String getGpsLongitudeRef() { return gpsLongitudeRef; } /** * Spécifie la longitude. La valeur 'E' indique la longitude EST, et 'W' indique la longitude * OUEST. * * @param gpsLongitudeRef la longitude de référence */ public void setGpsLongitudeRef(String gpsLongitudeRef) { this.gpsLongitudeRef = gpsLongitudeRef; } /** * Indique l'heure et la date de la position GPS. * * @return la date et l'heure */ public String getGpsDateStamp() { return gpsDateStamp; } /** * Spécifie l'heure et la date de la position GPS. * * @param gpsDateStamp la date et l'heure */ public void setGpsDateStamp(String gpsDateStamp) { this.gpsDateStamp = gpsDateStamp; } /** * Indique la date de création. * * @return la date de création */ public LocalDate getCreatedDate() { return createdDate; } /** * Spécifie la date de création. * * @param createdDate la date de création */ public void setCreatedDate(LocalDate createdDate) { this.createdDate = createdDate; } /** * Indique la date de la transaction. * * @return la date de la transaction */ public LocalDate getTransactedDate() { return transactedDate; } /** * Spécifie la date de la transaction. * * @param transactedDate la date de la transaction */ public void setTransactedDate(LocalDate transactedDate) { this.transactedDate = transactedDate; } /** * Indique la date de numérisation. * * @return la date de numérisation */ public LocalDate getAcquiredDate() { return acquiredDate; } /** * Spécifie la date de numérisation. * * @param acquiredDate la date de numérisation */ public void setAcquiredDate(LocalDate acquiredDate) { this.acquiredDate = acquiredDate; } /** * Indique la date d'envoi. * * @return la date d'envoi */ public LocalDate getSentDate() { return sentDate; } /** * Spécifie la date d'envoi. * * @param sentDate la date d'envoi */ public void setSentDate(LocalDate sentDate) { this.sentDate = sentDate; } /** * Indique la date de réception. * * @return la date de réception */ public LocalDate getReceivedDate() { return receivedDate; } /** * Spécifie la date de réception. * * @param receivedDate la date de réception */ public void setReceivedDate(LocalDate receivedDate) { this.receivedDate = receivedDate; } /** * Indique la date d'enregistrement. * * @return la date d'enregistrement */ public LocalDate getRegisteredDate() { return registeredDate; } /** * Spécifie la date d'enregistrement. * * @param registeredDate la date d'enregistrement. */ public void setRegisteredDate(LocalDate registeredDate) { this.registeredDate = registeredDate; } /** * Indique la date d'ouverture / date de début. * * @return la date de début */ public LocalDate getStartDate() { return startDate; } /** * Spécifie la date d'ouverture / date de début. * * @param startDate la date de début */ public void setStartDate(LocalDate startDate) { this.startDate = startDate; } /** * Indique la date de fermeture ou la date de fin. * * @return la date de fin */ public LocalDate getEndDate() { return endDate; } /** * Spécifie la date de fermeture ou la date de fin. * * @param endDate la date de fin */ public void setEndDate(LocalDate endDate) { this.endDate = endDate; } /** * Ajoute des mot-clés à la liste de mots-clés de description. * * @param values les mot-clés à ajouter */ public void addTags(String... values) { for (String value : values) { tags.add(new Tag(null, value)); } } /** * Ajoute un mot-clé à la liste de mots-clés de description. * * @param tag le mot-clé à ajouter */ public void addTag(Tag tag) { Validate.notNull(tag, SipUtils.NOT_NULL, "tag"); tags.add(tag); } /** * Ajoute une valeur à la liste de mots-clés de description. * * @param value la valeur à ajouter */ public void addTag(String value) { tags.add(new Tag(null, value)); } /** * Ajoute une clé et une valeur à la liste de mots-clés de description. * * @param key la clé du mot-clé * @param value la valeur du mot-clé */ public void addTag(String key, String value) { tags.add(new Tag(key, value)); } /** * Supprime un mot-clé de la liste de mots-clés de description. * * @param tag le mot-clé à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeTag(Tag tag) { Validate.notNull(tag, SipUtils.NOT_NULL, "tag"); return tags.remove(tag); } /** * Fournit la liste de mots-clés de description. * * @return la liste de mots-clés de description */ public List getTags() { return new ArrayList<>(tags); } /** * Ajoute une unité d'archive à la liste d'autres unités d'archives contenues dans cette unité * d'archive. * * @param archiveUnit l'unité d'archive */ @Override public void addArchiveUnit(ArchiveUnit archiveUnit) { Validate.notNull(archiveUnit, SipUtils.NOT_NULL, "archiveUnit"); archiveUnits.add(archiveUnit); } /** * Supprime une unité d'archive de la liste d'autres unités d'archives contenues dans cette unité * d'archive. * * @param archiveUnit l'unité d'archive à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ @Override public boolean removeArchiveUnit(ArchiveUnit archiveUnit) { Validate.notNull(archiveUnit, SipUtils.NOT_NULL, "archiveUnit"); return archiveUnits.remove(archiveUnit); } /** * Fournit la liste d'autres unités d'archives contenues dans cette unité d'archive. * * @return la liste d'autres unités d'archives */ @Override public List getArchiveUnits() { return new ArrayList<>(archiveUnits); } /** * Ajoute une référence d'unité d'archive à la liste d'autres unités d'archives référencées par * cette unité d'archive * * @param reference référence à l'unité d'archive */ public void addReference(ArchiveUnitRef reference) { Validate.notNull(reference, SipUtils.NOT_NULL, "reference"); references.add(reference); } /** * Supprime une référence d'unité d'archive de la liste d'autres références d'unités d'archives * contenues dans cette unité d'archive. * * @param reference la référence d'unité d'archive à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeReference(ArchiveUnitRef reference) { Validate.notNull(reference, SipUtils.NOT_NULL, "reference"); return references.remove(reference); } /** * Fournit la liste d'autres références d'unités d'archives contenues dans cette unité d'archive. * * @return la liste d'autres références d'unités d'archives */ public List getReferences() { return new ArrayList<>(references); } /** * Ajoute l'élément à la liste des éléments étendus qui n'appartiennent pas à l'ontolgie standard. * * @param element l'élément à ajouter */ public void addElement(String element) { Validate.notNull(element, SipUtils.NOT_NULL, "element"); elements.add(element); } /** * Supprime un élément de la liste des éléments étendus qui n'appartiennent pas à l'ontologie * standard. * * @param element l'élément à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeElement(String element) { Validate.notNull(element, SipUtils.NOT_NULL, "element"); return elements.remove(element); } /** * Ajoute un élément à la liste des éléments étendus qui n'appartiennent pas à l'ontologie * standard. * * @param element l'élément à ajouter */ public void addElement(Element element) { Validate.notNull(element, SipUtils.NOT_NULL, "element"); elements.add(element); } /** * Fournit le premier élément dont le "name" correspond à "elementName" dans la liste des éléments * étendus. Note. La recherche s'effectue uniquement sur les objets de type Element (et pas de * type String). * * @param elementName le nom de l'élément recherché * @return l'élément trouvé sinon null */ public Element getFirstElement(String elementName) { Validate.notNull(elementName, SipUtils.NOT_NULL, "elementName"); for (Object e : elements) { if (e instanceof Element element) { if (elementName.equals(element.getName())) { return element; } } } return null; } /** * Fournit la liste des éléments dont le "name" correspond à "elementName" dans la liste des * éléments étendus. Note. La recherche s'effectue uniquement sur les objets de type Element (et * pas de type String). * * @param elementName le nom des éléments recherchés * @return la liste des éléments trouvés */ public List getElements(String elementName) { Validate.notNull(elementName, SipUtils.NOT_NULL, "elementName"); List els = new ArrayList<>(); for (Object e : elements) { if (e instanceof Element element) { if (elementName.equals(element.getName())) { els.add(element); } } } return els; } /** * Supprime un élément de la liste des éléments étendus qui n'appartiennent pas à l'ontologie * standard. * * @param element l'élément à supprimer * @return true si la suppression a été réalisée avec succès, sinon false */ public boolean removeElement(Element element) { Validate.notNull(element, SipUtils.NOT_NULL, "element"); return elements.remove(element); } /** * Fournit la liste des éléments étendus qui n'appartiennent pas à l'ontologie standard. * * @return la liste des éléments étendus */ public List getElements() { return new ArrayList<>(elements); } }