Révision 3212
tmp/org.txm.groovy.core/src/groovy/org/txm/macro/table/Table2XMLMacro.groovy (revision 3212) | ||
---|---|---|
9 | 9 |
import java.net.URL |
10 | 10 |
import org.txm.libs.msoffice.ReadExcel |
11 | 11 |
|
12 |
@Field @Option(name="inputFile", usage="CSV File", widget="File", required=false, def="file.xlsx")
|
|
12 |
@Field @Option(name="inputFile", usage="CSV File", widget="File", required=false, def="") |
|
13 | 13 |
File inputFile; |
14 | 14 |
|
15 |
@Field @Option(name="outputDirectory", usage="output directory", widget="Folder", required=false, def="directory")
|
|
15 |
@Field @Option(name="outputDirectory", usage="output directory", widget="Folder", required=false, def="") |
|
16 | 16 |
File outputDirectory; |
17 | 17 |
|
18 | 18 |
@Field @Option(name="textsSeparator", usage="Texts", widget="Separator", required=false, def="Texts") |
... | ... | |
23 | 23 |
|
24 | 24 |
@Field @Option(name="textSelector", usage="<text> lines selector format is column=value", widget="String", required=false, def="Type de notice=Notice sommaire") |
25 | 25 |
def textSelector; |
26 |
|
|
27 |
@Field @Option(name="textOrderColumn", usage="The column used to fill the 'text-order' text metadata", widget="String", required=false, def="") |
|
28 |
def textOrderColumn |
|
26 | 29 |
|
27 |
@Field @Option(name="textMetadataColumnList", usage="<text> metadata columns", widget="String", required=false, def="Identifiant de la notice,Date de diffusion,Durée,Genre,Identifiant Matériels (info.)")
|
|
30 |
@Field @Option(name="textMetadataColumnList", usage="<text> metadata columns", widget="String", required=false, def="Identifiant de la notice,Nom fichier segmenté (info),Lien notice principale,Date de diffusion,Type de date,Notes du titre ,Genre,Durée,Langue VO / VE ,Nature de production ,Producteurs (Aff.),Thématique")
|
|
28 | 31 |
def textMetadataColumnList; |
29 | 32 |
|
30 |
@Field @Option(name="textContentColumnList", usage="<text> textual content columns", widget="String", required=false, def="Titre propre,Résumé,Descripteurs (Aff. Lig.),Descripteurs (Aff. Col.),Séquences")
|
|
33 |
@Field @Option(name="textContentColumnList", usage="<text> textual content columns", widget="String", required=false, def="") |
|
31 | 34 |
def textContentColumnList; |
32 |
|
|
35 |
|
|
33 | 36 |
@Field @Option(name="structuresSeparator", usage="Structures", widget="Separator", required=false, def="Structures") |
34 | 37 |
def structuresSeparator |
35 | 38 |
|
... | ... | |
45 | 48 |
@Field @Option(name="structureMetadataColumnList", usage="structure metadata columns", widget="String", required=false, def="Identifiant de la notice,Date de diffusion,Durée,Genre,Identifiant Matériels (info.)") |
46 | 49 |
def structureMetadataColumnList; |
47 | 50 |
|
48 |
@Field @Option(name="structureContentColumnList", usage="structure textual content columns", widget="String", required=false, def="Titre propre,Résumé,Descripteurs (Aff. Lig.),Descripteurs (Aff. Col.),Séquences")
|
|
51 |
@Field @Option(name="structureContentColumnList", usage="structure textual content columns", widget="String", required=false, def="Titre propre,Résumé,Descripteurs (Aff. Lig.),Générique (Aff. Lig.) ,Séquences")
|
|
49 | 52 |
def structureContentColumnList; |
50 | 53 |
|
51 | 54 |
@Field @Option(name="typesSeparator", usage="Columns types", widget="Separator", required=false, def="Columns types") |
52 | 55 |
def typesSeparator |
53 | 56 |
|
54 |
@Field @Option(name="dateColumnTypeList", usage="metadata columns of type=Date", widget="String", required=false, def="") |
|
57 |
@Field @Option(name="dateColumnTypeList", usage="metadata columns of type=Date", widget="String", required=false, def="Date de diffusion")
|
|
55 | 58 |
def dateColumnTypeList |
56 | 59 |
|
57 |
@Field @Option(name="prefixesColumnTypeList", usage="metadata columns of type=Prefixes", widget="String", required=false, def="") |
|
60 |
@Field @Option(name="prefixesColumnTypeList", usage="metadata columns of type=Prefixes", widget="String", required=false, def="Descripteurs (Aff. Lig.),Générique (Aff. Lig.) ")
|
|
58 | 61 |
def prefixesColumnTypeList |
59 | 62 |
|
60 |
@Field @Option(name="listColumnTypeList", usage="metadata columns of type=List semi-colon separated", widget="String", required=false, def="") |
|
63 |
@Field @Option(name="listColumnTypeList", usage="metadata columns of type=List semi-colon separated", widget="String", required=false, def="Résumé,Séquences")
|
|
61 | 64 |
def listColumnTypeList |
62 |
|
|
65 |
|
|
63 | 66 |
@Field @Option(name="debug", usage="Show devug messages", widget="Boolean", required=false, def="false") |
64 | 67 |
def debug |
65 | 68 |
//@Field @Option(name="structureOrderColumn", usage="structure column coding structure order", widget="String", required=false, def="Titre propre,Résumé,Descripteurs (Aff. Lig.),Descripteurs (Aff. Col.),Séquences") |
... | ... | |
219 | 222 |
writer.writeStartElement("text") |
220 | 223 |
writer.writeAttribute("id", id) |
221 | 224 |
|
225 |
textOrderWritten = false |
|
226 |
if (textOrderColumn != null && textOrderColumn.length() > 0 && textMetadataColumnList.contains(textOrderColumn)) { |
|
227 |
writer.writeAttribute("text-order", text.get(textOrderColumn)) |
|
228 |
textOrderWritten = true |
|
229 |
} |
|
230 |
|
|
222 | 231 |
for (String att : textMetadataColumnList) { |
223 | 232 |
if (att in dateColumnTypeList) { |
224 |
writeMetadataDate(text, att, writer) |
|
233 |
String tri = writeMetadataDate(text, att, writer) |
|
234 |
if (!textOrderWritten) { |
|
235 |
writer.writeAttribute("text-order", tri) |
|
236 |
textOrderWritten = true; |
|
237 |
} |
|
225 | 238 |
} else { |
226 | 239 |
writer.writeAttribute(AsciiUtils.buildAttributeId(att), text.get(att)) // struct |
227 | 240 |
} |
... | ... | |
320 | 333 |
|
321 | 334 |
def writeListTextContent(def record, def att, def writer) { |
322 | 335 |
|
336 |
writer.writeStartElement("head") |
|
337 |
writer.writeStartElement("hi") |
|
338 |
writer.writeCharacters(att) |
|
339 |
writer.writeEndElement() // hi |
|
340 |
writer.writeEndElement() // head |
|
341 |
|
|
323 | 342 |
def value = record.get(att).replaceAll(" ++", " ") |
324 | 343 |
if (value.length() <= 1) return |
325 | 344 |
|
... | ... | |
353 | 372 |
|
354 | 373 |
def writeTextContent(def record, def att, def writer) { |
355 | 374 |
|
356 |
def value = record.get(att).replaceAll(" ++", " ") |
|
357 |
if (value.length() == 0) return |
|
358 |
|
|
359 | 375 |
writer.writeStartElement("head") |
360 | 376 |
writer.writeStartElement("hi") |
361 | 377 |
writer.writeCharacters(att) |
362 | 378 |
writer.writeEndElement() // hi |
363 | 379 |
writer.writeEndElement() // head |
364 | 380 |
|
381 |
def value = record.get(att).replaceAll(" ++", " ") |
|
382 |
if (value.length() == 0) return |
|
383 |
|
|
365 | 384 |
writer.writeStartElement(AsciiUtils.buildAttributeId(att)); |
366 | 385 |
writer.writeAttribute("type", att.trim()) |
367 | 386 |
if (record.get(textIDColumn) != null) { |
... | ... | |
375 | 394 |
} |
376 | 395 |
|
377 | 396 |
def writePrefixTextContent(def record, def att, def writer) { |
397 |
|
|
398 |
writer.writeStartElement("head") |
|
399 |
writer.writeStartElement("hi") |
|
400 |
writer.writeCharacters(att) |
|
401 |
writer.writeEndElement() // hi |
|
402 |
writer.writeEndElement() // head |
|
403 |
|
|
378 | 404 |
def value = record.get(att).replaceAll(" ++", " ") |
379 | 405 |
if (value.length() <= 1) return |
380 | 406 |
|
... | ... | |
416 | 442 |
writer.writeAttribute(att_normalized+"-joursemaine", new java.text.SimpleDateFormat('EEEE').format(Date.parse("dd/MM/yyyy", value))) |
417 | 443 |
writer.writeAttribute(att_normalized+"-mois", matches[0][2]) |
418 | 444 |
writer.writeAttribute(att_normalized+"-annee", matches[0][3]) |
419 |
writer.writeAttribute(att_normalized+"-tri", matches[0][3]+"-"+matches[0][2]+"-"+matches[0][1]) |
|
445 |
String tri = matches[0][3]+"-"+matches[0][2]+"-"+matches[0][1] |
|
446 |
writer.writeAttribute(att_normalized+"-tri", tri) |
|
447 |
|
|
448 |
return tri |
|
420 | 449 |
} |
421 | 450 |
|
422 | 451 |
/* |
Formats disponibles : Unified diff