Révision 1200
tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Line.java (revision 1200) | ||
---|---|---|
299 | 299 |
} |
300 | 300 |
|
301 | 301 |
return LangFormater.format(StringUtils.join(words, wordSeparator), |
302 |
concordance.getCorpus().getLang()); //$NON-NLS-1$ |
|
302 |
concordance.getCorpus().getLanguage()); //$NON-NLS-1$
|
|
303 | 303 |
} |
304 | 304 |
|
305 | 305 |
/** |
... | ... | |
349 | 349 |
currentPos++; // next position |
350 | 350 |
} |
351 | 351 |
return LangFormater.format(StringUtils.join(words, wordSeparator), |
352 |
concordance.getCorpus().getLang()); //$NON-NLS-1$ |
|
352 |
concordance.getCorpus().getLanguage()); //$NON-NLS-1$
|
|
353 | 353 |
} |
354 | 354 |
|
355 | 355 |
/** |
... | ... | |
396 | 396 |
currentPos++; |
397 | 397 |
} |
398 | 398 |
return LangFormater.format(StringUtils.join(words, wordSeparator), |
399 |
concordance.getCorpus().getLang()); |
|
399 |
concordance.getCorpus().getLanguage());
|
|
400 | 400 |
} |
401 | 401 |
|
402 | 402 |
/** The properties to process. */ |
... | ... | |
430 | 430 |
words.add(StringUtils.join(word, "_")); //$NON-NLS-1$ |
431 | 431 |
} |
432 | 432 |
return LangFormater.format(StringUtils.join(words, " "), //$NON-NLS-1$ |
433 |
concordance.getCorpus().getLang()); //$NON-NLS-1$ |
|
433 |
concordance.getCorpus().getLanguage()); //$NON-NLS-1$
|
|
434 | 434 |
} |
435 | 435 |
|
436 | 436 |
/** |
... | ... | |
458 | 458 |
words.add(StringUtils.join(word, wordSeparator)); |
459 | 459 |
} |
460 | 460 |
return LangFormater.format(StringUtils.join(words, wordSeparator), |
461 |
concordance.getCorpus().getLang()); //$NON-NLS-1$ |
|
461 |
concordance.getCorpus().getLanguage()); //$NON-NLS-1$
|
|
462 | 462 |
} |
463 | 463 |
|
464 | 464 |
/** |
... | ... | |
485 | 485 |
} |
486 | 486 |
|
487 | 487 |
return LangFormater.format(StringUtils.join(words, " "), //$NON-NLS-1$ |
488 |
concordance.getCorpus().getLang()); //$NON-NLS-1$ |
|
488 |
concordance.getCorpus().getLanguage()); //$NON-NLS-1$
|
|
489 | 489 |
} |
490 | 490 |
|
491 | 491 |
/** |
tmp/org.txm.para.core/src/org/txm/para/core/functions/ParaBrowser.java (revision 1200) | ||
---|---|---|
214 | 214 |
return new Pair<String, QueryResult>("error", null); |
215 | 215 |
} |
216 | 216 |
return new Pair<String, QueryResult>(LangFormater.format(text, corpus |
217 |
.getLang()), result); |
|
217 |
.getLanguage()), result);
|
|
218 | 218 |
} |
219 | 219 |
// return keywordsViewPropValues; |
220 | 220 |
return new Pair<String, QueryResult>("error no property", null); |
tmp/org.txm.analec.feature/feature.xml (revision 1200) | ||
---|---|---|
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 2 |
<feature |
3 |
id="org.txm.analec.feature"
|
|
3 |
id="org.txm.annotation.urs.feature"
|
|
4 | 4 |
label="Annotation URS (Unité-Relation-Schéma)" |
5 | 5 |
version="1.0.0.qualifier" |
6 | 6 |
provider-name="Textometrie.org"> |
... | ... | |
83 | 83 |
</requires> |
84 | 84 |
|
85 | 85 |
<plugin |
86 |
id="org.txm.analec.rcp"
|
|
86 |
id="org.txm.annotation.urs.rcp"
|
|
87 | 87 |
download-size="0" |
88 | 88 |
install-size="0" |
89 | 89 |
version="0.0.0" |
tmp/org.txm.analec.feature/.project (revision 1200) | ||
---|---|---|
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 2 |
<projectDescription> |
3 |
<name>org.txm.analec.feature</name>
|
|
3 |
<name>org.txm.annotation.urs.feature</name>
|
|
4 | 4 |
<comment></comment> |
5 | 5 |
<projects> |
6 | 6 |
</projects> |
tmp/org.txm.analec.rcp/.project (revision 1200) | ||
---|---|---|
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 2 |
<projectDescription> |
3 |
<name>org.txm.analec.rcp</name>
|
|
3 |
<name>org.txm.annotation.urs.rcp</name>
|
|
4 | 4 |
<comment></comment> |
5 | 5 |
<projects> |
6 | 6 |
</projects> |
... | ... | |
26 | 26 |
<nature>org.eclipse.pde.PluginNature</nature> |
27 | 27 |
<nature>org.eclipse.jdt.core.javanature</nature> |
28 | 28 |
</natures> |
29 |
<filteredResources> |
|
30 |
|
|
31 |
</filteredResources> |
|
32 | 29 |
</projectDescription> |
tmp/org.txm.analec.rcp/src/org/eclipse/jface/fieldassist/TXMSimpleContentProposalProvider.java (revision 1200) | ||
---|---|---|
13 | 13 |
|
14 | 14 |
import java.util.ArrayList; |
15 | 15 |
|
16 |
import org.txm.analec.preferences.AnalecPreferencePage;
|
|
17 |
import org.txm.analec.preferences.AnalecPreferences;
|
|
16 |
import org.txm.annotation.urs.preferences.AnalecPreferencePage;
|
|
17 |
import org.txm.annotation.urs.preferences.AnalecPreferences;
|
|
18 | 18 |
import org.txm.core.preferences.TXMPreferences; |
19 | 19 |
import org.txm.rcp.TxmPreferences; |
20 | 20 |
|
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/imports/AnalecAnnotationsImporter.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.imports; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.io.FilenameFilter; |
|
5 |
import java.io.IOException; |
|
6 |
import java.io.InputStream; |
|
7 |
import java.net.MalformedURLException; |
|
8 |
import java.util.ArrayList; |
|
9 |
import java.util.Arrays; |
|
10 |
import java.util.HashMap; |
|
11 |
import java.util.List; |
|
12 |
|
|
13 |
import javax.xml.stream.XMLInputFactory; |
|
14 |
import javax.xml.stream.XMLStreamConstants; |
|
15 |
import javax.xml.stream.XMLStreamException; |
|
16 |
import javax.xml.stream.XMLStreamReader; |
|
17 |
|
|
18 |
import org.apache.commons.lang.StringUtils; |
|
19 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
20 |
import org.txm.Toolbox; |
|
21 |
import org.txm.importer.PersonalNamespaceContext; |
|
22 |
import org.txm.searchengine.cqp.AbstractCqiClient; |
|
23 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
24 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
25 |
import org.txm.searchengine.cqp.corpus.QueryResult; |
|
26 |
import org.txm.searchengine.cqp.corpus.query.CQLQuery; |
|
27 |
import org.txm.utils.logger.Log; |
|
28 |
|
|
29 |
import visuAnalec.donnees.Corpus; |
|
30 |
import visuAnalec.elements.Relation; |
|
31 |
import visuAnalec.elements.Schema; |
|
32 |
import visuAnalec.elements.Unite; |
|
33 |
import visuAnalec.fichiers.FichiersGlozz; |
|
34 |
import visuAnalec.vue.Vue; |
|
35 |
|
|
36 |
public class AnalecAnnotationsImporter { |
|
37 |
|
|
38 |
protected MainCorpus mainCorpus; |
|
39 |
protected Corpus analecCorpus; |
|
40 |
protected File annotationsDirectory; |
|
41 |
protected Vue analecVue; |
|
42 |
protected IProgressMonitor monitor; |
|
43 |
protected XMLInputFactory factory; |
|
44 |
protected File aamFile; |
|
45 |
protected static PersonalNamespaceContext Nscontext = new PersonalNamespaceContext(); |
|
46 |
|
|
47 |
public AnalecAnnotationsImporter(IProgressMonitor monitor, File outputDirectory, File aamFile, MainCorpus mainCorpus, Corpus analecCorpus, Vue analecVue) { |
|
48 |
this.annotationsDirectory = outputDirectory; |
|
49 |
this.aamFile = aamFile; |
|
50 |
this.mainCorpus = mainCorpus; |
|
51 |
this.analecCorpus = analecCorpus; |
|
52 |
this.analecVue = analecVue; |
|
53 |
this.monitor = monitor; |
|
54 |
} |
|
55 |
|
|
56 |
public boolean process() throws Exception { |
|
57 |
if (!annotationsDirectory.exists()) { |
|
58 |
System.out.println("Error: annotationsDirectory does not exist: "+annotationsDirectory.getAbsolutePath()); |
|
59 |
return false; |
|
60 |
} |
|
61 |
if (!annotationsDirectory.isDirectory()) { |
|
62 |
System.out.println("Error: annotationsDirectory is not a directory: "+annotationsDirectory.getAbsolutePath()); |
|
63 |
return false; |
|
64 |
} |
|
65 |
if (!aamFile.exists()) { |
|
66 |
System.out.println("Error: aamFile does not exist: "+aamFile.getAbsolutePath()); |
|
67 |
return false; |
|
68 |
} |
|
69 |
|
|
70 |
if (!FichiersGlozz.importerModeleGlozz(analecCorpus, aamFile)) { |
|
71 |
System.out.println("Error while importing Glozz model: "+aamFile); |
|
72 |
return false; |
|
73 |
} |
|
74 |
|
|
75 |
File[] ursFiles = annotationsDirectory.listFiles(new FilenameFilter() { |
|
76 |
@Override |
|
77 |
public boolean accept(File dir, String name) { |
|
78 |
return name.matches(".+-urs\\.xml"); |
|
79 |
} |
|
80 |
}); |
|
81 |
|
|
82 |
if (ursFiles == null) { |
|
83 |
System.out.println("No XML files found in "+annotationsDirectory); |
|
84 |
return false; |
|
85 |
} |
|
86 |
if (ursFiles.length == 0) { |
|
87 |
System.out.println("No XML files found in "+annotationsDirectory); |
|
88 |
return false; |
|
89 |
} |
|
90 |
Arrays.sort(ursFiles); |
|
91 |
|
|
92 |
factory = XMLInputFactory.newInstance(); |
|
93 |
List<String> cqpTextIds = mainCorpus.getProject().getTextsID(); |
|
94 |
|
|
95 |
List<Integer> all_result_summary = Arrays.asList(0,0,0,0,0,0,0,0); |
|
96 |
|
|
97 |
if (monitor != null) monitor.subTask("Processing "+ursFiles.length+" texts..."); |
|
98 |
for (File xmlTXMFile : ursFiles) { |
|
99 |
String textid = xmlTXMFile.getName().substring(0, xmlTXMFile.getName().length() - 8); |
|
100 |
System.out.println("Processing text: "+textid); |
|
101 |
if (cqpTextIds.contains(textid)) { |
|
102 |
if (monitor != null) monitor.subTask("Processing "+textid+" text..."); |
|
103 |
// N unit, N unit error, N unit no match error, N unit too much match error, N Relation, N Relation error, N Schema, N Schema error |
|
104 |
List<Integer> result_summary = processText(textid, xmlTXMFile); |
|
105 |
|
|
106 |
System.out.println(textid+" import report: "); |
|
107 |
System.out.println(" N Units added: "+result_summary.get(0)); |
|
108 |
System.out.println(" N Units error: "+result_summary.get(1)); |
|
109 |
System.out.println(" N Units no match error: "+result_summary.get(2)); |
|
110 |
System.out.println(" N Units too much match error: "+result_summary.get(3)); |
|
111 |
System.out.println(" N Relations added: "+result_summary.get(4)); |
|
112 |
System.out.println(" N Relations error: "+result_summary.get(5)); |
|
113 |
System.out.println(" N Schemas added: "+result_summary.get(6)); |
|
114 |
System.out.println(" N Schemas error: "+result_summary.get(7)); |
|
115 |
|
|
116 |
for (int i = 0 ; i < all_result_summary.size() ; i++) all_result_summary.set(i, all_result_summary.get(i)+result_summary.get(i)); |
|
117 |
|
|
118 |
} else { |
|
119 |
System.out.println("Warning: cannot found text with ID="+textid+" in current CQP corpus."); |
|
120 |
} |
|
121 |
} |
|
122 |
|
|
123 |
System.out.println("Final import report: "); |
|
124 |
System.out.println(" N Units added: "+all_result_summary.get(0)); |
|
125 |
System.out.println(" N Units error: "+all_result_summary.get(1)); |
|
126 |
System.out.println(" N Units no match error: "+all_result_summary.get(2)); |
|
127 |
System.out.println(" N Units too much match error: "+all_result_summary.get(3)); |
|
128 |
System.out.println(" N Relations added: "+all_result_summary.get(4)); |
|
129 |
System.out.println(" N Relations error: "+all_result_summary.get(5)); |
|
130 |
System.out.println(" N Schemas added: "+all_result_summary.get(6)); |
|
131 |
System.out.println(" N Schemas error: "+all_result_summary.get(7)); |
|
132 |
|
|
133 |
return true; |
|
134 |
} |
|
135 |
|
|
136 |
private List<Integer> processText(String textid, File xmlTXMFile) throws Exception { |
|
137 |
AbstractCqiClient CQI = CQPSearchEngine.getCqiClient(); |
|
138 |
// N unit, N unit error, N unit no match error, N unit too much match error, N Relation, N Relation error, N Schema, N Schema error |
|
139 |
int nUnitsAdded = 0; |
|
140 |
int nUnitsError = 0; |
|
141 |
int nUnitsNoMatchError = 0; |
|
142 |
int nUnitsTooMuchMatchError = 0; |
|
143 |
int nRelationsAdded = 0; |
|
144 |
int nRelationsError = 0; |
|
145 |
int nSchemaAdded = 0; |
|
146 |
int nSchemaError = 0; |
|
147 |
|
|
148 |
unites.clear(); |
|
149 |
relations.clear(); |
|
150 |
schemas.clear(); |
|
151 |
elementProperties.clear(); |
|
152 |
|
|
153 |
if (!parseXMLTXMFile(xmlTXMFile)) return null; |
|
154 |
|
|
155 |
// if (unites.size() > 0) System.out.println(unites); |
|
156 |
// if (relations.size() > 0) System.out.println(relations); |
|
157 |
// if (schemas.size() > 0) System.out.println(schemas); |
|
158 |
// if (elementProperties.size() > 0) System.out.println(elementProperties); |
|
159 |
// for (String u : unites.keySet()) if (!elementProperties.containsKey(u+"-fs")) System.out.println("MISSIGN ELEM PROPERTIES: "+u); |
|
160 |
// for (String u : relations.keySet()) if (!elementProperties.containsKey(u+"-fs")) System.out.println("MISSIGN ELEM PROPERTIES: "+u); |
|
161 |
// for (String u : schemas.keySet()) if (!elementProperties.containsKey(u+"-fs")) System.out.println("MISSIGN ELEM PROPERTIES: "+u); |
|
162 |
|
|
163 |
for (String id : unites.keySet()) { |
|
164 |
String ana = unites.get(id)[0]; |
|
165 |
String type = unites.get(id)[1]; |
|
166 |
String deb = unites.get(id)[2]; |
|
167 |
String fin = unites.get(id)[3]; |
|
168 |
if (elementProperties.containsKey(ana)) { |
|
169 |
|
|
170 |
try { |
|
171 |
CQLQuery query = new CQLQuery("[_.text_id=\""+textid+"\" & id=\""+deb+"|"+fin+"\"]"); |
|
172 |
QueryResult result = mainCorpus.query(query, "TMP", true); |
|
173 |
int[] starts = result.getStarts(); |
|
174 |
result.drop(); |
|
175 |
if (starts.length == 1) { |
|
176 |
//System.out.println("create unite: "+type+" ["+deb+", "+fin+"]"); |
|
177 |
Unite unite = analecCorpus.addUniteSaisie(type, starts[0], starts[0]); |
|
178 |
HashMap<String, String> props = elementProperties.get(ana); |
|
179 |
for (String prop : props.keySet()) { |
|
180 |
unite.putProp(prop, props.get(prop)); |
|
181 |
} |
|
182 |
unitesRef.put(id, unite); |
|
183 |
nUnitsAdded++; |
|
184 |
} else if (starts.length == 2) { |
|
185 |
Unite unite = analecCorpus.addUniteSaisie(type, starts[0], starts[1]); |
|
186 |
//System.out.println("create unite: "+type+" ["+deb+", "+fin+"]"); |
|
187 |
HashMap<String, String> props = elementProperties.get(ana); |
|
188 |
for (String prop : props.keySet()) { |
|
189 |
unite.putProp(prop, props.get(prop)); |
|
190 |
} |
|
191 |
unitesRef.put(id, unite); |
|
192 |
nUnitsAdded++; |
|
193 |
} else { |
|
194 |
nUnitsError++; |
|
195 |
if (starts.length == 0) { |
|
196 |
System.out.println("WARNING: no position found for query "+query+"."); |
|
197 |
nUnitsNoMatchError++; |
|
198 |
} else { |
|
199 |
System.out.println("WARNING: too many positions found for query "+query+" -> "+Arrays.toString(starts)); |
|
200 |
nUnitsTooMuchMatchError++; |
|
201 |
} |
|
202 |
} |
|
203 |
} catch(Exception e) { |
|
204 |
System.out.println("Error while getting word positions of id="+deb+" and id="+fin+": "+e.getLocalizedMessage()); |
|
205 |
Log.printStackTrace(e); |
|
206 |
} |
|
207 |
} else { |
|
208 |
System.out.println("Warning no properties found for element id="+id+" and ana="+ana); |
|
209 |
} |
|
210 |
} |
|
211 |
|
|
212 |
for (String id : relations.keySet()) { |
|
213 |
String ana = relations.get(id)[0]; |
|
214 |
String type = relations.get(id)[1]; |
|
215 |
String target = relations.get(id)[2]; |
|
216 |
|
|
217 |
if (elementProperties.containsKey(ana)) { |
|
218 |
|
|
219 |
String[] wordsref = target.split(" "); |
|
220 |
String[] wordsid = new String[wordsref.length]; |
|
221 |
for (int i = 0 ; i < wordsref.length ; i++) wordsid[i] = wordsref[i].substring(1); |
|
222 |
try { |
|
223 |
Unite elt1 = unitesRef.get(wordsid[0]); |
|
224 |
Unite elt2 = unitesRef.get(wordsid[1]); |
|
225 |
if (elt1 != null && elt2 != null) { |
|
226 |
//System.out.println("create relation: "+type+" ["+deb+", "+fin+"]"); |
|
227 |
|
|
228 |
Relation relation = analecCorpus.addRelationSaisie(type, elt1, elt2); |
|
229 |
HashMap<String, String> props = elementProperties.get(ana); |
|
230 |
for (String prop : props.keySet()) { |
|
231 |
relation.putProp(prop, props.get(prop)); |
|
232 |
} |
|
233 |
nRelationsAdded++; |
|
234 |
} else { |
|
235 |
System.out.println("ERROR: relation element not found "+Arrays.toString(wordsref)); |
|
236 |
nRelationsError++; |
|
237 |
} |
|
238 |
} catch(Exception e) { |
|
239 |
|
|
240 |
} |
|
241 |
} else { |
|
242 |
System.out.println("Warning no properties found for element id="+id); |
|
243 |
} |
|
244 |
} |
|
245 |
|
|
246 |
for (String id : schemas.keySet()) { |
|
247 |
String ana = schemas.get(id)[0]; |
|
248 |
String type = schemas.get(id)[1]; |
|
249 |
String target = schemas.get(id)[2]; |
|
250 |
if (elementProperties.containsKey(ana)) { |
|
251 |
String[] unitsref = target.split(" "); |
|
252 |
try { |
|
253 |
//System.out.println("create relation: "+type+" ["+deb+", "+fin+"]"); |
|
254 |
Schema schema = new Schema(type); |
|
255 |
for (String unitid : unitsref) { |
|
256 |
unitid = unitid.substring(1); // remove '#' |
|
257 |
if (unitesRef.containsKey(unitid)) { |
|
258 |
Unite unite = unitesRef.get(unitid); |
|
259 |
schema.ajouter(unite); |
|
260 |
} else { |
|
261 |
System.out.println("Warning: missing unit id: "+unitid); |
|
262 |
nSchemaError++; |
|
263 |
} |
|
264 |
} |
|
265 |
analecCorpus.addSchemaLu(schema); |
|
266 |
HashMap<String, String> props = elementProperties.get(ana); |
|
267 |
for (String prop : props.keySet()) { |
|
268 |
schema.putProp(prop, props.get(prop)); |
|
269 |
} |
|
270 |
nSchemaAdded++; |
|
271 |
} catch(Exception e) { |
|
272 |
System.out.println("Error while creating schema with id="+id); |
|
273 |
} |
|
274 |
} else { |
|
275 |
System.out.println("Warning no properties found for element id="+id); |
|
276 |
} |
|
277 |
} |
|
278 |
|
|
279 |
return Arrays.asList(nUnitsAdded, nUnitsError, nUnitsNoMatchError, nUnitsTooMuchMatchError, |
|
280 |
nRelationsAdded, nRelationsError, |
|
281 |
nSchemaAdded, nSchemaError); |
|
282 |
} |
|
283 |
|
|
284 |
private boolean parseXMLTXMFile(File xmlTXMFile) throws XMLStreamException, MalformedURLException, IOException { |
|
285 |
InputStream inputData = xmlTXMFile.toURI().toURL().openStream(); |
|
286 |
factory = XMLInputFactory.newInstance(); |
|
287 |
XMLStreamReader parser = factory.createXMLStreamReader(inputData); |
|
288 |
|
|
289 |
String currentType = null; |
|
290 |
String currentN = null; |
|
291 |
String currentAna = null; |
|
292 |
String currentName = null; |
|
293 |
String currentPropValue = null; |
|
294 |
|
|
295 |
int processMode = 0; // 0 nothing, 1 elements 2 properties |
|
296 |
|
|
297 |
if (!goToStandOff(parser)) { |
|
298 |
System.out.println("Error: cannot find the 'standOff' element in "+xmlTXMFile); |
|
299 |
return false; |
|
300 |
} |
|
301 |
String localname = null; |
|
302 |
for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) { |
|
303 |
switch (event) { |
|
304 |
case XMLStreamConstants.START_ELEMENT: |
|
305 |
localname = parser.getLocalName(); |
|
306 |
|
|
307 |
if (localname.equals("annotationGrp")) { |
|
308 |
currentType = parser.getAttributeValue(null, "type"); |
|
309 |
currentN = parser.getAttributeValue(null, "subtype"); |
|
310 |
if (currentType != null && currentN != null) { |
|
311 |
processMode = 1; |
|
312 |
} else { |
|
313 |
System.out.println("Warning found "+localname+" without 'type' and 'n' attribute"); |
|
314 |
processMode = 0; |
|
315 |
} |
|
316 |
} else if (localname.equals("div")) { |
|
317 |
String type = parser.getAttributeValue(null, "type"); |
|
318 |
if (type == null) type = ""; |
|
319 |
if (type.endsWith("-fs")) |
|
320 |
processMode = 2; |
|
321 |
} |
|
322 |
|
|
323 |
if (processMode == 1) { |
|
324 |
if (localname.equals("span") || localname.equals("link")) { |
|
325 |
String id = parser.getAttributeValue(null, "id"); |
|
326 |
String ana = parser.getAttributeValue(null, "ana"); |
|
327 |
//System.out.println("SPAN id="+id +" ana="+ana+" currentType="+currentType+" currentN="+currentN); |
|
328 |
if ("Unit".equals(currentType)) { |
|
329 |
String from = parser.getAttributeValue(null, "from"); |
|
330 |
String to = parser.getAttributeValue(null, "to"); |
|
331 |
registerUnite(id, ana, currentN, from, to); |
|
332 |
} else if ("Relation".equals(currentType)) { |
|
333 |
String target = parser.getAttributeValue(null, "target"); |
|
334 |
registerRelation(id, ana, currentN, target); |
|
335 |
} else if ("Schema".equals(currentType)) { |
|
336 |
String target = parser.getAttributeValue(null, "target"); |
|
337 |
registerSchema(id, ana, currentN, target); |
|
338 |
} |
|
339 |
} |
|
340 |
} else if (processMode == 2) { |
|
341 |
if (localname.equals("fs")) { |
|
342 |
currentAna = parser.getAttributeValue(null, "id"); |
|
343 |
if (elementProperties.get(currentAna) != null) System.out.println("WARNING: duplicated element properties: "+currentAna); |
|
344 |
elementProperties.put(currentAna, new HashMap<String, String>()); |
|
345 |
} else if (localname.equals("f")) { |
|
346 |
currentName= parser.getAttributeValue(null, "name"); |
|
347 |
currentPropValue = ""; |
|
348 |
} |
|
349 |
} else { |
|
350 |
// nothing to do |
|
351 |
} |
|
352 |
|
|
353 |
break; |
|
354 |
case XMLStreamConstants.CHARACTERS: |
|
355 |
if (processMode == 2 && currentAna != null && currentName != null) { |
|
356 |
currentPropValue += parser.getText(); |
|
357 |
} |
|
358 |
break; |
|
359 |
case XMLStreamConstants.END_ELEMENT: |
|
360 |
localname = parser.getLocalName(); |
|
361 |
if (localname.equals("standOff")) { // stop all |
|
362 |
parser.close(); |
|
363 |
inputData.close(); |
|
364 |
return true; |
|
365 |
} else if (processMode == 1 && localname.equals("annotationGrp")) { // stop all |
|
366 |
currentType = null; |
|
367 |
currentN = null; |
|
368 |
processMode = 0; |
|
369 |
} else if (processMode == 2 && localname.equals("div")) { |
|
370 |
processMode = 0; |
|
371 |
} |
|
372 |
|
|
373 |
if (processMode == 1) { |
|
374 |
|
|
375 |
} else if (processMode == 2) { |
|
376 |
if (localname.equals("fs")) { |
|
377 |
currentAna = null; |
|
378 |
} else if (localname.equals("f")) { |
|
379 |
if (currentName != null && currentAna != null) { |
|
380 |
elementProperties.get(currentAna).put(currentName, currentPropValue); |
|
381 |
} |
|
382 |
currentName = null; |
|
383 |
} |
|
384 |
} else { |
|
385 |
// nothing to do |
|
386 |
} |
|
387 |
|
|
388 |
break; |
|
389 |
|
|
390 |
case XMLStreamConstants.END_DOCUMENT: |
|
391 |
parser.close(); |
|
392 |
inputData.close(); |
|
393 |
return false; |
|
394 |
} |
|
395 |
} |
|
396 |
parser.close(); |
|
397 |
inputData.close(); |
|
398 |
|
|
399 |
|
|
400 |
return false; // standOff not found |
|
401 |
} |
|
402 |
|
|
403 |
HashMap<String, HashMap<String, String>> elementProperties = new HashMap<String, HashMap<String, String>>(); |
|
404 |
HashMap<String, String[]> unites = new HashMap<String, String[]>(); // id -> {ana, type, from, to} |
|
405 |
HashMap<String, Unite> unitesRef = new HashMap<String, Unite>(); // id -> Unite |
|
406 |
private void registerUnite(String id, String ana, String type, String from, String to) { |
|
407 |
String[] data = {ana.substring(1), type, from.substring(5), to.substring(5)}; |
|
408 |
if (unites.containsKey(id)) { |
|
409 |
System.out.println("Warning: duplicated Unite id: "+id); |
|
410 |
} else { |
|
411 |
unites.put(id, data); |
|
412 |
} |
|
413 |
} |
|
414 |
HashMap<String, String[]> relations = new HashMap<String, String[]>(); // id -> {ana, type, target} |
|
415 |
private void registerRelation(String id, String ana, String type, String target) { |
|
416 |
String[] data = {ana.substring(1), type, target}; |
|
417 |
if (relations.containsKey(id)) { |
|
418 |
System.out.println("Warning: duplicated Relation id: "+id); |
|
419 |
} else { |
|
420 |
relations.put(id, data); |
|
421 |
} |
|
422 |
} |
|
423 |
HashMap<String, String[]> schemas = new HashMap<String, String[]>(); // id -> {ana, type, target} |
|
424 |
private void registerSchema(String id, String ana, String type, String target) { |
|
425 |
String[] data = {ana.substring(1), type, target}; |
|
426 |
//System.out.println("R schema: "+id+" : "+Arrays.toString(data)); |
|
427 |
if (schemas.containsKey(id)) { |
|
428 |
System.out.println("Warning: duplicated Schema id: "+id); |
|
429 |
} else { |
|
430 |
schemas.put(id, data); |
|
431 |
} |
|
432 |
} |
|
433 |
|
|
434 |
private boolean goToStandOff(XMLStreamReader parser) throws XMLStreamException { |
|
435 |
for (int event = parser.next(); event != XMLStreamConstants.END_DOCUMENT; event = parser.next()) { |
|
436 |
switch (event) { |
|
437 |
case XMLStreamConstants.START_ELEMENT: |
|
438 |
String localname = parser.getLocalName(); |
|
439 |
if (localname.equals("standOff")) return true; |
|
440 |
break; |
|
441 |
} |
|
442 |
} |
|
443 |
return false; |
|
444 |
} |
|
445 |
} |
|
0 | 446 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/imports/DOMAnalecAnnotationsImporter.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.imports; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.io.FilenameFilter; |
|
5 |
import java.util.HashMap; |
|
6 |
|
|
7 |
import javax.xml.stream.XMLInputFactory; |
|
8 |
|
|
9 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
10 |
import org.txm.Toolbox; |
|
11 |
import org.txm.importer.PersonalNamespaceContext; |
|
12 |
import org.txm.searchengine.cqp.AbstractCqiClient; |
|
13 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
14 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
15 |
import org.txm.utils.xml.DomUtils; |
|
16 |
import org.w3c.dom.Document; |
|
17 |
import org.w3c.dom.Element; |
|
18 |
import org.w3c.dom.NodeList; |
|
19 |
|
|
20 |
import visuAnalec.donnees.Corpus; |
|
21 |
import visuAnalec.vue.Vue; |
|
22 |
|
|
23 |
public class DOMAnalecAnnotationsImporter { |
|
24 |
|
|
25 |
MainCorpus mainCorpus; |
|
26 |
Corpus analecCorpus; |
|
27 |
File annotationsDirectory; |
|
28 |
private Vue analecVue; |
|
29 |
private IProgressMonitor monitor; |
|
30 |
private XMLInputFactory factory; |
|
31 |
protected static PersonalNamespaceContext Nscontext = new PersonalNamespaceContext(); |
|
32 |
|
|
33 |
public DOMAnalecAnnotationsImporter(IProgressMonitor monitor, File outputDirectory, MainCorpus mainCorpus, Corpus analecCorpus, Vue analecVue) { |
|
34 |
this.annotationsDirectory = outputDirectory; |
|
35 |
this.mainCorpus = mainCorpus; |
|
36 |
this.analecCorpus = analecCorpus; |
|
37 |
this.analecVue = analecVue; |
|
38 |
this.monitor = monitor; |
|
39 |
} |
|
40 |
|
|
41 |
public boolean process() throws Exception { |
|
42 |
if (!annotationsDirectory.exists()) return false; |
|
43 |
if (!annotationsDirectory.isDirectory()) return false; |
|
44 |
|
|
45 |
File[] ursFiles = annotationsDirectory.listFiles(new FilenameFilter() { |
|
46 |
@Override |
|
47 |
public boolean accept(File dir, String name) { |
|
48 |
return name.matches(".+-urs\\.xml"); |
|
49 |
} |
|
50 |
}); |
|
51 |
|
|
52 |
if (ursFiles == null) { |
|
53 |
System.out.println("No XML files found in "+annotationsDirectory); |
|
54 |
return false; |
|
55 |
} |
|
56 |
if (ursFiles.length == 0) { |
|
57 |
System.out.println("No XML files found in "+annotationsDirectory); |
|
58 |
return false; |
|
59 |
} |
|
60 |
|
|
61 |
factory = XMLInputFactory.newInstance(); |
|
62 |
|
|
63 |
for (File xmlAnalec : ursFiles) { |
|
64 |
String textid = xmlAnalec.getName().substring(0, xmlAnalec.getName().length() - 8); |
|
65 |
System.out.println("Processing text: "+textid); |
|
66 |
|
|
67 |
processText(textid, xmlAnalec); |
|
68 |
} |
|
69 |
|
|
70 |
return true; |
|
71 |
} |
|
72 |
|
|
73 |
private void processText(String textid, File xmlAnalec) throws Exception { |
|
74 |
AbstractCqiClient CQI = CQPSearchEngine.getCqiClient(); |
|
75 |
|
|
76 |
HashMap<String, HashMap<String, String>> elementProperties = new HashMap<String, HashMap<String, String>>(); |
|
77 |
|
|
78 |
Document doc = DomUtils.load(xmlAnalec); |
|
79 |
NodeList textElements = doc.getElementsByTagName("stdf"); |
|
80 |
for (int iText = 0 ; iText < textElements.getLength() ; ) { |
|
81 |
Element text = (Element)textElements.item(iText); |
|
82 |
|
|
83 |
NodeList backElements = text.getElementsByTagName("annotations"); |
|
84 |
for (int iBack = 0 ; iBack < backElements.getLength() ; ) { |
|
85 |
Element back = (Element)backElements.item(iBack); |
|
86 |
|
|
87 |
NodeList divElements = text.getElementsByTagName("div"); |
|
88 |
for (int ifvLib = 0 ; ifvLib < divElements.getLength() ; ifvLib++) { |
|
89 |
Element divElement = (Element)divElements.item(ifvLib); |
|
90 |
String n = divElement.getAttribute("type"); |
|
91 |
if (n == null) n = ""; |
|
92 |
if (n.endsWith("-fs")) { |
|
93 |
getElementPropertiesFromFvLibElement(elementProperties, divElement); |
|
94 |
} |
|
95 |
} |
|
96 |
|
|
97 |
NodeList children = back.getElementsByTagName("spanGrp"); |
|
98 |
for (int iChild = 0 ; iChild < children.getLength() ; iChild++) { |
|
99 |
Element spanGrpElement = (Element)children.item(iChild); |
|
100 |
String type = spanGrpElement.getAttribute("type"); |
|
101 |
String n = spanGrpElement.getAttribute("subtype"); |
|
102 |
if (type.equals("Unit")) { |
|
103 |
getUnitesFromSpanGrp(spanGrpElement, n); |
|
104 |
} |
|
105 |
} |
|
106 |
|
|
107 |
children = back.getElementsByTagName("joinGrp"); |
|
108 |
for (int iChild = 0 ; iChild < children.getLength() ; iChild++) { |
|
109 |
Element joinGrpElement = (Element)children.item(iChild); |
|
110 |
String type = joinGrpElement.getAttribute("type"); |
|
111 |
String n = joinGrpElement.getAttribute("subtype"); |
|
112 |
if (type.equals("Relation")) { |
|
113 |
getRelationsFromJoinGrp(joinGrpElement, n); |
|
114 |
} |
|
115 |
} |
|
116 |
|
|
117 |
children = back.getElementsByTagName("joinGrp"); |
|
118 |
for (int iChild = 0 ; iChild < children.getLength() ; iChild++) { |
|
119 |
Element joinGrpElement = (Element)children.item(iChild); |
|
120 |
String type = joinGrpElement.getAttribute("type"); |
|
121 |
String n = joinGrpElement.getAttribute("subtype"); |
|
122 |
if (type.equals("Schema")) { |
|
123 |
getSchemasFromJoinGrp(joinGrpElement, n); |
|
124 |
} |
|
125 |
} |
|
126 |
|
|
127 |
break; // stop at first back |
|
128 |
} |
|
129 |
|
|
130 |
break; // stop at first text |
|
131 |
} |
|
132 |
} |
|
133 |
|
|
134 |
private void getSchemasFromJoinGrp(Element joinGrpElement, String n) { |
|
135 |
NodeList children = joinGrpElement.getElementsByTagName("join"); |
|
136 |
for (int iChild = 0 ; iChild < children.getLength() ; iChild++) { |
|
137 |
Element joinElement = (Element)children.item(iChild); |
|
138 |
String id = joinElement.getAttribute("id"); |
|
139 |
String target = joinElement.getAttribute("target"); |
|
140 |
String ana = joinElement.getAttribute("ana"); |
|
141 |
} |
|
142 |
} |
|
143 |
|
|
144 |
private void getRelationsFromJoinGrp(Element joinGrpElement, String n) { |
|
145 |
// TODO Auto-generated method stub |
|
146 |
|
|
147 |
} |
|
148 |
|
|
149 |
private void getUnitesFromSpanGrp(Element spanGrpElement, String n) { |
|
150 |
// TODO Auto-generated method stub |
|
151 |
|
|
152 |
} |
|
153 |
|
|
154 |
private void getElementPropertiesFromFvLibElement(HashMap<String, HashMap<String, String>> elementProperties, Element divElement) { |
|
155 |
NodeList fsElements = divElement.getElementsByTagName("fs"); |
|
156 |
for (int iChild = 0 ; iChild < fsElements.getLength() ; iChild++) { |
|
157 |
Element fsElement = (Element)fsElements.item(iChild); |
|
158 |
String id = fsElement.getAttribute("id"); |
|
159 |
|
|
160 |
if (elementProperties.containsKey(id)) { |
|
161 |
System.out.println("Warning: duplicated fsElement id: "+id); |
|
162 |
} else { |
|
163 |
HashMap<String, String> properties = new HashMap<String, String>(); |
|
164 |
elementProperties.put(id, properties); |
|
165 |
NodeList fElements = fsElement.getElementsByTagName("f"); |
|
166 |
for (int iChild2 = 0 ; iChild2 < fElements.getLength() ; iChild2++) { |
|
167 |
Element fElement = (Element)fElements.item(iChild2); |
|
168 |
String name = fElement.getAttribute("name"); |
|
169 |
if (properties.containsKey(name)) { |
|
170 |
System.out.println("Warning: duplicated fElement name: "+name+" in "+id+" fsElement."); |
|
171 |
} else { |
|
172 |
properties.put(name, fElement.getTextContent().trim()); |
|
173 |
} |
|
174 |
} |
|
175 |
} |
|
176 |
} |
|
177 |
} |
|
178 |
} |
|
0 | 179 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/ImportTEIAnnotations.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
|
|
5 |
import org.eclipse.core.commands.AbstractHandler; |
|
6 |
import org.eclipse.core.commands.ExecutionEvent; |
|
7 |
import org.eclipse.core.commands.ExecutionException; |
|
8 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
9 |
import org.eclipse.core.runtime.IStatus; |
|
10 |
import org.eclipse.core.runtime.Status; |
|
11 |
import org.kohsuke.args4j.Option; |
|
12 |
import org.txm.annotation.urs.AnalecCorpora; |
|
13 |
import org.txm.annotation.urs.Messages; |
|
14 |
import org.txm.annotation.urs.imports.AnalecAnnotationsImporter; |
|
15 |
import org.txm.rcp.swt.widget.parameters.ParametersDialog; |
|
16 |
import org.txm.rcp.utils.JobHandler; |
|
17 |
import org.txm.rcp.views.corpora.CorporaView; |
|
18 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
19 |
import org.txm.utils.logger.Log; |
|
20 |
|
|
21 |
import visuAnalec.donnees.Corpus; |
|
22 |
import visuAnalec.vue.Vue; |
|
23 |
/** |
|
24 |
* Export the Analec annotation of the selected Corpus |
|
25 |
* |
|
26 |
* @author mdecorde |
|
27 |
* |
|
28 |
*/ |
|
29 |
public class ImportTEIAnnotations extends AbstractHandler { |
|
30 |
|
|
31 |
@Option(name="directory",usage="the directory containing the XML-TEI-URS annotations files", widget="Folder", required=true, def="annotations") |
|
32 |
File directory; |
|
33 |
@Option(name="aamFile",usage="The Glozz model file", widget="FileOpen", required=true, def="model.aam") |
|
34 |
File aamFile; |
|
35 |
//@Option(name="standoffAnnotations",usage="select this if the directory contains standoff annotation files", widget="Boolean", required=true, def="false") |
|
36 |
//boolean standoffAnnotations; |
|
37 |
@Option(name="resetAnnotations",usage="Remove the old annotations", widget="Boolean", required=true, def="false") |
|
38 |
boolean resetAnnotations; |
|
39 |
/* (non-Javadoc) |
|
40 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
41 |
*/ |
|
42 |
@Override |
|
43 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
44 |
try { |
|
45 |
// Open the parameters input dialog box |
|
46 |
if (!ParametersDialog.open(this)) return null; |
|
47 |
|
|
48 |
Object first = CorporaView.getFirstSelectedObject(); |
|
49 |
if (!(first instanceof org.txm.searchengine.cqp.corpus.CQPCorpus)) { |
|
50 |
System.out.println(Messages.ImportTEIAnnotations_0+first); |
|
51 |
return null; |
|
52 |
} |
|
53 |
|
|
54 |
final MainCorpus mainCorpus = ((org.txm.searchengine.cqp.corpus.CQPCorpus)first).getMainCorpus(); |
|
55 |
final Corpus analecCorpus = AnalecCorpora.getCorpus(mainCorpus); |
|
56 |
final Vue vue = AnalecCorpora.getVue(mainCorpus); |
|
57 |
|
|
58 |
JobHandler job = new JobHandler(mainCorpus.getName()+Messages.ImportTEIAnnotations_1) { |
|
59 |
|
|
60 |
@Override |
|
61 |
protected IStatus run(IProgressMonitor monitor) { |
|
62 |
try { |
|
63 |
if (resetAnnotations) { |
|
64 |
analecCorpus.clearAnnot(); |
|
65 |
} |
|
66 |
|
|
67 |
if (!importer(monitor, directory, aamFile, true, mainCorpus, analecCorpus, vue)) { |
|
68 |
System.out.println(Messages.ImportTEIAnnotations_2); |
|
69 |
return Status.CANCEL_STATUS; |
|
70 |
} else { |
|
71 |
return Status.OK_STATUS; |
|
72 |
} |
|
73 |
} catch (Throwable e) { |
|
74 |
System.out.println(Messages.ImportTEIAnnotations_3+e.getLocalizedMessage()); |
|
75 |
Log.printStackTrace(e); |
|
76 |
return Status.CANCEL_STATUS; |
|
77 |
} |
|
78 |
} |
|
79 |
}; |
|
80 |
job.schedule(); |
|
81 |
|
|
82 |
} catch (Exception e) { |
|
83 |
System.out.println(Messages.ImportTEIAnnotations_4+e); |
|
84 |
Log.printStackTrace(e); |
|
85 |
} |
|
86 |
return null; |
|
87 |
} |
|
88 |
|
|
89 |
/** |
|
90 |
* <pre> |
|
91 |
* IProgressMonitor monitor = getIProgressMonitor(); |
|
92 |
* File directory = new File("resultdir"); |
|
93 |
* File aamFile = new File("model.aam"); |
|
94 |
* Boolean stdf = true; |
|
95 |
* String name = "BROWN"; |
|
96 |
* MainCorpus mainCorpus = CorpusManager.getCorpusManager().getCorpus(name) |
|
97 |
* Corpus analecCorpus = AnalecCorpora.getCorpus(name.toUpperCase()); |
|
98 |
* Vue vue = AnalecCorpora.getVue(name); |
|
99 |
* |
|
100 |
* ImportTEIAnnotations.importer(monitor, directory, aamFile, stdf, mainCorpus, analecCorpus, vue); |
|
101 |
*</pre> |
|
102 |
* @param monitor |
|
103 |
* @param annotationDirectory |
|
104 |
* @param aamFile |
|
105 |
* @param standoffAnnotations |
|
106 |
* @param mainCorpus |
|
107 |
* @param analecCorpus |
|
108 |
* @param vue |
|
109 |
* @return |
|
110 |
* @throws Exception |
|
111 |
*/ |
|
112 |
public static boolean importer(IProgressMonitor monitor, File annotationDirectory, File aamFile, boolean standoffAnnotations, MainCorpus mainCorpus, Corpus analecCorpus, Vue vue) throws Exception { |
|
113 |
// if (!standoffAnnotations) { // use stax because files are too big for DOM process |
|
114 |
// AnalecAnnotationsImporter importer = new AnalecAnnotationsImporter(monitor, annotationDirectory, mainCorpus, analecCorpus, vue); |
|
115 |
// boolean ret = importer.process(); |
|
116 |
// if (ret) System.out.println("Done: "+analecCorpus.getToutesUnites().size()+" unites "+analecCorpus.getToutesRelations().size()+" relations "+analecCorpus.getTousSchemas().size()+" schemas."); |
|
117 |
// return ret; |
|
118 |
// } else { |
|
119 |
// DOMAnalecAnnotationsImporter importer = new DOMAnalecAnnotationsImporter(monitor, annotationDirectory, mainCorpus, analecCorpus, vue); |
|
120 |
// boolean ret = importer.process(); |
|
121 |
// if (ret) System.out.println("Done: "+analecCorpus.getToutesUnites().size()+" unites "+analecCorpus.getToutesRelations().size()+" relations "+analecCorpus.getTousSchemas().size()+" schemas."); |
|
122 |
// return ret; |
|
123 |
// } |
|
124 |
//TODO: DOMAnalecAnnotationsImporter not finished |
|
125 |
AnalecAnnotationsImporter importer = new AnalecAnnotationsImporter(monitor, annotationDirectory, aamFile, mainCorpus, analecCorpus, vue); |
|
126 |
boolean ret = importer.process(); |
|
127 |
|
|
128 |
if (ret) { |
|
129 |
System.out.println(Messages.ImportTEIAnnotations_5+analecCorpus.getToutesUnites().size()+Messages.ImportTEIAnnotations_6+analecCorpus.getToutesRelations().size()+Messages.ImportTEIAnnotations_7+analecCorpus.getTousSchemas().size()+Messages.ImportTEIAnnotations_8); |
|
130 |
mainCorpus.setIsModified(true); |
|
131 |
CorporaView.refreshObject(mainCorpus); |
|
132 |
} |
|
133 |
return ret; |
|
134 |
} |
|
135 |
} |
|
0 | 136 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/SaveCorpus.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
|
|
5 |
import org.eclipse.core.commands.AbstractHandler; |
|
6 |
import org.eclipse.core.commands.ExecutionEvent; |
|
7 |
import org.eclipse.core.commands.ExecutionException; |
|
8 |
import org.eclipse.ui.IEditorPart; |
|
9 |
import org.eclipse.ui.IEditorReference; |
|
10 |
import org.eclipse.ui.IWorkbenchPage; |
|
11 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
12 |
import org.txm.annotation.urs.AnalecCorpora; |
|
13 |
import org.txm.annotation.urs.Messages; |
|
14 |
import org.txm.edition.rcp.editors.SynopticEditionEditor; |
|
15 |
import org.txm.rcp.TXMWindows; |
|
16 |
import org.txm.rcp.views.corpora.CorporaView; |
|
17 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
18 |
|
|
19 |
import visuAnalec.donnees.Corpus; |
|
20 |
import visuAnalec.fichiers.FichiersJava; |
|
21 |
|
|
22 |
public class SaveCorpus extends AbstractHandler { |
|
23 |
|
|
24 |
/** The ID. */ |
|
25 |
public static String ID = "org.txm.analec.commands.LoadAnnotationStructure"; //$NON-NLS-1$ |
|
26 |
Corpus corpus; |
|
27 |
/** The selection. */ |
|
28 |
|
|
29 |
/* (non-Javadoc) |
|
30 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
31 |
*/ |
|
32 |
@Override |
|
33 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
34 |
|
|
35 |
Object first = CorporaView.getFirstSelectedObject(); |
|
36 |
if (!(first instanceof org.txm.searchengine.cqp.corpus.CQPCorpus)) { |
|
37 |
System.out.println(Messages.SaveCorpus_0+first); |
|
38 |
return null; |
|
39 |
} |
|
40 |
final MainCorpus mainCorpus = ((org.txm.searchengine.cqp.corpus.CQPCorpus)first).getMainCorpus(); |
|
41 |
save(mainCorpus, event); |
|
42 |
|
|
43 |
return null; |
|
44 |
} |
|
45 |
|
|
46 |
public static boolean save(final MainCorpus mainCorpus, ExecutionEvent event) { |
|
47 |
File binaryCorpusDirectory = mainCorpus.getProjectDirectory(); |
|
48 |
File fichierCorpus = new File(binaryCorpusDirectory, "/analec/"+mainCorpus.getID()+".ec"); //$NON-NLS-1$ //$NON-NLS-2$ |
|
49 |
Corpus corpus = AnalecCorpora.getCorpus(mainCorpus); |
|
50 |
System.out.println(Messages.SaveCorpus_3+corpus+Messages.SaveCorpus_1+fichierCorpus); |
|
51 |
if (!AnalecCorpora.saveCorpus(mainCorpus)) { |
|
52 |
System.out.println(Messages.SaveCorpus_5); |
|
53 |
return false; |
|
54 |
} |
|
55 |
|
|
56 |
mainCorpus.setIsModified(false); |
|
57 |
if (event != null) { |
|
58 |
HandlerUtil.getActiveShell(event).getDisplay().syncExec(new Runnable() { |
|
59 |
@Override |
|
60 |
public void run() { |
|
61 |
CorporaView.refreshObject(mainCorpus); |
|
62 |
|
|
63 |
// find out which editor is using the MainCorpus |
|
64 |
for (IWorkbenchPage page : TXMWindows.getActiveWindow().getPages()) { |
|
65 |
for (IEditorReference editor_ref : page.getEditorReferences()) { |
|
66 |
IEditorPart editor = editor_ref.getEditor(false); |
|
67 |
if (editor != null && editor instanceof SynopticEditionEditor) { |
|
68 |
if (mainCorpus.equals(((SynopticEditionEditor)editor).getCorpus())) { |
|
69 |
((SynopticEditionEditor) editor).fireIsDirty(); |
|
70 |
} |
|
71 |
} |
|
72 |
} |
|
73 |
} |
|
74 |
} |
|
75 |
}); |
|
76 |
} |
|
77 |
return true; |
|
78 |
} |
|
79 |
} |
|
0 | 80 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/ImportGlozzCorpus.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.io.FilenameFilter; |
|
5 |
import java.util.Arrays; |
|
6 |
|
|
7 |
import org.apache.commons.io.FilenameUtils; |
|
8 |
import org.eclipse.core.commands.AbstractHandler; |
|
9 |
import org.eclipse.core.commands.ExecutionEvent; |
|
10 |
import org.eclipse.core.commands.ExecutionException; |
|
11 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
12 |
import org.eclipse.core.runtime.IStatus; |
|
13 |
import org.eclipse.core.runtime.Status; |
|
14 |
import org.kohsuke.args4j.Option; |
|
15 |
import org.txm.Toolbox; |
|
16 |
import org.txm.annotation.urs.AnalecAnnotationReIndexer; |
|
17 |
import org.txm.annotation.urs.AnalecCorpora; |
|
18 |
import org.txm.annotation.urs.Messages; |
|
19 |
import org.txm.objects.Project; |
|
20 |
import org.txm.rcp.handlers.scripts.ExecuteImportScript; |
|
21 |
import org.txm.rcp.swt.widget.parameters.ParametersDialog; |
|
22 |
import org.txm.rcp.utils.JobHandler; |
|
23 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
24 |
import org.txm.searchengine.cqp.corpus.CorpusManager; |
|
25 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
26 |
import org.txm.utils.AsciiUtils; |
|
27 |
import org.txm.utils.DeleteDir; |
|
28 |
import org.txm.utils.io.IOUtils; |
|
29 |
import org.txm.utils.logger.Log; |
|
30 |
|
|
31 |
import visuAnalec.donnees.Corpus; |
|
32 |
import visuAnalec.fichiers.FichiersGlozz; |
|
33 |
import visuAnalec.fichiers.FichiersJava; |
|
34 |
|
|
35 |
public class ImportGlozzCorpus extends AbstractHandler { |
|
36 |
|
|
37 |
|
|
38 |
|
|
39 |
// @Option(name="aafile",usage="an example file", widget="File", required=true, def="text.aa") |
|
40 |
// File aafile; |
|
41 |
|
|
42 |
// @Option(name="acfile",usage="an example file", widget="File", required=true, def="annotations.ac") |
|
43 |
// File acfile |
|
44 |
|
|
45 |
@Option(name="glozzDirectory",usage="A folder containing the Glozz files: aa ac and aam", widget="Folder", required=true, def="glozz") |
|
46 |
File glozzDirectory; |
|
47 |
|
|
48 |
@Option(name="aamfile",usage="The aam file to use", widget="File", required=true, def="model.aam") |
|
49 |
File aamfile; |
|
50 |
private String name; |
|
51 |
|
|
52 |
/* (non-Javadoc) |
|
53 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
54 |
*/ |
|
55 |
@Override |
|
56 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
57 |
try { |
|
58 |
// Open the parameters input dialog box |
|
59 |
if (!ParametersDialog.open(this)) return null; |
|
60 |
|
|
61 |
// END OF PARAMETERS |
|
62 |
if (!glozzDirectory.exists()) { |
|
63 |
System.out.println(Messages.ImportGlozzCorpus_0); |
|
64 |
return null; |
|
65 |
} |
|
66 |
|
|
67 |
name = glozzDirectory.getName(); |
|
68 |
name = AsciiUtils.buildId(name); |
|
69 |
|
|
70 |
final File srcDir = new File(glozzDirectory, name); |
|
71 |
System.out.println(Messages.ImportGlozzCorpus_1); |
|
72 |
DeleteDir.deleteDirectory(srcDir); |
|
73 |
srcDir.mkdir(); |
|
74 |
|
|
75 |
final File ecDir = new File(glozzDirectory, "ec"); //$NON-NLS-1$ |
|
76 |
System.out.println(Messages.ImportGlozzCorpus_3); |
|
77 |
DeleteDir.deleteDirectory(ecDir); |
|
78 |
ecDir.mkdir(); |
|
79 |
|
|
80 |
|
|
81 |
if (!srcDir.exists()) { |
|
82 |
System.out.println(Messages.ImportGlozzCorpus_4); |
|
83 |
return null; |
|
84 |
} |
|
85 |
|
|
86 |
if (!ecDir.exists()) { |
|
87 |
System.out.println(Messages.ImportGlozzCorpus_5); |
|
88 |
return null; |
|
89 |
} |
|
90 |
|
|
91 |
// write the TXT file WITH paragraphs |
|
92 |
File[] aaFiles = glozzDirectory.listFiles(new FilenameFilter() { |
|
93 |
@Override |
|
94 |
public boolean accept(File dir, String name) { |
|
95 |
return name.endsWith(".aa"); //$NON-NLS-1$ |
|
96 |
} |
|
97 |
}); |
|
98 |
File[] acFiles = glozzDirectory.listFiles(new FilenameFilter() { |
|
99 |
@Override |
|
100 |
public boolean accept(File dir, String name) { |
|
101 |
return name.endsWith(".ac"); //$NON-NLS-1$ |
|
102 |
} |
|
103 |
}); |
|
104 |
|
|
105 |
if (aaFiles == null || aaFiles.length == 0) { |
|
106 |
System.out.println(Messages.ImportGlozzCorpus_8+glozzDirectory); |
|
107 |
return false; |
|
108 |
} |
|
109 |
if (acFiles == null || acFiles.length == 0) { |
|
110 |
System.out.println(Messages.ImportGlozzCorpus_9+glozzDirectory); |
|
111 |
return false; |
|
112 |
} |
|
113 |
if (aaFiles.length != acFiles.length) { |
|
114 |
System.out.println(Messages.ImportGlozzCorpus_10+glozzDirectory); |
|
115 |
return false; |
|
116 |
} |
|
117 |
|
|
118 |
System.out.println(Messages.ImportGlozzCorpus_11+glozzDirectory); |
|
119 |
Arrays.sort(acFiles); |
|
120 |
Arrays.sort(aaFiles); |
|
121 |
for (int i = 0 ; i < aaFiles.length ; i++) { |
|
122 |
File acFile = acFiles[i]; |
|
123 |
File aaFile = aaFiles[i]; |
|
124 |
String name = acFile.getName(); |
|
125 |
int idx = name.indexOf("."); //$NON-NLS-1$ |
|
126 |
if (idx > 0) name = name.substring(0, idx); |
|
127 |
|
|
128 |
File txtFile = new File(srcDir, name+".txt"); //$NON-NLS-1$ |
|
129 |
File ecFile = new File(ecDir, name+".ec"); //$NON-NLS-1$ |
|
130 |
Corpus tmpAnalecCorpus = new Corpus(); // need a temporary corpus |
|
131 |
|
|
132 |
if (!FichiersGlozz.importerGlozz(tmpAnalecCorpus, acFile, aaFile)) { |
|
133 |
System.out.println(Messages.ImportGlozzCorpus_15); |
|
134 |
return null; |
|
135 |
} |
|
136 |
|
|
137 |
final String texte = tmpAnalecCorpus.getTexte(); |
|
138 |
int debParag = 0; |
|
139 |
Integer[] finPars = tmpAnalecCorpus.getFinParagraphes(); |
|
140 |
StringBuffer newTexte = new StringBuffer(texte.length() + finPars.length); |
|
141 |
for (int iParagraph = 0 ; iParagraph < finPars.length ; iParagraph++) { |
|
142 |
newTexte.append(texte.substring(debParag, finPars[iParagraph])).append("\n"); //$NON-NLS-1$ |
|
143 |
debParag = finPars[iParagraph]; |
|
144 |
} |
|
145 |
|
|
146 |
IOUtils.write(txtFile, newTexte.toString()); // write the TXT file for TXM TXT import module |
|
147 |
FichiersJava.enregistrerCorpus(tmpAnalecCorpus, ecFile); // write for later |
|
148 |
|
|
149 |
if (!txtFile.exists()) { |
|
150 |
System.out.println(Messages.ImportGlozzCorpus_17); |
|
151 |
return null; |
|
152 |
} |
|
153 |
} |
|
154 |
|
|
155 |
Project project = Toolbox.workspace.getProject(name.toUpperCase()); |
|
156 |
if (project != null) { |
|
157 |
CQPSearchEngine.getEngine().stop(); |
|
158 |
project.delete(); |
|
159 |
} |
|
160 |
project = new Project(Toolbox.workspace, name.toUpperCase()); |
|
161 |
project.setName(name.toUpperCase()); |
|
162 |
project.setSourceDirectory(srcDir.getAbsolutePath()); |
|
163 |
project.setImportModuleName("txt"); |
|
164 |
project.getEditionDefinition("default").setBuildEdition(true); |
|
165 |
|
|
166 |
JobHandler job = ExecuteImportScript.executeScript(project); |
|
167 |
if (job == null) { // job is scheduled in ExecuteImportScript.executeScript |
|
168 |
System.out.println(Messages.ImportGlozzCorpus_23); |
|
169 |
return null; |
|
170 |
} |
|
171 |
|
|
172 |
JobHandler job2 = new JobHandler(Messages.ImportGlozzCorpus_24) { |
|
173 |
|
|
174 |
@Override |
|
175 |
protected IStatus run(IProgressMonitor monitor) { |
|
176 |
try { |
|
177 |
MainCorpus corpus = CorpusManager.getCorpusManager().getCorpus(name.toUpperCase()); |
|
178 |
if (corpus == null) { |
|
179 |
System.out.println("The CQP corpus was not created. Aborting."); |
|
180 |
return Status.CANCEL_STATUS; |
|
181 |
} |
|
182 |
Corpus analecCorpus = AnalecCorpora.getCorpus(corpus); |
|
183 |
analecCorpus.clearAll(); // remove all : annotations, structure |
|
184 |
File[] ecFiles = ecDir.listFiles(); |
|
185 |
Arrays.sort(ecFiles); |
|
186 |
for (File ecFile : ecFiles) { |
|
187 |
FichiersJava.concatener(ecFile, analecCorpus); |
|
188 |
} |
|
189 |
|
|
190 |
System.out.println(Messages.ImportGlozzCorpus_25+aamfile); |
|
191 |
if (!FichiersGlozz.importerModeleGlozz(analecCorpus, aamfile)) { |
|
192 |
System.out.println(Messages.ImportGlozzCorpus_26); |
|
193 |
return Status.CANCEL_STATUS; |
|
194 |
} |
|
195 |
// |
|
196 |
// System.out.println("Importing Glozz corpus from: "+acfile+" and "+aafile); |
|
197 |
// if (!FichiersGlozz.importerGlozz(analecCorpus, acfile, aafile)) { |
|
198 |
// System.out.println("Error while importing Glozz corpus."); |
|
199 |
// return null; |
|
200 |
// } |
|
201 |
|
|
202 |
System.out.println(Messages.ImportGlozzCorpus_27); |
|
203 |
AnalecCorpora.removeCorpus(corpus); // remove old corpus if any |
|
204 |
|
|
205 |
AnalecAnnotationReIndexer aari = new AnalecAnnotationReIndexer(corpus, analecCorpus); |
|
206 |
if (!aari.process()) { |
|
207 |
System.out.println(Messages.ImportGlozzCorpus_28); |
|
208 |
return Status.CANCEL_STATUS; |
|
209 |
} |
|
210 |
|
|
211 |
System.out.println(Messages.ImportGlozzCorpus_29); |
|
212 |
AnalecCorpora.saveCorpus(analecCorpus); |
|
213 |
AnalecCorpora.getVue(analecCorpus).retablirVueParDefaut(); |
|
214 |
System.out.println(Messages.ImportGlozzCorpus_30); |
|
215 |
analecCorpus.setTexte(""); // free memory //$NON-NLS-1$ |
|
216 |
DeleteDir.deleteDirectory(ecDir); // cleaning |
|
217 |
DeleteDir.deleteDirectory(srcDir); // cleaning |
|
218 |
|
|
219 |
return Status.OK_STATUS; |
|
220 |
} catch (Exception e) { |
|
221 |
System.out.println(Messages.ImportGlozzCorpus_32+e.getLocalizedMessage()); |
|
222 |
Log.printStackTrace(e); |
|
223 |
return Status.CANCEL_STATUS; |
|
224 |
} |
|
225 |
} |
|
226 |
}; |
|
227 |
job2.startJob(true); // wait for the TXT import job to finish |
|
228 |
return null; |
|
229 |
} catch (Exception e) { |
|
230 |
// TODO Auto-generated catch block |
|
231 |
e.printStackTrace(); |
|
232 |
} |
|
233 |
return null; |
|
234 |
} |
|
235 |
} |
|
0 | 236 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/LoadVue.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
|
|
5 |
import org.eclipse.core.commands.AbstractHandler; |
|
6 |
import org.eclipse.core.commands.ExecutionEvent; |
|
7 |
import org.eclipse.core.commands.ExecutionException; |
|
8 |
import org.eclipse.jface.viewers.ISelection; |
|
9 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
10 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
11 |
import org.txm.Toolbox; |
|
12 |
import org.txm.annotation.urs.AnalecCorpora; |
|
13 |
import org.txm.annotation.urs.Messages; |
|
14 |
import org.txm.rcp.views.corpora.CorporaView; |
|
15 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
16 |
|
|
17 |
import visuAnalec.donnees.Corpus; |
|
18 |
import visuAnalec.fichiers.FichiersJava; |
|
19 |
import visuAnalec.vue.Vue; |
|
20 |
|
|
21 |
public class LoadVue extends AbstractHandler { |
|
22 |
|
|
23 |
/** The ID. */ |
|
24 |
public static String ID = "org.txm.analec.commands.LoadAnnotationStructure"; //$NON-NLS-1$ |
|
25 |
|
|
26 |
/** The selection. */ |
|
27 |
|
|
28 |
/* (non-Javadoc) |
|
29 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
30 |
*/ |
|
31 |
@Override |
|
32 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
33 |
|
|
34 |
Object first = CorporaView.getFirstSelectedObject(); |
|
35 |
if (!(first instanceof org.txm.searchengine.cqp.corpus.CQPCorpus)) { |
|
36 |
System.out.println(Messages.LoadVue_0+first); |
|
37 |
return null; |
|
38 |
} |
|
39 |
|
|
40 |
MainCorpus mainCorpus = ((org.txm.searchengine.cqp.corpus.CQPCorpus)first).getMainCorpus(); |
|
41 |
|
|
42 |
load(mainCorpus); |
|
43 |
return null; |
|
44 |
} |
|
45 |
|
|
46 |
public boolean load(MainCorpus mainCorpus) { |
|
47 |
System.out.println(Messages.LoadVue_1+mainCorpus.getName()); |
|
48 |
Vue vue = AnalecCorpora.getVue(mainCorpus); |
|
49 |
if (!FichiersJava.ouvrirVue(vue)) { |
|
50 |
System.out.println(Messages.LoadVue_2); |
|
51 |
return false; |
|
52 |
} |
|
53 |
|
|
54 |
System.out.println(Messages.LoadVue_3); |
|
55 |
return true; |
|
56 |
} |
|
57 |
} |
|
0 | 58 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/LoadStructure.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import org.eclipse.core.commands.AbstractHandler; |
|
4 |
import org.eclipse.core.commands.ExecutionEvent; |
|
5 |
import org.eclipse.core.commands.ExecutionException; |
|
6 |
import org.eclipse.jface.viewers.ISelection; |
|
7 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
8 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
9 |
import org.txm.annotation.urs.AnalecCorpora; |
|
10 |
import org.txm.annotation.urs.Messages; |
|
11 |
import org.txm.rcp.views.corpora.CorporaView; |
|
12 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
13 |
|
|
14 |
import visuAnalec.donnees.Corpus; |
|
15 |
import visuAnalec.donnees.VisuStructure; |
|
16 |
import visuAnalec.fichiers.FichiersJava; |
|
17 |
|
|
18 |
public class LoadStructure extends AbstractHandler { |
|
19 |
|
|
20 |
/** The ID. */ |
|
21 |
public static String ID = "org.txm.analec.commands.LoadAnnotationStructure"; //$NON-NLS-1$ |
|
22 |
|
|
23 |
/** The selection. */ |
|
24 |
|
|
25 |
/* (non-Javadoc) |
|
26 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
27 |
*/ |
|
28 |
@Override |
|
29 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
30 |
|
|
31 |
Object first = CorporaView.getFirstSelectedObject(); |
|
32 |
if (!(first instanceof org.txm.searchengine.cqp.corpus.CQPCorpus)) { |
|
33 |
System.out.println(Messages.LoadStructure_0+first); |
|
34 |
return null; |
|
35 |
} |
|
36 |
|
|
37 |
MainCorpus mainCorpus = ((org.txm.searchengine.cqp.corpus.CQPCorpus)first).getMainCorpus(); |
|
38 |
Corpus corpus = AnalecCorpora.getCorpus(mainCorpus); |
|
39 |
// if (VisuStructure.isOpen()) { |
|
40 |
// System.out.println("Structure de corpus en cours d'édition. Abandon."); |
|
41 |
// return null; |
|
42 |
// } |
|
43 |
|
|
44 |
|
|
45 |
return null; |
|
46 |
} |
|
47 |
|
|
48 |
public static boolean load(Corpus corpus) { |
|
49 |
System.out.println(Messages.LoadStructure_1+corpus); |
|
50 |
if (!FichiersJava.ouvrirStructure(corpus)) { |
|
51 |
System.out.println(Messages.LoadStructure_2); |
|
52 |
return false; |
|
53 |
} |
|
54 |
System.out.println(Messages.LoadStructure_3); |
|
55 |
return true; |
|
56 |
} |
|
57 |
} |
|
0 | 58 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/ExportGlozzCorpus.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.io.IOException; |
|
5 |
|
|
6 |
import org.eclipse.core.commands.AbstractHandler; |
|
7 |
import org.eclipse.core.commands.ExecutionEvent; |
|
8 |
import org.eclipse.core.commands.ExecutionException; |
|
9 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
10 |
import org.eclipse.core.runtime.IStatus; |
|
11 |
import org.eclipse.core.runtime.Status; |
|
12 |
import org.kohsuke.args4j.Option; |
|
13 |
import org.txm.annotation.urs.Messages; |
|
14 |
import org.txm.annotation.urs.export.ExportToGlozzMacro; |
|
15 |
import org.txm.rcp.swt.widget.parameters.ParametersDialog; |
|
16 |
import org.txm.rcp.utils.JobHandler; |
|
17 |
import org.txm.rcp.views.corpora.CorporaView; |
|
18 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
|
19 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
20 |
import org.txm.searchengine.cqp.serverException.CqiServerError; |
|
21 |
import org.txm.utils.logger.Log; |
|
22 |
|
|
23 |
public class ExportGlozzCorpus extends AbstractHandler { |
|
24 |
|
|
25 |
@Option(name="exportDirectory",usage="the result directory ", widget="Folder", required=true, def="result directory") |
|
26 |
File exportDirectory; |
|
27 |
@Option(name="unit_type",usage="A unit type to export", widget="String", required=true, def="MENTION") |
|
28 |
String unit_type; |
|
29 |
|
|
30 |
/* (non-Javadoc) |
|
31 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
32 |
*/ |
|
33 |
@Override |
|
34 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
35 |
try { |
|
36 |
// Open the parameters input dialog box |
|
37 |
if (!ParametersDialog.open(this)) return null; |
|
38 |
|
|
39 |
Object first = CorporaView.getFirstSelectedObject(); |
|
40 |
if (!(first instanceof org.txm.searchengine.cqp.corpus.CQPCorpus)) { |
|
41 |
System.out.println(Messages.ExportGlozzCorpus_0+first); |
|
42 |
return null; |
|
43 |
} |
|
44 |
|
|
45 |
final MainCorpus mainCorpus = ((org.txm.searchengine.cqp.corpus.CQPCorpus)first).getMainCorpus(); |
|
46 |
|
|
47 |
JobHandler job = new JobHandler(mainCorpus.getName()+Messages.ExportGlozzCorpus_1) { |
|
48 |
|
|
49 |
@Override |
|
50 |
protected IStatus run(IProgressMonitor monitor) { |
|
51 |
this.runInit(monitor); |
|
52 |
try { |
|
53 |
export(exportDirectory, mainCorpus, unit_type); |
|
54 |
} catch (ThreadDeath e) { |
|
55 |
System.out.println(Messages.ExportGlozzCorpus_2); |
|
56 |
} catch (Throwable e) { |
|
57 |
System.out.println(Messages.ExportGlozzCorpus_3+e.getLocalizedMessage()); |
|
58 |
Log.printStackTrace(e); |
|
59 |
return Status.CANCEL_STATUS; |
|
60 |
} |
|
61 |
return Status.OK_STATUS; |
|
62 |
} |
|
63 |
}; |
|
64 |
job.schedule(); |
|
65 |
|
|
66 |
return null; |
|
67 |
} catch (Throwable e) { |
|
68 |
System.out.println(Messages.ExportGlozzCorpus_4+e.getLocalizedMessage()); |
|
69 |
Log.printStackTrace(e); |
|
70 |
} |
|
71 |
return null; |
|
72 |
} |
|
73 |
|
|
74 |
public static void export(File exportDirectory, MainCorpus mainCorpus, String unit_type) throws NumberFormatException, IOException, CqiServerError, CqiClientException { |
|
75 |
ExportToGlozzMacro exporter = new ExportToGlozzMacro(); |
|
76 |
File exportFile = new File(exportDirectory, mainCorpus.getID()); |
|
77 |
exporter.doExport(mainCorpus, unit_type, exportFile.getAbsolutePath()); |
|
78 |
return; |
|
79 |
} |
|
80 |
} |
|
0 | 81 |
tmp/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/EditVue.java (revision 1200) | ||
---|---|---|
1 |
package org.txm.annotation.urs.commands; |
|
2 |
|
|
3 |
import java.awt.Dimension; |
Formats disponibles : Unified diff