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 |
|
|