Commit a1a792db authored by marceteau's avatar marceteau
Browse files

ajout ghost AU pour seda1 + refactor + mapping seda 1

parent 4abd5f49
......@@ -366,6 +366,52 @@ public abstract class AbstractArchiveConverter implements ManifestConverter {
//TODO : lever une exception car on n'a pas de fichier properties
return null;
}
/**
* cherche la ligne contenant le bon planClassement dans le fichier voulu
* puis retourne un tableau de string contenant les valeurs planClassement, sydtemId, descriptionLevel, title
* la ligne qui ne contient qu'un "/" est considérée comme valeur par défaut dans le cas où le plan de classement n'est pas trouvé dans la liste
*
* @param filePath
* @param planClassement
* @return
* @throws Exception
*/
public static String[] filePlanData(String filePath, String planClassement) {
try(BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String ligne = null;
planClassement = planClassement.trim();
//Si planClassement termine ou commence par un / on le retire
if(planClassement.endsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(0, planClassement.length() - 1);
if(planClassement.startsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(1, planClassement.length());
while ((ligne = br.readLine()) != null)
{
// Retourner la ligne dans un tableau
String[] data = ligne.split("\t");
if (data.length == 4) {
String planClassementFile = data[0].trim();
if(planClassement.equals(planClassementFile)) {
br.close();
return data;
}
}
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//TODO : lever une exception car on n'a pas d'équivalent dans le fichier de référence
return null;
}
public String detectLanguage(String string) {
detector.setShortText(true);
LanguageResult result = detector.detect(string);
......
......@@ -285,7 +285,7 @@ public class ArchiveConverterMain {
archiveConverter.setOnlyManifest(true);
((AbstractArchiveConverter)archiveConverter).setSipType(formalism);
}else if(formalism.equals("seda1")) {
archiveConverter = new Seda1ToSeda21Converter();
archiveConverter = new Seda1ToSeda21Converter(this.planClassementFile.toString());
archiveConverter.setOnlyManifest(true);
}else {
throw new IllegalArgumentException("Ce formalisme n'est pas reconnu, veuillez choisir sip, aip ou seda1");
......@@ -301,6 +301,8 @@ public class ArchiveConverterMain {
} catch (IngestRejectException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
......@@ -334,7 +336,7 @@ public class ArchiveConverterMain {
archiveConverter = new DCToSeda21TarMaker(this.agency, null, formalism);
}
}else if(formalism.equals("seda1")) {
archiveConverter = new Seda1ToSeda21TarMaker(this.agency);
archiveConverter = new Seda1ToSeda21TarMaker(this.agency, this.planClassementFile.toString());
}else {
System.err.println("Ce formalisme n'est pas reconnu, veuillez choisir sip ou seda1");
throw new IllegalArgumentException("Ce formalisme n'est pas reconnu, veuillez choisir sip ou seda1");
......@@ -364,7 +366,8 @@ public class ArchiveConverterMain {
currentArchivePath = Paths.get(file.getAbsolutePath());
try {
File convertedArchive = ac.convert(file.toPath(), agency, propertiesFolder);
convertedArchiveList.add(convertedArchive);
if(convertedArchive != null)
convertedArchiveList.add(convertedArchive);
} catch (DuplicateLanguageException e) {
manageLanguageRejectException(e);
} catch (IngestRejectException e) {
......
......@@ -263,7 +263,7 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
this.rootFolder = Paths.get("DEPOT");
}
public static void main(String[] args) throws FileNotFoundException, IngestRejectException {
public static void main(String[] args) throws FileNotFoundException, IngestRejectException, Exception {
String agency = args[0];
Path propertiesFolder = Paths.get(args[1]);
String filePlanPath = args[2];
......@@ -617,46 +617,7 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
filePlan = sip.getDocMeta().getPlanClassement().getValue();
}
try {
if(planClassementFilePath == null || planClassementFilePath.equals(""))
throw new Exception("Aucun fichier de plan de classement fourni "
+ "alors que les propriétés demandent sa génération. "
+ "Ajoutez-le en entrée avec l'option -p ");
String[] filePlanLine = filePlanData(planClassementFilePath, filePlan);
if (filePlanLine!=null) {
String systemId = filePlanLine[1];
String descriptionLevelStr = filePlanLine[2];
TextType title = objectFactory.createTextType();
title.setValue(filePlanLine[3]);
//Ajout de l'Archive Unit fantome
ArchiveUnitType ghostArchiveUnit = objectFactory.createArchiveUnitType();
ArchiveUnitType ghostArchiveUnitAttachment = objectFactory.createArchiveUnitType();
descriptiveMetadata.getArchiveUnit().add(ghostArchiveUnit);
archiveUnitCounter++;
ghostArchiveUnit.setId("ID" + archiveUnitCounter);
archiveUnitCounter++;
ghostArchiveUnitAttachment.setId("ID" + archiveUnitCounter);
ghostArchiveUnitAttachment.setArchiveUnitRefId(rootArchiveUnit);
DescriptiveMetadataContentType ghostContent = objectFactory.createDescriptiveMetadataContentType();
ManagementType ghostManagement = objectFactory.createManagementType();
ghostContent.setDescriptionLevel(LevelType.fromValue(descriptionLevelStr));
ghostContent.getTitle().add(title);
UpdateOperationType updateOperation = objectFactory.createUpdateOperationType();
updateOperation.setSystemId(systemId);
ghostManagement.setUpdateOperation(updateOperation);
ghostArchiveUnit.setManagement(ghostManagement);
ghostArchiveUnit.setContent(ghostContent);
ghostArchiveUnit.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().add(ghostArchiveUnitAttachment);
}
} catch (Exception e) {
e.printStackTrace();
}
addGhostArchiveUnit(rootArchiveUnit, descriptiveMetadata, filePlan);
}
String idDocProducteurTarget = properties.getProperty(IDENTIFIANT_DOC_PRODUCTEUR);
......@@ -818,6 +779,55 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
return dataObjectPackage;
}
/**
* @param rootArchiveUnit
* @param descriptiveMetadata
* @param filePlan
*/
private void addGhostArchiveUnit(ArchiveUnitType rootArchiveUnit, DescriptiveMetadataType descriptiveMetadata,
String filePlan) {
try {
if(planClassementFilePath == null || planClassementFilePath.equals(""))
throw new Exception("Aucun fichier de plan de classement fourni "
+ "alors que les propriétés demandent sa génération. "
+ "Ajoutez-le en entrée avec l'option -p ");
String[] filePlanLine = filePlanData(planClassementFilePath, filePlan);
if (filePlanLine!=null) {
String systemId = filePlanLine[1];
String descriptionLevelStr = filePlanLine[2];
TextType title = objectFactory.createTextType();
title.setValue(filePlanLine[3]);
//Ajout de l'Archive Unit fantome
ArchiveUnitType ghostArchiveUnit = objectFactory.createArchiveUnitType();
ArchiveUnitType ghostArchiveUnitAttachment = objectFactory.createArchiveUnitType();
descriptiveMetadata.getArchiveUnit().add(ghostArchiveUnit);
archiveUnitCounter++;
ghostArchiveUnit.setId("ID" + archiveUnitCounter);
archiveUnitCounter++;
ghostArchiveUnitAttachment.setId("ID" + archiveUnitCounter);
ghostArchiveUnitAttachment.setArchiveUnitRefId(rootArchiveUnit);
DescriptiveMetadataContentType ghostContent = objectFactory.createDescriptiveMetadataContentType();
ManagementType ghostManagement = objectFactory.createManagementType();
ghostContent.setDescriptionLevel(LevelType.fromValue(descriptionLevelStr));
ghostContent.getTitle().add(title);
UpdateOperationType updateOperation = objectFactory.createUpdateOperationType();
updateOperation.setSystemId(systemId);
ghostManagement.setUpdateOperation(updateOperation);
ghostArchiveUnit.setManagement(ghostManagement);
ghostArchiveUnit.setContent(ghostContent);
ghostArchiveUnit.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().add(ghostArchiveUnitAttachment);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Cette fonction sert à reformer l'ark depuis un identifiant provenant de PAC (qui est unique)
* Pour ce faire, on utilise la liste complète de tous les ark provenant d'arcsys qui doit être disponible localement dans
......@@ -1950,54 +1960,6 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
return list;
}
/**
* cherche la ligne contenant le bon planClassement dans le fichier voulu
* puis retourne un tableau de string contenant les valeurs planClassement, sydtemId, descriptionLevel, title
* la ligne qui ne contient qu'un "/" est considérée comme valeur par défaut dans le cas où le plan de classement n'est pas trouvé dans la liste
*
* @param filePath
* @param planClassement
* @return
* @throws Exception
*/
public static String[] filePlanData(String filePath, String planClassement)
{
try(BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String ligne = null;
planClassement = planClassement.trim();
//Si planClassement termine ou commence par un / on le retire
if(planClassement.endsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(0, planClassement.length() - 1);
if(planClassement.startsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(1, planClassement.length());
while ((ligne = br.readLine()) != null)
{
// Retourner la ligne dans un tableau
String[] data = ligne.split("\t");
if (data.length == 4) {
String planClassementFile = data[0].trim();
if(planClassement.equals(planClassementFile)) {
br.close();
return data;
}
}
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//TODO : lever une exception car on n'a pas d'équivalent dans le fichier de référence
return null;
}
public List<DataObjectMapper> getDataObjectMapper() {
return dataObjectMapper;
}
......
......@@ -163,6 +163,9 @@ public class DCToSeda21TarMaker implements ArchiveConverter {
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
......
......@@ -26,8 +26,9 @@ public interface ManifestConverter {
* @param convertedManifest
* @return
* @throws IngestRejectException
* @throws Exception
*/
ArchiveTransferType convertManifest(File originalManifest, File convertedManifest, String agency, Path propertiesFolder) throws FileNotFoundException, DuplicateLanguageException, IngestRejectException;
ArchiveTransferType convertManifest(File originalManifest, File convertedManifest, String agency, Path propertiesFolder) throws FileNotFoundException, DuplicateLanguageException, IngestRejectException, Exception;
public boolean isOnlyManifest();
......
......@@ -78,7 +78,6 @@ import fr.gouv.culture.archivesdefrance.seda.v1.CustodialHistoryType;
import fr.gouv.culture.archivesdefrance.seda.v1.DocumentType;
import fr.gouv.culture.archivesdefrance.seda.v1.OrganizationType;
import fr.gouv.culture.archivesdefrance.seda.v1_0.qualifieddatatype._1.ArchivesBinaryObjectType;
import fr.gouv.culture.archivesdefrance.seda.v1_0.qualifieddatatype._1.ArchivesDurationType;
import fr.gouv.culture.archivesdefrance.seda.v1_0.qualifieddatatype._1.ArchivesHashcodeBinaryObjectType;
import fr.gouv.culture.archivesdefrance.seda.v1_0.qualifieddatatype._1.ArchivesIDType;
import fr.gouv.culture.archivesdefrance.seda.v1_0.qualifieddatatype._1.CodeAccessRestrictionType;
......@@ -103,11 +102,13 @@ import fr.gouv.culture.archivesdefrance.seda.v2.FormatIdentificationType;
import fr.gouv.culture.archivesdefrance.seda.v2.IdentifierType;
import fr.gouv.culture.archivesdefrance.seda.v2.LevelType;
import fr.gouv.culture.archivesdefrance.seda.v2.ManagementMetadataType;
import fr.gouv.culture.archivesdefrance.seda.v2.ManagementType;
import fr.gouv.culture.archivesdefrance.seda.v2.MessageDigestBinaryObjectType;
import fr.gouv.culture.archivesdefrance.seda.v2.ObjectFactory;
import fr.gouv.culture.archivesdefrance.seda.v2.OrganizationDescriptiveMetadataType;
import fr.gouv.culture.archivesdefrance.seda.v2.OrganizationWithIdType;
import fr.gouv.culture.archivesdefrance.seda.v2.RuleIdType;
import fr.gouv.culture.archivesdefrance.seda.v2.UpdateOperationType;
import un.unece.uncefact.codelist.draft.daf.appraisalcode._2009_08_18.AppraisalCodeType;
import un.unece.uncefact.codelist.draft.daf.descriptionlevelcode._2009_08_18.LevelDescriptionType;
import un.unece.uncefact.codelist.draft.daf.documenttypecode._2009_08_18.DocumentTypeCodeType;
......@@ -140,6 +141,8 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
int archiveUnitCounter = 0;
//variables liées au fichier properties
private static final String MAP_FILE_PLAN = "FilePlanPosition";
private static final String APPRAISAL_RULE = "AppraisalRule_Rule";
private static final String ORIGINATING_AGENCY_IDENTIFIER = "OriginatingAgencyIdentifier";
private static final String ORIGINATING_AGENCY_IDENTIFIER_BOOL = "OriginatingAgency_Identifier";
......@@ -147,6 +150,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
private static final String ARCHIVAL_AGENCY_IDENTIFIER = "ArchivalAgency_Identifier";
private static final String TRANSFERRING_AGENCY_IDENTIFIER = "TransferringAgency_Identifier";
private String planClassementFilePath;
/**
* Le répertoire déposé, celui contenant le bordereau
*/
......@@ -187,13 +191,14 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
private Properties properties;
public Seda1ToSeda21Converter() {
public Seda1ToSeda21Converter(String planClassementPath) {
informationPackage = new InformationPackage();
ValidatorFactory vf = new ValidatorFactory();
validator = vf.createValidator();
planClassementFilePath = planClassementPath;
}
public fr.gouv.culture.archivesdefrance.seda.v2.ArchiveTransferType convertManifest(File originalManifest, File convertedManifest, String Agency, Path propertiesFolder) throws FileNotFoundException {
public fr.gouv.culture.archivesdefrance.seda.v2.ArchiveTransferType convertManifest(File originalManifest, File convertedManifest, String Agency, Path propertiesFolder) throws FileNotFoundException, Exception {
this.rootFolder = Paths.get(originalManifest.getAbsolutePath()).getParent();
this.dataContentFolder = null;
this.archiveType = "ArchiveTransfer.xml";
......@@ -207,7 +212,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
}
originalManifest = this.rootFolder.resolve(this.archiveType).toFile();
InputStream inputStream = new FileInputStream(originalManifest);
try {
JAXBContext jc = JAXBContext.newInstance(ArchiveTransferType.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
Source source = new StreamSource(inputStream);
......@@ -264,10 +269,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
marshaller.marshal(manifest, os);
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
}
// Création de InformationPackage
// On peuple avec les dataObjects, seul le chemin original e st gardé
......@@ -439,6 +441,24 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
// content.getFilePlanPosition().add(filePlan.getValue());
// }
// Plan de classement
String generateFilePlan = properties.getProperty(MAP_FILE_PLAN);
if (!generateFilePlan.trim().equalsIgnoreCase("false")) {
String filePlan;
if ((currentArchive.getContentDescription().getFilePlanPosition() == null)
|| (currentArchive.getContentDescription().getFilePlanPosition().get(0) == null)) {
filePlan = "/";
} else {
filePlan = currentArchive.getContentDescription().getFilePlanPosition().get(0).getValue();
}
addGhostArchiveUnit(objectFactory, descriptiveMetadata, rootArchiveUnit, filePlan);
}
// Identifiant du service versant d'origine - peut être null
ArchivesIDType origAgencyId = currentArchive.getOriginatingAgencyArchiveIdentifier();
......@@ -536,6 +556,56 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
return dataObjectPackage;
}
/**
* @param objectFactory
* @param descriptiveMetadata
* @param rootArchiveUnit
* @param filePlan
*/
private void addGhostArchiveUnit(ObjectFactory objectFactory, DescriptiveMetadataType descriptiveMetadata,
ArchiveUnitType rootArchiveUnit, String filePlan) {
try {
if(planClassementFilePath == null || planClassementFilePath.equals(""))
throw new Exception("Aucun fichier de plan de classement fourni "
+ "alors que les propriétés demandent sa génération. "
+ "Ajoutez-le en entrée avec l'option -p ");
String[] filePlanLine = filePlanData(planClassementFilePath, filePlan);
if (filePlanLine!=null) {
String systemId = filePlanLine[1];
String descriptionLevelStr = filePlanLine[2];
fr.gouv.culture.archivesdefrance.seda.v2.TextType title = objectFactory.createTextType();
title.setValue(filePlanLine[3]);
//Ajout de l'Archive Unit fantome
ArchiveUnitType ghostArchiveUnit = objectFactory.createArchiveUnitType();
ArchiveUnitType ghostArchiveUnitAttachment = objectFactory.createArchiveUnitType();
descriptiveMetadata.getArchiveUnit().add(ghostArchiveUnit);
archiveUnitCounter++;
ghostArchiveUnit.setId("ID" + archiveUnitCounter);
archiveUnitCounter++;
ghostArchiveUnitAttachment.setId("ID" + archiveUnitCounter);
ghostArchiveUnitAttachment.setArchiveUnitRefId(rootArchiveUnit);
DescriptiveMetadataContentType ghostContent = objectFactory.createDescriptiveMetadataContentType();
ManagementType ghostManagement = objectFactory.createManagementType();
ghostContent.setDescriptionLevel(LevelType.fromValue(descriptionLevelStr));
ghostContent.getTitle().add(title);
UpdateOperationType updateOperation = objectFactory.createUpdateOperationType();
updateOperation.setSystemId(systemId);
ghostManagement.setUpdateOperation(updateOperation);
ghostArchiveUnit.setManagement(ghostManagement);
ghostArchiveUnit.setContent(ghostContent);
ghostArchiveUnit.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().add(ghostArchiveUnitAttachment);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param sip
......@@ -545,13 +615,33 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
ArchiveObjectType archiveObject = new ArchiveObjectType();
TextType name = new TextType();
name.setValue("Certificat d'archivage");
if(type.equalsIgnoreCase("archive.xml")) {
name.setValue("Certificat d'archivage");
} else {
name.setValue("Bordereau de versement");
}
archiveObject.setName(name);
ContentDescriptionType contentDescription = new ContentDescriptionType();
CodeDescriptionLevelType codeDescriptionLevelType = new CodeDescriptionLevelType();
codeDescriptionLevelType.setValue(LevelDescriptionType.ITEM);
contentDescription.setDescriptionLevel(codeDescriptionLevelType);
CodeLanguageType codeLanguageType = new CodeLanguageType();
Locale localeLanguage = new Locale("fra");
codeLanguageType.setValue(localeLanguage );
contentDescription.getLanguage().add(codeLanguageType );
TextType description = new TextType();
if(type.equalsIgnoreCase("archive.xml")) {
description.setValue("Certificat d'archivage produit par PAC au format SEDA 1.0 avant conversion en SEDA 2.1");
} else {
description.setValue("Bordereau de versement au format SEDA 1.0 avant conversion en SEDA 2.1");
}
contentDescription.setDescription(description );
archiveObject.setContentDescription(contentDescription);
DocumentType documentType = new DocumentType();
......@@ -727,7 +817,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
// Avec une référence BinaryDataObject SEDA 2.1
List<DocumentType> documents = archiveObject.getDocument();
for (DocumentType document : documents) {
DataObjectRefType objectRef = buildDataReferenceObject("OID" + document.getId().substring(8));
DataObjectRefType objectRef = buildDataReferenceObject(document.getId());
archiveUnit.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().add(objectRef);
}
......@@ -738,7 +828,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
// dans mapDataObject
if (!archiveObject.getDocument().isEmpty()) {
String id = archiveObject.getDocument().get(0).getId();
int idxDocument = Integer.parseInt(id.replace("IDOBJECT", "")) - 1;
int idxDocument = Integer.parseInt(id.replace("OID", "")) - 1;
BinaryDataObjectTypeWithType correspondingBinaryDataObject = binaryDataObjectWithTypeList.get(idxDocument);
if (!correspondingBinaryDataObject.getCodeType().isEmpty()) {
String valueCodeType = correspondingBinaryDataObject.getCodeType().get(0);
......@@ -879,13 +969,13 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
// Taille du fichier
long size = 0;
binaryDataObject.setId("OID" + Integer.toString(binaryObjectCounter));
binaryDataObject.setId("IDOBJECT" + Integer.toString(binaryObjectCounter));
binaryDataObject.setDataObjectVersion(BINARY_DATA_OBJECT_DEFAULT_VERSION);
// On attribut un ID à l'objet document pour pouvoir associer plus simplement
// les untiés archivistiques et les objets binaires
document.setId("IDOBJECT" + Integer.toString(binaryObjectCounter));
document.setId("OID" + Integer.toString(binaryObjectCounter));
// L'attribut filename va dans le bloc <FileInfo><FileName>..
if (document.getAttachment().getFilename() != null
......@@ -977,7 +1067,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
throw new IngestRejectException("Le checksum du bordereau est différent du checksum calculé pour le fichier : " + document.getAttachment().getFilename(), "EXXX");
}
String algorithm = "SHA-512";
String sha512 = computeChecksum(filePath.toString(), algorithm);
String sha512 = computeChecksum(filePath.toString(), algorithm).toLowerCase();
MessageDigestBinaryObjectType messageDigest = objectFactory.createMessageDigestBinaryObjectType();
messageDigest.setAlgorithm(algorithm);
......
......@@ -57,6 +57,8 @@ import fr.gouv.culture.archivesdefrance.seda.v2.DataObjectGroupType;
public class Seda1ToSeda21TarMaker implements ArchiveConverter {
private static String agency;
private String planClassementPath;
private String outputDir;
private String errorLanguageDir;
......@@ -67,22 +69,23 @@ public class Seda1ToSeda21TarMaker implements ArchiveConverter {
public static Logger logger = LoggerFactory.getLogger(Seda1ToSeda21TarMaker.class);
public Seda1ToSeda21TarMaker(String agency) {
public Seda1ToSeda21TarMaker(String agency, String planClassementPath) {
new TarMakerImpl();
this.sipFileName = "ArchiveTransfer.xml";
this.planClassementPath = planClassementPath;
}
public static void main(String[] args) throws DuplicateLanguageException, IngestRejectException {
System.out.println(args[0]);
String archiveFolder = args[0];
Seda1ToSeda21TarMaker converter = new Seda1ToSeda21TarMaker("");
Seda1ToSeda21TarMaker converter = new Seda1ToSeda21TarMaker("", "");
File archiveSeda21 = converter.convert(Paths.get(archiveFolder).toAbsolutePath(), agency, propertiesFolder);
System.out.println("Archive SEDA 2.1 Créé : " + archiveSeda21.getAbsolutePath());
}
public File convert(Path rootFolderSEDA1, String agency, Path propertiesFolder) throws DuplicateLanguageException, IngestRejectException {
ManifestConverter xmlConverter = new Seda1ToSeda21Converter();
ManifestConverter xmlConverter = new Seda1ToSeda21Converter(this.getPlanClassementPath());
/**
* Le fichier du manifeste SEDA 2.1
......@@ -105,10 +108,17 @@ public class Seda1ToSeda21TarMaker implements ArchiveConverter {
fileList.add(manifest);
logger.debug("Fichier manifeste {}", manifest.getAbsolutePath());
ArchiveTransferType archive = null;
try {
ArchiveTransferType archive = xmlConverter.convertManifest(archiveTransfer, manifest, agency, propertiesFolder);
archive = xmlConverter.convertManifest(archiveTransfer, manifest, agency, propertiesFolder);
} catch (Exception e) {
logger.error("Une erreur est survenue lors de la conversion du manifest xml : {}", archiveTransfer.getAbsolutePath());
e.printStackTrace();
return null;
}
try {
// On renomme le répertoire racine en Content
renameContentFolder(rootFolderSEDA1);
moveArchiveXML(rootFolderSEDA1, ((Seda1ToSeda21Converter) xmlConverter).getArchiveType());
......@@ -128,8 +138,8 @@ public class Seda1ToSeda21TarMaker implements ArchiveConverter {
}
}
} catch (FileNotFoundException e) {
logger.error("Impossible de trouver le fichier Archive.xml : chemin {}", archiveTransfer.getAbsolutePath());
} catch (Exception e) {
logger.error("Une erreur est survenue lors du renommage du répertoire Content et du déplacement du fichier Archive.xml : chemin {}", archiveTransfer.getAbsolutePath());
}
......@@ -230,4 +240,9 @@ public class Seda1ToSeda21TarMaker implements ArchiveConverter {
public void setErrorLanguageDir(String errorLanguageDir) {
this.errorLanguageDir = errorLanguageDir;
}