Révision 3217
tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xml/importer.groovy (revision 3217) | ||
---|---|---|
191 | 191 |
return false; |
192 | 192 |
} |
193 | 193 |
//TRANSFORM INTO XML-TEI-TXM |
194 |
println("Building XML-TXM ("+tokenfiles.size()+" files)")
|
|
194 |
println("Building XML-TXM ${tokenfiles.length} file"+(tokenfiles.length > 1?"s":""))
|
|
195 | 195 |
cpb = new ConsoleProgressBar(tokenfiles.size()) |
196 | 196 |
for (File f : tokenfiles) { |
197 | 197 |
//ArrayList<String> milestones = new ArrayList<String>(); |
tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/transcriber/importer.groovy (revision 3217) | ||
---|---|---|
201 | 201 |
|
202 | 202 |
//TRANSFORM INTO XML-TEI-TXM |
203 | 203 |
files = tokenizedDir.listFiles() |
204 |
println("Building XML-TXM ("+files.length+" files)")
|
|
204 |
println("Building ${files.length} XML-TXM file"+(files.length > 1?"s":""))
|
|
205 | 205 |
cpb = new ConsoleProgressBar(files.length) |
206 | 206 |
for (File tfile : files) { |
207 | 207 |
cpb.tick() |
tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/txt/importer.groovy (revision 3217) | ||
---|---|---|
269 | 269 |
cpb.done() |
270 | 270 |
|
271 | 271 |
//TRANSFORM INTO XML-TEI-TXM |
272 |
println("Building xml-tei-txm ("+stokenizeDir.listFiles().length+" files)")
|
|
272 |
println("Building XML-TXM ${stokenizeDir.listFiles().length} file"+(stokenizeDir.listFiles().length > 1?"s":""))
|
|
273 | 273 |
cpb = new ConsoleProgressBar(stokenizeDir.listFiles().length) |
274 | 274 |
for (File tfile : stokenizeDir.listFiles()) { |
275 | 275 |
cpb.tick() |
tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/xtz/XTZImporter.groovy (revision 3217) | ||
---|---|---|
191 | 191 |
splitedDirectory.deleteDir() |
192 | 192 |
|
193 | 193 |
File xslDirectory = new File(module.getSourceDirectory(), "xsl/1-split-merge") |
194 |
println "-- Split-Merge XSL Step with $xslDirectory" |
|
194 |
|
|
195 | 195 |
def xslFiles = xslDirectory.listFiles() |
196 | 196 |
if (xslDirectory.exists() && xslFiles != null && xslFiles.size() > 0) { |
197 | 197 |
|
198 |
println "-- Split-Merge XSL Step with $xslDirectory" |
|
198 | 199 |
splitedDirectory.mkdir() |
199 | 200 |
xslParams["output-directory"] = splitedDirectory.getAbsoluteFile().toURI().toString(); |
200 | 201 |
|
... | ... | |
264 | 265 |
//filesToProcess = inputDirectory.listFiles(); |
265 | 266 |
|
266 | 267 |
File frontXSLdirectory = new File(module.getSourceDirectory(), "xsl/2-front") |
267 |
println "-- Front XSL Step with the $frontXSLdirectory directory." |
|
268 |
|
|
268 | 269 |
def xslFiles = frontXSLdirectory.listFiles() |
269 | 270 |
|
270 | 271 |
xslParams["output-directory"] = outputDirectory.getAbsoluteFile().toURI().toString(); |
271 | 272 |
|
272 | 273 |
if (frontXSLdirectory.exists() && xslFiles != null && xslFiles.size() > 0) { |
273 | 274 |
|
275 |
println "-- Front XSL Step with the $frontXSLdirectory directory." |
|
274 | 276 |
xslFiles.sort() |
275 | 277 |
for (File xslFile : xslFiles) { |
276 | 278 |
if (xslFile.isDirectory() || xslFile.isHidden() || !xslFile.getName().endsWith(".xsl")) continue; |
... | ... | |
458 | 460 |
public boolean doToXMLTXMStep() { |
459 | 461 |
filesToProcess = new File(module.getBinaryDirectory(),"tokenized").listFiles() |
460 | 462 |
ConsoleProgressBar cpb = new ConsoleProgressBar(filesToProcess.size()) |
461 |
println("-- Building XML-TXM ("+filesToProcess.size()+" files)")
|
|
463 |
println("-- Building ("+filesToProcess.size()+" XML-TXM files)")
|
|
462 | 464 |
for (File f : filesToProcess) { |
463 | 465 |
//ArrayList<String> milestones = new ArrayList<String>(); |
464 | 466 |
cpb.tick() |
tmp/org.txm.groovy.core/src/groovy/org/txm/macro/InstallAndUpdateMacroMacro.groovy (revision 3217) | ||
---|---|---|
12 | 12 |
monitorShowError("Le répertoire $groovyUserDirectory n'a pas pu être créé. Abandon.") |
13 | 13 |
return; |
14 | 14 |
} |
15 |
@Field @Option(name="targets", usage="Path to the macro to update", widget="String", required=true, def="")
|
|
16 |
def targets
|
|
15 |
@Field @Option(name="macroPaths", usage="Comma separated list of macro paths", widget="String", required=true, def="")
|
|
16 |
def macroPaths
|
|
17 | 17 |
|
18 |
@Field @Option(name="svn", usage="TXM SVN repository", widget="String", required=true, def="http://forge.cbp.ens-lyon.fr/svn/txm/tmp/org.txm.groovy.core/src/groovy/org/txm/macro/")
|
|
19 |
def svn |
|
18 |
@Field @Option(name="svnRepository", usage="http based URL of TXM's SVN ", widget="String", required=true, def="http://forge.cbp.ens-lyon.fr/svn/txm/tmp/org.txm.groovy.core/src/groovy/org/txm/macro/")
|
|
19 |
def svnRepository
|
|
20 | 20 |
|
21 | 21 |
@Field @Option(name="debug", usage="Show devug messages", widget="Boolean", required=false, def="false") |
22 | 22 |
def debug |
23 | 23 |
|
24 | 24 |
if (!ParametersDialog.open(this)) return false; |
25 | 25 |
|
26 |
if (!svn.endsWith("/")) svn += "/"
|
|
26 |
if (!svnRepository.endsWith("/")) svnRepository += "/"
|
|
27 | 27 |
|
28 |
def macros = targets.split(",").collect(){it.trim()}
|
|
28 |
def macros = macroPaths.split(",").collect(){it.trim()}
|
|
29 | 29 |
|
30 |
println "Copyping ${macros.size()} files: " |
|
31 |
def errors = [] |
|
30 |
print "Fetching ${macros.size()} files: " |
|
31 |
def errors = new LinkedHashMap() |
|
32 |
def updated = [] |
|
33 |
def news = [] |
|
32 | 34 |
for (def m : macros) { |
33 | 35 |
def f = new File(groovyUserDirectory, m+"Macro.groovy") |
34 | 36 |
f.getParentFile().mkdirs() |
35 |
String remoteUrl = svn+m+"Macro.groovy" |
|
37 |
String remoteUrl = svnRepository+m+"Macro.groovy"
|
|
36 | 38 |
try { |
37 | 39 |
|
38 | 40 |
if (debug) print "\n"+remoteUrl |
39 | 41 |
boolean replaced = f.exists() |
40 | 42 |
|
41 |
|
|
42 | 43 |
def file = new FileOutputStream(f) |
43 | 44 |
def out = new BufferedOutputStream(file) |
44 | 45 |
out << new URL(remoteUrl).openStream() |
45 | 46 |
out.close() |
46 | 47 |
|
47 |
if (replaced) print "*" |
|
48 |
else print "." |
|
48 |
if (replaced) { |
|
49 |
print "*" |
|
50 |
updated << m |
|
51 |
} else { |
|
52 |
print "." |
|
53 |
news << m |
|
54 |
} |
|
49 | 55 |
} catch(Exception e ) { |
50 | 56 |
print "x" |
51 |
errors << "\nError while fetching $f from $remoteUrl: $e"
|
|
57 |
errors[m] = e;
|
|
52 | 58 |
} |
53 | 59 |
} |
60 |
|
|
61 |
if (news.size() > 0 ) { |
|
62 |
println "\n${news.join(", ")} created." |
|
63 |
} |
|
64 |
|
|
65 |
if (updated.size() > 0 ) { |
|
66 |
println "\n${updated.join(", ")} updated." |
|
67 |
} |
|
68 |
|
|
54 | 69 |
if (errors.size() > 0) { |
55 |
println errors.join("\n") |
|
70 |
println "\n${errors.keySet().join(", ")} failed:" |
|
71 |
println errors.values().join("\n\t") |
|
56 | 72 |
} |
57 |
println "\n$targets updated." |
|
58 | 73 |
|
59 | 74 |
def monitorShowError(String message) { |
60 | 75 |
monitor.syncExec(new Runnable() { |
tmp/org.txm.groovy.core/src/groovy/org/txm/macro/table/Table2XMLMacro.groovy (revision 3217) | ||
---|---|---|
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 |
|
|
26 |
|
|
27 | 27 |
@Field @Option(name="textOrderColumn", usage="The column used to fill the 'text-order' text metadata", widget="String", required=false, def="") |
28 | 28 |
def textOrderColumn |
29 | 29 |
|
... | ... | |
32 | 32 |
|
33 | 33 |
@Field @Option(name="textContentColumnList", usage="<text> textual content columns", widget="String", required=false, def="") |
34 | 34 |
def textContentColumnList; |
35 |
|
|
35 |
|
|
36 | 36 |
@Field @Option(name="structuresSeparator", usage="Structures", widget="Separator", required=false, def="Structures") |
37 | 37 |
def structuresSeparator |
38 | 38 |
|
... | ... | |
50 | 50 |
|
51 | 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") |
52 | 52 |
def structureContentColumnList; |
53 |
|
|
53 |
|
|
54 | 54 |
@Field @Option(name="structureTitleColumnList", usage="structure textual content columns", widget="String", required=false, def="Titre propre,Date de diffusion") |
55 | 55 |
def structureTitleColumnList; |
56 | 56 |
|
... | ... | |
65 | 65 |
|
66 | 66 |
@Field @Option(name="listColumnTypeList", usage="metadata columns of type=List semi-colon separated", widget="String", required=false, def="Résumé,Séquences") |
67 | 67 |
def listColumnTypeList |
68 |
|
|
68 |
|
|
69 | 69 |
@Field @Option(name="debug", usage="Show devug messages", widget="Boolean", required=false, def="false") |
70 | 70 |
def debug |
71 | 71 |
//@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") |
... | ... | |
248 | 248 |
for (String att : textMetadataColumnList) { |
249 | 249 |
if (att in dateColumnTypeList) { |
250 | 250 |
String tri = writeMetadataDate(text, att, writer) |
251 |
if (!textOrderWritten) { |
|
251 |
if (!textOrderWritten && tri != null) {
|
|
252 | 252 |
textOrderWritten = tri; |
253 | 253 |
} |
254 | 254 |
} else { |
... | ... | |
263 | 263 |
metadata << "$id $textOrderWritten\n" |
264 | 264 |
|
265 | 265 |
writer.writeCharacters("\n") // simple XML formating |
266 |
|
|
266 |
|
|
267 | 267 |
for (String att : textContentColumnList) { |
268 | 268 |
|
269 | 269 |
if (att in prefixesColumnTypeList) { |
... | ... | |
349 | 349 |
|
350 | 350 |
def writeListTextContent(def record, def att, def writer) { |
351 | 351 |
|
352 |
writer.writeStartElement("ab") |
|
353 |
writer.writeAttribute("type", att) |
|
354 |
writer.writeCharacters("\n") |
|
355 |
|
|
352 | 356 |
writer.writeStartElement("head") |
353 | 357 |
writer.writeStartElement("hi") |
354 | 358 |
writer.writeCharacters(att) |
... | ... | |
357 | 361 |
writer.writeCharacters("\n") |
358 | 362 |
|
359 | 363 |
def value = record.get(att).replaceAll(" ++", " ") |
360 |
if (value.length() <= 1) return |
|
361 |
|
|
362 |
writer.writeCharacters("\n") |
|
363 |
found = false |
|
364 |
for (String s : value.split("\n")) { |
|
365 |
s = s.trim() |
|
366 |
if (s.length() == 0) continue; |
|
367 |
if (s.startsWith("-")) s = s.substring(1).trim(); |
|
368 |
if (s.length() == 0) continue; |
|
364 |
if (value.length() > 1) { |
|
369 | 365 |
|
370 |
found = true |
|
371 |
writer.writeCharacters("\t") |
|
372 |
writer.writeStartElement("p") |
|
373 |
writer.writeAttribute("rend", "list") |
|
374 |
writer.writeCharacters(s) |
|
375 |
writer.writeEndElement() // p |
|
366 |
|
|
367 |
writer.writeStartElement("list") |
|
368 |
writer.writeAttribute("type", "ordered") |
|
376 | 369 |
writer.writeCharacters("\n") |
377 |
} |
|
378 |
|
|
379 |
if (!found) { |
|
380 |
println "Warning: '$att' list not found in '$value'" |
|
381 |
writer.writeCharacters("\t") |
|
382 |
writer.writeStartElement("p") |
|
383 |
writer.writeAttribute("rend", "no-list") |
|
384 |
writer.writeCharacters(value) |
|
385 |
writer.writeEndElement() // p |
|
370 |
|
|
371 |
found = false |
|
372 |
for (String s : value.split("\n")) { |
|
373 |
s = s.trim() |
|
374 |
if (s.length() == 0) continue; |
|
375 |
if (s.startsWith("-")) s = s.substring(1).trim(); |
|
376 |
if (s.length() == 0) continue; |
|
377 |
|
|
378 |
found = true |
|
379 |
writer.writeCharacters("\t") |
|
380 |
writer.writeStartElement("item") |
|
381 |
writer.writeStartElement("p") |
|
382 |
writer.writeAttribute("rend", "list") |
|
383 |
writer.writeCharacters(s) |
|
384 |
writer.writeEndElement() // p |
|
385 |
writer.writeEndElement() // item |
|
386 |
writer.writeCharacters("\n") |
|
387 |
} |
|
388 |
|
|
389 |
if (!found) { |
|
390 |
println "Warning: '$att' list not found in '$value'" |
|
391 |
writer.writeCharacters("\t") |
|
392 |
writer.writeStartElement("item") |
|
393 |
writer.writeStartElement("p") |
|
394 |
writer.writeAttribute("type", att) |
|
395 |
writer.writeAttribute("rend", "no-list") |
|
396 |
writer.writeCharacters(value) |
|
397 |
writer.writeEndElement() // p |
|
398 |
writer.writeEndElement() // item |
|
399 |
writer.writeCharacters("\n") |
|
400 |
} |
|
401 |
|
|
402 |
writer.writeEndElement() // list |
|
386 | 403 |
writer.writeCharacters("\n") |
387 | 404 |
} |
405 |
writer.writeEndElement() // ab |
|
406 |
writer.writeCharacters("\n") |
|
388 | 407 |
} |
389 | 408 |
|
390 | 409 |
def writeTextContent(def record, def att, def writer) { |
391 | 410 |
|
411 |
writer.writeStartElement("ab") |
|
412 |
writer.writeAttribute("type", att) |
|
413 |
writer.writeCharacters("\n") |
|
414 |
|
|
392 | 415 |
writer.writeStartElement("head") |
393 | 416 |
writer.writeStartElement("hi") |
394 | 417 |
writer.writeCharacters(att) |
... | ... | |
397 | 420 |
writer.writeCharacters("\n") |
398 | 421 |
|
399 | 422 |
def value = record.get(att).replaceAll(" ++", " ") |
400 |
if (value.length() == 0) return |
|
401 |
|
|
402 |
writer.writeStartElement(AsciiUtils.buildAttributeId(att)); |
|
403 |
writer.writeAttribute("type", att.trim()) |
|
404 |
if (record.get(textIDColumn) != null) { |
|
405 |
writer.writeAttribute("id", record.get(textIDColumn)) |
|
423 |
if (value.length() > 0) { |
|
424 |
|
|
425 |
for (String s : value.split("\n")) { |
|
426 |
writer.writeStartElement("p") |
|
427 |
writer.writeCharacters(s) // a paragraphe per line |
|
428 |
writer.writeEndElement() // p |
|
429 |
} |
|
406 | 430 |
} |
407 |
writer.writeCharacters("\n") // simple XML formating |
|
408 |
|
|
409 |
writer.writeCharacters(value) // get textColumnList content |
|
410 |
writer.writeEndElement() // p |
|
411 |
writer.writeCharacters("\n") // simple XML formating) |
|
431 |
writer.writeEndElement() // ab |
|
432 |
writer.writeCharacters("\n") |
|
412 | 433 |
} |
413 | 434 |
|
414 | 435 |
def writePrefixTextContent(def record, def att, def writer) { |
415 | 436 |
|
437 |
writer.writeStartElement("ab") |
|
438 |
writer.writeAttribute("type", att) |
|
439 |
writer.writeCharacters("\n") |
|
440 |
|
|
416 | 441 |
writer.writeStartElement("head") |
417 | 442 |
writer.writeStartElement("hi") |
418 | 443 |
writer.writeCharacters(att) |
... | ... | |
421 | 446 |
writer.writeCharacters("\n") |
422 | 447 |
|
423 | 448 |
def value = record.get(att).replaceAll(" ++", " ") |
424 |
if (value.length() <= 1) return |
|
425 |
|
|
426 |
writer.writeCharacters("\n") |
|
427 |
writer.writeStartElement("list") |
|
428 |
writer.writeAttribute("rend", att.trim()) |
|
429 |
writer.writeAttribute("type", "unordered") |
|
430 |
writer.writeCharacters("\n") |
|
431 |
found = false |
|
432 |
|
|
433 |
value.findAll( /(?s)[A-Z]{3}:? *([^;\n]+?) +[;\n]/ ).each { desc -> |
|
434 |
found = true |
|
435 |
writer.writeCharacters("\t") |
|
436 |
writer.writeStartElement("item") |
|
437 |
matches = (desc =~ /(?s)([A-Z]{3}):? *([^;\n]+?) +[;\n]/) |
|
438 |
writer.writeAttribute("type", matches[0][1]) |
|
439 |
writer.writeStartElement("span") |
|
440 |
writer.writeCharacters(matches[0][1]+" ") |
|
441 |
writer.writeEndElement() // span |
|
442 |
writer.writeCharacters(matches[0][2]) |
|
443 |
writer.writeEndElement() // item |
|
449 |
if (value.length() > 1) { |
|
450 |
|
|
444 | 451 |
writer.writeCharacters("\n") |
452 |
writer.writeStartElement("list") |
|
453 |
writer.writeAttribute("rend", att.trim()) |
|
454 |
writer.writeAttribute("type", "unordered") |
|
455 |
writer.writeCharacters("\n") |
|
456 |
found = false |
|
457 |
|
|
458 |
value.findAll( /(?s)[A-Z]{3}:? *([^;\n]+?) +[;\n]/ ).each { desc -> |
|
459 |
found = true |
|
460 |
writer.writeCharacters("\t") |
|
461 |
writer.writeStartElement("item") |
|
462 |
writer.writeAttribute("type", matches[0][1]) |
|
463 |
writer.writeStartElement("p") |
|
464 |
matches = (desc =~ /(?s)([A-Z]{3}):? *([^;\n]+?) +[;\n]/) |
|
465 |
|
|
466 |
writer.writeStartElement("span") |
|
467 |
writer.writeCharacters(matches[0][1]+" ") |
|
468 |
writer.writeEndElement() // span |
|
469 |
writer.writeCharacters(matches[0][2]) |
|
470 |
writer.writeEndElement() // p |
|
471 |
writer.writeEndElement() // item |
|
472 |
writer.writeCharacters("\n") |
|
473 |
} |
|
474 |
if (!found) { |
|
475 |
println "Warning: '$att' prefixes not found in: '$value'" |
|
476 |
writer.writeStartElement("p") |
|
477 |
writer.writeCharacters(value) |
|
478 |
writer.writeEndElement() // p |
|
479 |
} |
|
480 |
writer.writeEndElement() // list |
|
481 |
writer.writeCharacters("\n") |
|
445 | 482 |
} |
446 |
if (!found) { |
|
447 |
println "Warning: '$att' prefixes not found in: '$value'" |
|
448 |
writer.writeCharacters(value) |
|
449 |
} |
|
450 |
writer.writeEndElement() // list |
|
483 |
writer.writeEndElement() // ab |
|
451 | 484 |
writer.writeCharacters("\n") |
452 | 485 |
} |
453 | 486 |
|
454 | 487 |
def writeMetadataDate(def record, def att, def writer) { |
455 | 488 |
String value = record.get(att) |
456 |
if (value.length() == 0) return |
|
489 |
if (value.length() == 0) return null
|
|
457 | 490 |
|
458 | 491 |
String att_normalized = AsciiUtils.buildAttributeId(att) |
459 | 492 |
matches = (value =~ /([0-9]{2})\/([0-9]{2})\/([0-9]{4})/) |
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java (revision 3217) | ||
---|---|---|
164 | 164 |
} |
165 | 165 |
} |
166 | 166 |
catch (ThreadDeath td) { |
167 |
Log.warning("Import aborted."); |
|
167 | 168 |
return Status.CANCEL_STATUS; |
168 | 169 |
} |
169 | 170 |
catch (Exception e) { |
170 | 171 |
// System.out.println(NLS.bind(TXMUIMessages.errorWhileRunningScriptColonP0, e)); |
171 | 172 |
Log.printStackTrace(e); |
173 |
Log.warning("Import failed."); |
|
172 | 174 |
return new Status(Status.ERROR, "org.txm.groovy.core", e.getMessage()); |
173 | 175 |
} |
174 | 176 |
finally { |
Formats disponibles : Unified diff