Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
dad
archive-format-converter
Commits
2314e415
Commit
2314e415
authored
Sep 23, 2021
by
marceteau
Browse files
refactoring + debug + balise relation mappée pour BSU
parent
032f17e6
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/main/java/fr/cines/pac/converter/AbstractArchiveConverter.java
View file @
2314e415
...
...
@@ -21,7 +21,10 @@
*/
package
fr.cines.pac.converter
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
...
...
@@ -303,6 +306,60 @@ public abstract class AbstractArchiveConverter implements ManifestConverter {
}
}
/**
* cherche le bon fichier properties pour un service versant et un filePlan donné
* puis retourne un tableau de string contenant les valeurs planClassement, sydtemId, descriptionLevel, title
* Dans le cas où il n'y a qu'un fichier properties pour un service versant, la valeur "/" est indiquée par défaut
*
* @param filePath
* @param agency
* @return
* @throws IOException
* @throws Exception
*/
protected
static
String
propertiesCorespondance
(
String
filePath
,
String
agency
,
String
planClassement
)
{
try
(
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
filePath
+
"/correspondances_properties.csv"
)))
{
String
ligne
=
null
;
agency
=
agency
.
trim
();
if
(
planClassement
==
null
)
{
planClassement
=
"/"
;
}
planClassement
=
planClassement
.
trim
();
String
defaultProperties
=
""
;
while
((
ligne
=
br
.
readLine
())
!=
null
)
{
String
[]
data
=
ligne
.
split
(
"\t"
);
if
(
data
.
length
==
3
)
{
String
agencyFile
=
data
[
0
].
trim
();
String
planClassementFile
=
data
[
1
].
trim
();
if
(
agency
.
equalsIgnoreCase
(
agencyFile
)
&&
planClassement
.
equalsIgnoreCase
(
planClassementFile
))
{
br
.
close
();
return
data
[
2
];
}
else
if
(
agency
.
equalsIgnoreCase
(
agencyFile
)
&&
"/"
.
equalsIgnoreCase
(
planClassementFile
))
{
defaultProperties
=
data
[
2
];
}
}
}
if
(!
defaultProperties
.
equals
(
""
))
{
br
.
close
();
return
defaultProperties
;
}
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
return
null
;
}
public
String
detectLanguage
(
String
string
)
{
detector
.
setShortText
(
true
);
LanguageResult
result
=
detector
.
detect
(
string
);
...
...
src/main/java/fr/cines/pac/converter/ArchiveConverterMain.java
View file @
2314e415
...
...
@@ -328,7 +328,11 @@ public class ArchiveConverterMain {
ArchiveConverter
archiveConverter
=
null
;
if
(
formalism
.
equals
(
"sip"
)
||
formalism
.
equals
(
"aip"
))
{
archiveConverter
=
new
DCToSeda21TarMaker
(
this
.
agency
,
this
.
planClassementFile
.
toString
(),
formalism
);
if
(
this
.
planClassementFile
!=
null
)
{
archiveConverter
=
new
DCToSeda21TarMaker
(
this
.
agency
,
this
.
planClassementFile
.
toString
(),
formalism
);
}
else
{
archiveConverter
=
new
DCToSeda21TarMaker
(
this
.
agency
,
null
,
formalism
);
}
}
else
if
(
formalism
.
equals
(
"seda1"
))
{
archiveConverter
=
new
Seda1ToSeda21TarMaker
(
this
.
agency
);
}
else
{
...
...
src/main/java/fr/cines/pac/converter/DCToSeda21Converter.java
View file @
2314e415
...
...
@@ -238,6 +238,8 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
private
static
final
String
APPRAISAL_RULE
=
"AppraisalRule_Rule"
;
private
static
final
String
DISSEMINATION_RULE
=
"DisseminationRule_Rule"
;
private
static
final
String
PREFIXE_ARK
=
"prefixeARK"
;
//Relation est un cas particulier pour la BSU
private
static
final
String
RELATION
=
"relation"
;
/**
* Label présent dans des balises, à ne pas mapper en Tag
*/
...
...
@@ -620,7 +622,7 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
}
try
{
if
(
planClassementFilePath
.
equals
(
""
))
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 "
);
...
...
@@ -721,16 +723,29 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
content
.
setCoverage
(
coverage
);
}
if
(
sip
.
getDocDC
().
getSource
()
!=
null
&&
!
sip
.
getDocDC
().
getSource
().
isEmpty
())
{
content
.
setSource
(
sip
.
getDocDC
().
getSource
().
get
(
0
).
getValue
());
}
List
<
AgentType
>
writers
=
mapWriters
(
sip
.
getDocDC
());
if
(!
writers
.
isEmpty
())
content
.
getWriter
().
addAll
(
mapWriters
(
sip
.
getDocDC
()));
if
(!
sip
.
getDocDC
().
getSource
().
isEmpty
())
content
.
setSource
(
mapSource
(
sip
.
getDocDC
()));
boolean
takeRelation
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
RELATION
));
if
(
takeRelation
)
{
String
sourceString
=
content
.
getSource
();
if
(
sourceString
==
null
)
sourceString
=
""
;
for
(
StringNotNULLtext
relation
:
sip
.
getDocDC
().
getRelation
())
{
if
(
sourceString
.
equalsIgnoreCase
(
""
))
{
sourceString
+=
relation
.
getValue
();
}
else
{
sourceString
+=
" | "
+
relation
.
getValue
();
}
}
if
(!
sourceString
.
equalsIgnoreCase
(
""
))
{
content
.
setSource
(
sourceString
);
}
}
if
(
sip
.
getDocMeta
().
getVersion
()
!=
null
&&
!
sip
.
getDocMeta
().
getVersion
().
isEmpty
())
content
.
setVersion
(
sip
.
getDocMeta
().
getVersion
());
...
...
@@ -1189,7 +1204,9 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
}
catch
(
IOException
e
)
{
logger
.
error
(
"problème d'entrée/sortie lecture/écriture sur le fichier {}"
,
document
.
getNomFichier
());
}
catch
(
UnknownFormatException
e
)
{
logger
.
error
(
"Impossible d'identifier le format du dichier {}"
,
document
.
getNomFichier
());
logger
.
error
(
"Impossible d'identifier le format du fichier {}"
,
document
.
getNomFichier
());
}
catch
(
Exception
e
)
{
logger
.
error
(
"Identification impossible du format du fichier {}"
,
document
.
getNomFichier
());
}
format
=
(
ValidableFormat
)
validator
.
getIdentifiedFormat
();
...
...
@@ -2059,62 +2076,6 @@ public class DCToSeda21Converter extends AbstractArchiveConverter {
return
null
;
}
/**
* cherche le bon fichier properties pour un service versant et un filePlan donné
* puis retourne un tableau de string contenant les valeurs planClassement, sydtemId, descriptionLevel, title
* Dans le cas où il n'y a qu'un fichier properties pour un service versant, la valeur "/" est indiquée par défaut
*
* @param filePath
* @param agency
* @return
* @throws IOException
* @throws Exception
*/
private
static
String
propertiesCorespondance
(
String
filePath
,
String
agency
,
String
planClassement
)
{
try
(
BufferedReader
br
=
new
BufferedReader
(
new
FileReader
(
filePath
+
"/correspondances_properties.csv"
)))
{
String
ligne
=
null
;
agency
=
agency
.
trim
();
if
(
planClassement
==
null
)
{
planClassement
=
"/"
;
}
planClassement
=
planClassement
.
trim
();
String
defaultProperties
=
""
;
while
((
ligne
=
br
.
readLine
())
!=
null
)
{
String
[]
data
=
ligne
.
split
(
"\t"
);
if
(
data
.
length
==
3
)
{
String
agencyFile
=
data
[
0
].
trim
();
String
planClassementFile
=
data
[
1
].
trim
();
if
(
agency
.
equalsIgnoreCase
(
agencyFile
)
&&
planClassement
.
equalsIgnoreCase
(
planClassementFile
))
{
br
.
close
();
return
data
[
2
];
}
else
if
(
agency
.
equalsIgnoreCase
(
agencyFile
)
&&
"/"
.
equalsIgnoreCase
(
planClassementFile
))
{
defaultProperties
=
data
[
2
];
}
}
}
if
(!
defaultProperties
.
equals
(
""
))
{
br
.
close
();
return
defaultProperties
;
}
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
return
null
;
}
public
List
<
DataObjectMapper
>
getDataObjectMapper
()
{
return
dataObjectMapper
;
}
...
...
src/main/java/fr/cines/pac/converter/Seda1ToSeda21Converter.java
View file @
2314e415
...
...
@@ -779,11 +779,14 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
}
// Le format - identifiant pronom va dans le bloc <FormatIdentification>
String
filePathString
=
document
.
getAttachment
().
getFilename
();
String
[]
filePathString
=
document
.
getAttachment
().
getFilename
().
split
(
"/"
);
//On ne garde que le nom du fichier, et non pas le chemin relatif (qui ne correspond pas)
String
fileNameString
=
filePathString
[
filePathString
.
length
-
1
];
/**
* Chemin du fichier sur le système pour la validation de format
*/
Path
filePath
=
this
.
rootFolder
.
resolve
(
Paths
.
get
(
filePath
String
));
Path
filePath
=
this
.
rootFolder
.
resolve
(
Paths
.
get
(
"Content/"
+
fileName
String
));
ValidableFormat
format
=
null
;
if
(!
isOnlyManifest
())
{
...
...
@@ -834,7 +837,7 @@ public class Seda1ToSeda21Converter extends AbstractArchiveConverter {
String
unitCode
=
measure
.
getUnitCode
();
BigDecimal
sizeValue
=
measure
.
getValue
();
if
(
unitCode
!=
null
&&
!
unitCode
.
equals
(
""
)
&&
!
unitCode
.
equalsIgnoreCase
(
"AD"
))
System
.
err
.
println
(
"Attention la taille du fichier "
+
document
.
getAttachment
().
getFilename
()
+
" n'est pas exprimé en octets. Code : "
+
unitCode
);
System
.
err
.
println
(
"Attention la taille du fichier "
+
fileNameString
+
" n'est pas exprimé en octets. Code : "
+
unitCode
);
binaryDataObject
.
setSize
(
sizeValue
.
toBigInteger
());
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment