Révision 3452

TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/cqp/ShrinkCQLValuesMacro.groovy (revision 3452)
16 16

  
17 17
if (!ParametersDialog.open(this)) return
18 18

  
19

  
20 19
values = values.replace("\n", "|").replace("\t", "|").replace(" ", "|").replaceAll("(\\|)++", "|").trim()
21 20

  
22 21
println "RESULT:"
23 22
println getShortCQL(values.split("\\|") as List)
24 23

  
25 24
def getShortCQL(def list) {
25
	
26
	list.sort()
26 27
	def origtree = ["":list]
27 28
	breakNode(origtree, "", 0)
28 29
	def CQL1 = list.join("|")
......
35 36
}
36 37

  
37 38
def breakNode(def tree, def key, def p) {
39
	
38 40
	def space = (" "*p)
39 41
	//println space + "breaking: $key of $tree at $p"
40 42
		
......
61 63

  
62 64

  
63 65
def writeNode(def tree) {
66
	
64 67
	def s = ""
65 68
	//println "tree: "+tree
66 69

  
TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/projects/antract/ImporterCorpusOkapiMacro.groovy (revision 3452)
26 26
//@Field @Option(name="identifiant_corpus_okapi", usage="Identifiant du corpus Okapi à importer", widget="String", required=true, def="")
27 27
//def identifiant_corpus_okapi
28 28

  
29
maxCQLLimit = 15500
30

  
29 31
if (!(corpusViewSelection instanceof CQPCorpus)) {
30 32
	monitorShowError("Erreur: la sélection n'est pas un corpus.")
31 33
	return false
......
78 80
//}
79 81

  
80 82
liste_identifiants_sujets = liste_identifiants_sujets.replace("\n", "|").replace("\t", "|").replace(" ", "|").replaceAll("(\\|)++", "|").trim()
81
println "Création du sous-corpus avec la liste: $liste_identifiants_sujets"
83

  
84
liste_identifiants_sujets = (liste_identifiants_sujets.split("\\|") as List)
85
liste_identifiants_sujets.remove("")
86
liste_identifiants_sujets.unique()
87
liste_identifiants_sujets.sort()
88

  
89
nb_identifiers = liste_identifiants_sujets.size()
90
println "Création du sous-corpus $nom_sous_corpus avec une liste de $nb_identifiers identifiants : $liste_identifiants_sujets"
91

  
82 92
String prop = "div_id"
83 93
if (parentCorpusName.startsWith("AFNOTICES")) {
84 94
	prop = "notice_identifiantdelanotice"
85 95
}
86 96

  
87
liste_identifiants_sujets = (liste_identifiants_sujets.split("\\|") as List)
88
liste_identifiants_sujets.remove("")
89
liste_identifiants_sujets.unique()
90
liste_identifiants_sujets = getShortCQL(liste_identifiants_sujets)
97
regex_identifiants_sujets = liste_identifiants_sujets.join('|')
91 98

  
92
String query = "[_.$prop=\"$liste_identifiants_sujets\"] expand to $prop"
93
println "CQL=$query"
94
if (query.length() > 15500) {
95
	monitorShowError("Erreur : la requête CQL est trop longue (${query.length()}).")
99
query = "[_.$prop=\"$regex_identifiants_sujets\"] expand to $prop"
100

  
101
// println "query length = "+query.length()
102

  
103
if (query.length() > maxCQLLimit) {
104
	print "Reducing too long query: ${query.length()} characters..."
105
	original_regex_identifiants_sujets = regex_identifiants_sujets
106
	regex_identifiants_sujets = getShortCQL(liste_identifiants_sujets)
107
	query = "[_.$prop=\"$regex_identifiants_sujets\"] expand to $prop"
108
	println " to ${query.length()} characters."
109
	println "("+original_regex_identifiants_sujets.size()+")" + original_regex_identifiants_sujets
110
	println "-->"
111
	println "("+regex_identifiants_sujets.size()+")" + regex_identifiants_sujets
112
	if (query.length() > maxCQLLimit) {
113
		monitorShowError("Erreur : impossible de créer le sous-corpus, la requête CQL est trop longue (${query.length()}).")
96 114
	return
115
	}
97 116
}
117

  
118
println "CQL = $query"
119

  
98 120
Subcorpus sub = parentCorpus.createSubcorpus(new CQLQuery(query), nom_sous_corpus)
99 121

  
122
nb_matches = sub.getMatches().size()
123
// println nom_sous_corpus+" est composé de "+nb_matches+" éléments."
124

  
100 125
int s = sub.getSize()
101
if (s > 0) {
126
if (nb_matches == nb_identifiers) {
102 127
	println "$nom_sous_corpus subcorpus is created."
103 128
	monitor.syncExec(new Runnable() {
104 129
					public void run() {
......
107 132
					}
108 133
				});
109 134
} else {
110
	monitorShowError("Erreur: the created corpus is empty!")
135
	println "Error: bad query, $nb_matches elements in sub-corpus instead of $nb_identifiers"
136
	monitorShowError("Error: bad query, $nb_matches elements in sub-corpus instead of $nb_identifiers")
111 137
}
112 138

  
113 139
// UTILS UTILS UTILS UTILS UTILS UTILS UTILS
......
188 214
		}
189 215
	});
190 216
}
191

  

Formats disponibles : Unified diff