Commit 032f17e6 authored by marceteau's avatar marceteau
Browse files

ajout gestion ark dans les relations + refactor fermeture bufferReader

parent d9610d57
#!/usr/bin/env bash #!/usr/bin/env bash
java -jar /usr/share/java/archive-converter/${project.name}-${project.version}.jar "$@" java -Dfr.cines.vitam.converter.ark=/etc/${project.name}/pac_list_all_ark.txt -jar /usr/share/java/archive-converter/${project.name}-${project.version}.jar "$@"
\ No newline at end of file \ No newline at end of file
...@@ -468,9 +468,10 @@ public class DCToSeda21Converter extends AbstractArchiveConverter { ...@@ -468,9 +468,10 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
* @param submissionAgency * @param submissionAgency
* @param currentArchive * @param currentArchive
* @throws IngestRejectException * @throws IngestRejectException
* @throws IOException
*/ */
@SuppressWarnings("null") @SuppressWarnings("null")
private DataObjectPackageType mapArchiveBlock(ArchiveUnitType currentArchive, PacType sip) throws IngestRejectException{ private DataObjectPackageType mapArchiveBlock(ArchiveUnitType currentArchive, PacType sip) throws IngestRejectException, IOException{
DataObjectPackageType dataObjectPackage = objectFactory.createDataObjectPackageType(); DataObjectPackageType dataObjectPackage = objectFactory.createDataObjectPackageType();
// Contrat d'archive // Contrat d'archive
...@@ -807,16 +808,40 @@ public class DCToSeda21Converter extends AbstractArchiveConverter { ...@@ -807,16 +808,40 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
} }
/** /**
* Cette fonction sert à tenter de reformer l'ark depuis un identifiant provenant de PAC * 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
* le fichier pac_list_all_ark.txt.
* Il faudra mettre à jour cette liste jusqu'à ce que arcsys ne soit plus utilisé.
* *
* @param identifiantSourceRelation * @param identifiantSourceRelation
* @return * @return
* @throws IOException
*/ */
private String constructArkFromIdentifier(String identifiantSourceRelation) { private String constructArkFromIdentifier(String identifiantSourceRelation) {
// TODO Corriger cette fonction pour être certain que l'ark existe (si c'est seulement possible...) String arkProperty = System.getProperty("fr.cines.vitam.converter.ark");
//Il faudra peut-être aller interroger vitam et/ou arcsys si l'on veut être rigoureux try (BufferedReader br = new BufferedReader(new FileReader(arkProperty))) {
String prefix = properties.getProperty(PREFIXE_ARK);
return prefix.concat(identifiantSourceRelation); String ligne = null;
while ((ligne = br.readLine()) != null)
{
String[] data = ligne.split("-");
if (data.length == 2) {
String identifiant = data[1].trim();
if(identifiant.equalsIgnoreCase(identifiantSourceRelation)) {
br.close();
return ligne;
}
}
}
br.close();
return null;
} catch (IOException e) {
e.printStackTrace();
}
return null;
} }
/** /**
...@@ -1318,7 +1343,11 @@ public class DCToSeda21Converter extends AbstractArchiveConverter { ...@@ -1318,7 +1343,11 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
metadata.setAudio(audioTechnicalMetadataType); metadata.setAudio(audioTechnicalMetadataType);
} }
} }
binaryDataObject.setMetadata(metadata); if(metadata.getAudio() != null || metadata.getDocument() != null || metadata.getImage() != null
|| metadata.getOtherCoreTechnicalMetadataAbstract() != null || metadata.getText() != null
|| metadata.getVideo() != null) {
binaryDataObject.setMetadata(metadata);
}
// if (formatVideoList.contains(format.getName())) { // if (formatVideoList.contains(format.getName())) {
// JAXBElement<String> jaxbElementEncoding = createXMLElement(format.getEncoding(), "encoding"); // JAXBElement<String> jaxbElementEncoding = createXMLElement(format.getEncoding(), "encoding");
// //
...@@ -1992,32 +2021,40 @@ public class DCToSeda21Converter extends AbstractArchiveConverter { ...@@ -1992,32 +2021,40 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
* @return * @return
* @throws Exception * @throws Exception
*/ */
public static String[] filePlanData(String filePath, String planClassement) throws Exception public static String[] filePlanData(String filePath, String planClassement)
{ {
BufferedReader br = new BufferedReader(new FileReader(filePath)); try(BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String ligne = null; String ligne = null;
planClassement = planClassement.trim(); planClassement = planClassement.trim();
//Si planClassement termine ou commence par un / on le retire //Si planClassement termine ou commence par un / on le retire
if(planClassement.endsWith("/") && planClassement.length() > 1) if(planClassement.endsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(0, planClassement.length() - 1); planClassement = planClassement.substring(0, planClassement.length() - 1);
if(planClassement.startsWith("/") && planClassement.length() > 1) if(planClassement.startsWith("/") && planClassement.length() > 1)
planClassement = planClassement.substring(1, planClassement.length()); planClassement = planClassement.substring(1, planClassement.length());
while ((ligne = br.readLine()) != null) while ((ligne = br.readLine()) != null)
{ {
// Retourner la ligne dans un tableau // Retourner la ligne dans un tableau
String[] data = ligne.split("\t"); String[] data = ligne.split("\t");
if (data.length == 4) { if (data.length == 4) {
String planClassementFile = data[0].trim(); String planClassementFile = data[0].trim();
if(planClassement.equals(planClassementFile)) { if(planClassement.equals(planClassementFile)) {
return data; br.close();
return data;
}
} }
} }
}
br.close(); 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 //TODO : lever une exception car on n'a pas d'équivalent dans le fichier de référence
return null; return null;
} }
...@@ -2033,37 +2070,47 @@ public class DCToSeda21Converter extends AbstractArchiveConverter { ...@@ -2033,37 +2070,47 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
* @throws IOException * @throws IOException
* @throws Exception * @throws Exception
*/ */
private static String propertiesCorespondance(String filePath, String agency, String planClassement) throws IOException private static String propertiesCorespondance(String filePath, String agency, String planClassement)
{ {
BufferedReader br = new BufferedReader(new FileReader(filePath + "/correspondances_properties.csv")); try(BufferedReader br = new BufferedReader(new FileReader(filePath + "/correspondances_properties.csv"))) {
String ligne = null; String ligne = null;
agency = agency.trim(); agency = agency.trim();
if (planClassement==null) { if (planClassement==null) {
planClassement = "/"; planClassement = "/";
} }
planClassement = planClassement.trim(); planClassement = planClassement.trim();
String defaultProperties = ""; String defaultProperties = "";
while ((ligne = br.readLine()) != null) while ((ligne = br.readLine()) != null)
{ {
String[] data = ligne.split("\t"); String[] data = ligne.split("\t");
if (data.length == 3) { if (data.length == 3) {
String agencyFile = data[0].trim(); String agencyFile = data[0].trim();
String planClassementFile = data[1].trim(); String planClassementFile = data[1].trim();
if(agency.equalsIgnoreCase(agencyFile) && planClassement.equalsIgnoreCase(planClassementFile)) { if(agency.equalsIgnoreCase(agencyFile) && planClassement.equalsIgnoreCase(planClassementFile)) {
return data[2]; br.close();
} else if(agency.equalsIgnoreCase(agencyFile) && "/".equalsIgnoreCase(planClassementFile)) { return data[2];
defaultProperties = data[2]; } else if(agency.equalsIgnoreCase(agencyFile) && "/".equalsIgnoreCase(planClassementFile)) {
defaultProperties = data[2];
}
} }
} }
} if(!defaultProperties.equals("")) {
if(!defaultProperties.equals("")) { br.close();
return defaultProperties; return defaultProperties;
} }
br.close(); br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//TODO : lever une exception car on n'a pas de fichier properties //TODO : lever une exception car on n'a pas de fichier properties
return null; return null;
} }
......
# Metadonnees Generales
ArchivalAgreement = CE-000004
ArchivalProfile = false
ArchiveUnitProfile = false
AppraisalRule_Rule = false
OriginatingAgencyIdentifier = SA-000023
SubmissionAgencyIdentifier = SA-000023
ArchivalAgency_Identifier = SA-000001
TransferringAgency_Identifier = SA-000023
# Indique la balise cible : choix entre OriginatingSystemId, OriginatingAgencyArchiveUnitIdentifier et TransferringAgencyArchiveUnitIdentifier
IdentifiantDocProducteur = TransferringAgencyArchiveUnitIdentifier
# Configuration specifique
# Mapping des balises oui/non
format = false
coverage = true
planClassement = false
# Optionnel : utiliser pour mapper DocumentType
# Si absent reprends la concatnation des balises type de DocDC
DocumentType=Electronic Thesis or Dissertation
# Generation des balises
prefixeARK = false
cines-dc = true
# Non utilise
X-Access-Contract-Id = CA-000001
# Metadonnees Generales
ArchivalAgreement = CE-000005
ArchivalProfile = false
ArchiveUnitProfile = false
AppraisalRule_Rule = false
OriginatingAgencyIdentifier = SA-000024
SubmissionAgencyIdentifier = SA-000024
ArchivalAgency_Identifier = SA-000001
TransferringAgency_Identifier = SA-000024
# Indique la balise cible : choix entre OriginatingSystemId, OriginatingAgencyArchiveUnitIdentifier et TransferringAgencyArchiveUnitIdentifier
IdentifiantDocProducteur = TransferringAgencyArchiveUnitIdentifier
# Configuration specifique
# Mapping des balises oui/non
format = true
coverage = true
planClassement = true
# Generation des balises
prefixeARK = false
cines-dc = true
# Non utilise
X-Access-Contract-Id = CA-000001
\ No newline at end of file
# Metadonnees Generales
ArchivalAgreement = CE-000001
ArchivalProfile = false
ArchiveUnitProfile = false
AppraisalRule_Rule = false
OriginatingAgencyIdentifier = SA-000001
SubmissionAgencyIdentifier = SA-000001
ArchivalAgency_Identifier = SA-000001
TransferringAgency_Identifier = SA-000001
# Indique la balise cible : choix entre OriginatingSystemId, OriginatingAgencyArchiveUnitIdentifier et TransferringAgencyArchiveUnitIdentifier
IdentifiantDocProducteur = OriginatingSystemId
# Configuration specifique
# Mapping des balises oui/non
format = false
coverage = false
planClassement = false
# Optionnel : utiliser pour mapper DocumentType
# Si absent reprends la concatnation des balises type de DocDC
#DocumentType=Mon type
# Generation des balises
prefixeARK = false
cines-dc = false
# Non utilise
X-Access-Contract-Id = CA-000001
This diff is collapsed.
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