Commit f0ea7b73 authored by marceteau's avatar marceteau
Browse files

correctif sur la construction des AU (sans recursion)

parent d47d0bed
......@@ -1564,7 +1564,8 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
String[] pathElements = fichMeta.getNomFichier().split("/");
if (pathElements.length > 1) {
String subFolder = Arrays.stream(pathElements, 0, pathElements.length - 1).collect(Collectors.joining("/"));
folderArchiveUnit = buildSubFolderArchiveUnit(subFolder, subFolder, 0);
//folderArchiveUnit = buildSubFolderArchiveUnit(subFolder, subFolder, 0);
folderArchiveUnit = buildSubFolderArchiveUnitNotRecursive(subFolder);
}
}
......@@ -1649,6 +1650,68 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
return archiveUnit;
}
/**
* construction de l'archiveUnit avec toutes ses imbrications SANS passer par une récursion (qui ne fonctionne d'ailleurs toujours pas)
*
* retourne l'AU du répertoire situé à la racine avec tout ses petits
*
* @param subFolder
* @return
*/
private ArchiveUnitType buildSubFolderArchiveUnitNotRecursive(String subFolder) {
String[] pathElements = subFolder.split("/");
String elementPath = "";
ArchiveUnitType folderAURoot = null;
ArchiveUnitType folderAUPrec = null;
for(String element: pathElements) {
elementPath = elementPath + element;
if(mapFolderArchiveUnit.get(elementPath) != null) {
if(folderAURoot == null) {
folderAURoot = mapFolderArchiveUnit.get(elementPath);
folderAUPrec = mapFolderArchiveUnit.get(elementPath);
} else {
//On cherche le bon index pour retrouver la bonne archiveUnit en reparcourant la liste
int indexAU = 0;
for(int i=0; i<folderAUPrec.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().size();i++) {
ArchiveUnitType fAU = (ArchiveUnitType) folderAUPrec.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().get(i);
if(fAU.getContent().getDescriptionLevel().value().equalsIgnoreCase("File")
&& fAU.getContent().getTitle().get(0).getValue().equalsIgnoreCase(element)) {
indexAU = i;
}
}
folderAUPrec = (ArchiveUnitType) folderAUPrec.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().get(indexAU);
}
} else {
ArchiveUnitType folderAU = objectFactory.createArchiveUnitType();
folderAU.setId("FOLDERID" + folderIdCounter++);
DescriptiveMetadataContentType content = objectFactory.createDescriptiveMetadataContentType();
TextType titleTextType = objectFactory.createTextType();
titleTextType.setValue(element);
content.getTitle().add(titleTextType);
content.setDescriptionLevel(LevelType.FILE);
folderAU.setContent(content);
if(folderAURoot == null) {
folderAURoot = folderAU;
} else {
folderAUPrec.getArchiveUnitOrArchiveUnitReferenceAbstractOrDataObjectReference().add(folderAU);
}
mapFolderArchiveUnit.put(elementPath, folderAU);
//On prépare pour la prochaine itération
folderAUPrec = folderAU;
}
elementPath = elementPath + "/";
}
return folderAURoot;
}
/**
* Compteur specifique pour les identifiants d'AU de sous-repertoires
*/
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment