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