Révision 3534
TXM/trunk/org.txm.analec.rcp/plugin.xml (revision 3534) | ||
---|---|---|
232 | 232 |
</command> |
233 | 233 |
</menuContribution> |
234 | 234 |
<menuContribution |
235 |
locationURI="menu:menu.file.import?before=menu.file.import.separator.software"> |
|
235 |
locationURI="menu:menu.file.import.corpus?before=menu.file.import.separator.software">
|
|
236 | 236 |
<command |
237 | 237 |
commandId="org.txm.annotation.urs.commands.ImportGlozzCorpus" |
238 | 238 |
style="push"> |
TXM/trunk/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java (revision 3534) | ||
---|---|---|
115 | 115 |
|
116 | 116 |
protected AnnotationType tagAnnotationType; // the tag annotation type if annotation mode is simple |
117 | 117 |
|
118 |
protected TypedValue value_to_add; |
|
118 |
//protected TypedValue value_to_add;
|
|
119 | 119 |
|
120 | 120 |
protected Concordance concordance; |
121 | 121 |
|
... | ... | |
124 | 124 |
private ConcordanceAnnotations annotations = null; |
125 | 125 |
|
126 | 126 |
private Button addTypedValueLink; |
127 |
|
|
128 |
private TableViewerColumn annotationColumnViewer; |
|
127 | 129 |
|
128 | 130 |
@Override |
129 | 131 |
public String getName() { |
... | ... | |
138 | 140 |
this.concordance = this.editor.getConcordance(); |
139 | 141 |
this.corpus = concordance.getCorpus(); |
140 | 142 |
this.annotations = new ConcordanceAnnotations(this.editor.getConcordance()); |
143 |
annotations.computeLines(this.editor.getConcordance().getLines()); // pre-compute the annotation lines ot avoid breaking the sort and co. |
|
141 | 144 |
this.annotManager = KRAnnotationEngine.getAnnotationManager(corpus); |
142 | 145 |
|
143 | 146 |
TableViewer viewer = this.editor.getLineTableViewer(); |
... | ... | |
148 | 151 |
position = 3 + extension.getNumberOfAnnotationArea(); // after keyword column and previous annotation columns |
149 | 152 |
} |
150 | 153 |
|
151 |
TableViewerColumn annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position);
|
|
154 |
this.annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position);
|
|
152 | 155 |
annotationColumn = annotationColumnViewer.getColumn(); |
153 | 156 |
annotationColumn.setText(KRAnnotationUIMessages.category); |
154 | 157 |
annotationColumn.setToolTipText(KRAnnotationUIMessages.keywordsAnnotation); |
... | ... | |
525 | 528 |
@Override |
526 | 529 |
public void run() { |
527 | 530 |
try { |
528 |
editor.refresh(false); |
|
531 |
notifyStartOfRefresh(); |
|
532 |
annotationColumnViewer.getViewer().refresh(); |
|
529 | 533 |
} |
530 | 534 |
catch (Exception e) { |
531 | 535 |
// TODO Auto-generated catch block |
... | ... | |
536 | 540 |
} |
537 | 541 |
|
538 | 542 |
protected void affectAnnotationValues(final List<? extends Match> matches, final AnnotationType type, final String svalue, JobHandler job) { |
539 |
value_to_add = null; // reset |
|
543 |
TypedValue value_to_add = null; // reset
|
|
540 | 544 |
if (matches == null || matches.size() == 0) { |
541 | 545 |
Log.warning("No line selected. Aborting."); |
542 | 546 |
return; |
... | ... | |
585 | 589 |
return; |
586 | 590 |
} |
587 | 591 |
else { |
588 |
value_to_add = kr.addValue(svalue, svalue, type.getId());
|
|
592 |
kr.addValue(svalue, svalue, type.getId()); |
|
589 | 593 |
KRView.refresh(); |
590 | 594 |
} |
591 | 595 |
} |
592 | 596 |
}); |
593 | 597 |
} |
594 | 598 |
|
599 |
value_to_add = kr.getValue(type, svalue); |
|
600 |
|
|
595 | 601 |
if (value_to_add == null && kr instanceof LocalKnowledgeRepository) return; // canceled |
596 | 602 |
|
597 | 603 |
if (value_to_add == null) { |
... | ... | |
653 | 659 |
@Override |
654 | 660 |
public void run() { |
655 | 661 |
try { |
656 |
editor.refresh(false); |
|
662 |
notifyStartOfRefresh(); |
|
663 |
annotationColumnViewer.getViewer().refresh(); |
|
657 | 664 |
CorporaView.refreshObject(corpus); |
658 | 665 |
} |
659 | 666 |
catch (Exception e) { |
TXM/trunk/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java (revision 3534) | ||
---|---|---|
123 | 123 |
|
124 | 124 |
protected Label equalLabel; |
125 | 125 |
|
126 |
protected TypedValue value_to_add; |
|
126 |
//protected TypedValue value_to_add;
|
|
127 | 127 |
|
128 | 128 |
protected Concordance concordance; |
129 | 129 |
|
... | ... | |
132 | 132 |
private ConcordanceAnnotations annotations = null; |
133 | 133 |
|
134 | 134 |
ConcordanceEditor editor; |
135 |
|
|
136 |
private TableViewerColumn annotationColumnViewer; |
|
135 | 137 |
|
136 | 138 |
public KRAnnotation() { |
137 | 139 |
|
... | ... | |
150 | 152 |
this.concordance = this.editor.getConcordance(); |
151 | 153 |
this.corpus = concordance.getCorpus(); |
152 | 154 |
this.annotations = new ConcordanceAnnotations(this.editor.getConcordance()); |
155 |
annotations.computeLines(this.editor.getConcordance().getLines()); // pre-compute the annotation lines ot avoid breaking the sort and co. |
|
153 | 156 |
this.annotManager = KRAnnotationEngine.getAnnotationManager(corpus); |
154 | 157 |
|
155 | 158 |
TableViewer viewer = this.editor.getLineTableViewer(); |
... | ... | |
160 | 163 |
position = 3 + extension.getNumberOfAnnotationArea(); // after keyword column and previous annotation columns |
161 | 164 |
} |
162 | 165 |
|
163 |
TableViewerColumn annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position);
|
|
166 |
this.annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position);
|
|
164 | 167 |
annotationColumn = annotationColumnViewer.getColumn(); |
165 | 168 |
annotationColumn.setText(KRAnnotationUIMessages.category); |
166 | 169 |
annotationColumn.setToolTipText(KRAnnotationUIMessages.keywordsAnnotation); |
... | ... | |
199 | 202 |
} |
200 | 203 |
|
201 | 204 |
public boolean initialiseInput(ConcordanceEditor editor) throws Exception { |
205 |
|
|
202 | 206 |
this.editor = editor; |
203 | 207 |
concordance = editor.getConcordance(); |
204 | 208 |
annotations = new ConcordanceAnnotations(concordance); |
209 |
annotations.computeLines(this.editor.getConcordance().getLines()); // pre-compute the annotation lines ot avoid breaking the sort and co. |
|
205 | 210 |
corpus = concordance.getCorpus(); |
206 | 211 |
|
207 | 212 |
CQPCorpus corpus = editor.getCorpus(); |
... | ... | |
336 | 341 |
annotations.setViewAnnotation(type); |
337 | 342 |
annotations.setAnnotationOverlap(true); |
338 | 343 |
try { |
339 |
editor.refresh(false); |
|
344 |
notifyStartOfRefresh(); |
|
345 |
annotationColumnViewer.getViewer().refresh(); |
|
340 | 346 |
} |
341 | 347 |
catch (Exception e) { |
342 | 348 |
// TODO Auto-generated catch block |
... | ... | |
483 | 489 |
}); |
484 | 490 |
|
485 | 491 |
if (currentKnowledgeRepository instanceof LocalKnowledgeRepository) { |
492 |
|
|
486 | 493 |
addTypedValueLink = new Button(annotationArea, SWT.PUSH); |
487 | 494 |
addTypedValueLink.setText("..."); //$NON-NLS-1$ |
488 | 495 |
addTypedValueLink.setToolTipText(KRAnnotationUIMessages.selectAValueAmongTheList); |
... | ... | |
714 | 721 |
if (addRemoveCombo.getSelectionIndex() == 0) { // add is default |
715 | 722 |
|
716 | 723 |
if (getSelectedAnnotationType() != null) { |
724 |
|
|
717 | 725 |
annotationValuesText.setEnabled(true); |
718 |
|
|
719 | 726 |
affectAnnotationButton.setEnabled(true); |
720 | 727 |
affectCombo.setEnabled(true); |
721 | 728 |
} |
722 | 729 |
else { |
730 |
|
|
723 | 731 |
annotationValuesText.setEnabled(false); |
724 |
|
|
725 | 732 |
affectAnnotationButton.setEnabled(false); |
726 | 733 |
affectCombo.setEnabled(false); |
727 | 734 |
} |
... | ... | |
772 | 779 |
try { |
773 | 780 |
if (annotManager != null && annotManager.deleteAnnotations(type, matches, job)) { |
774 | 781 |
if (Log.getLevel().intValue() < Level.INFO.intValue()) annotManager.checkData(); |
775 |
concordance.reloadLines(editor.getTopLine(), editor.getBottomLine() + 1); |
|
782 |
//concordance.reloadLines(editor.getTopLine(), editor.getBottomLine() + 1);
|
|
776 | 783 |
} |
777 | 784 |
else { |
778 | 785 |
return; |
... | ... | |
789 | 796 |
@Override |
790 | 797 |
public void run() { |
791 | 798 |
try { |
792 |
editor.refresh(false); |
|
799 |
notifyStartOfRefresh(); |
|
800 |
annotationColumnViewer.getViewer().refresh(); |
|
793 | 801 |
} |
794 | 802 |
catch (Exception e) { |
795 | 803 |
// TODO Auto-generated catch block |
... | ... | |
802 | 810 |
} |
803 | 811 |
|
804 | 812 |
protected void affectAnnotationValues(final List<? extends Match> matches, final AnnotationType type, final String svalue, JobHandler job) { |
805 |
value_to_add = null; // reset |
|
813 |
|
|
814 |
TypedValue value_to_add = null; // reset |
|
806 | 815 |
if (concordance == null) { |
807 | 816 |
Log.info("No concordance done. Aborting."); |
808 | 817 |
return; |
... | ... | |
855 | 864 |
return; |
856 | 865 |
} |
857 | 866 |
else { |
858 |
value_to_add = kr.addValue(svalue, svalue, type.getId());
|
|
867 |
kr.addValue(svalue, svalue, type.getId()); |
|
859 | 868 |
KRView.refresh(); |
860 | 869 |
} |
861 | 870 |
} |
862 | 871 |
}); |
863 | 872 |
} |
864 | 873 |
|
874 |
value_to_add = kr.getValue(type, svalue); // re-initialize value_to_add if the value was created |
|
875 |
|
|
865 | 876 |
if (value_to_add == null && kr instanceof LocalKnowledgeRepository) return; // canceled |
866 | 877 |
|
867 | 878 |
if (value_to_add == null) { |
... | ... | |
913 | 924 |
if (Log.getLevel().intValue() < Level.INFO.intValue() && annotManager != null) { |
914 | 925 |
annotManager.checkData(); |
915 | 926 |
} |
916 |
concordance.reloadCurrentLines(); |
|
927 |
//concordance.reloadCurrentLines();
|
|
917 | 928 |
} |
918 | 929 |
catch (Exception e1) { |
919 | 930 |
Log.warning(NLS.bind(KRAnnotationUIMessages.errorWhileAffectionAnnotationColonP0, e1)); |
... | ... | |
926 | 937 |
@Override |
927 | 938 |
public void run() { |
928 | 939 |
try { |
929 |
editor.refresh(false); |
|
940 |
notifyStartOfRefresh(); |
|
941 |
annotationColumnViewer.getViewer().refresh(); |
|
930 | 942 |
CorporaView.refreshObject(corpus); |
931 | 943 |
} |
932 | 944 |
catch (Exception e) { |
TXM/trunk/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java (revision 3534) | ||
---|---|---|
125 | 125 |
|
126 | 126 |
protected AnnotationType tagAnnotationType; // the tag annotation type if annotation mode is simple |
127 | 127 |
|
128 |
protected TypedValue value_to_add; |
|
128 |
//protected TypedValue value_to_add;
|
|
129 | 129 |
|
130 | 130 |
protected Concordance concordance; |
131 | 131 |
|
... | ... | |
185 | 185 |
} |
186 | 186 |
|
187 | 187 |
protected void affectAnnotationValues(final List<? extends Match> matches, final AnnotationType type, final String svalue, JobHandler job) { |
188 |
value_to_add = null; // reset |
|
188 |
TypedValue value_to_add = null; // reset
|
|
189 | 189 |
if (matches == null || matches.size() == 0) { |
190 | 190 |
Log.warning("No line selected. Aborting."); |
191 | 191 |
return; |
... | ... | |
237 | 237 |
|
238 | 238 |
// finally we can 'try' to create the annotations \o/ |
239 | 239 |
try { |
240 |
System.out.println("CREATE ANNOTATIONS"); |
|
240 | 241 |
HashMap<Match, List<Annotation>> existingAnnots = annotManager.createAnnotations(type, value_to_add, matches, job); |
241 |
|
|
242 |
System.out.println("END OF CREATE ANNOTATIONS"); |
|
242 | 243 |
// did we had problems ? |
243 | 244 |
if (existingAnnots != null && existingAnnots.size() > 0) { |
244 | 245 |
String message = NLS.bind(KRAnnotationUIMessages.couldNotAnnotateTheValueP0OnCertainSequences, value_to_add.getStandardName()); |
... | ... | |
282 | 283 |
@Override |
283 | 284 |
public void run() { |
284 | 285 |
try { |
286 |
System.out.println("REFRESH ANNOTATIONS"); |
|
285 | 287 |
annotationColumn.setText("*" + annotations.getViewAnnotation().getName()); |
286 |
editor.refresh(false); |
|
288 |
notifyStartOfRefresh(); |
|
289 |
System.out.println("END OF REFRESH ANNOTATIONS"); |
|
290 |
annotationColumnViewer.getViewer().refresh(); |
|
291 |
//editor.refresh(false); |
|
287 | 292 |
} |
288 | 293 |
catch (Exception e) { |
289 | 294 |
// TODO Auto-generated catch block |
... | ... | |
364 | 369 |
public void run() { |
365 | 370 |
try { |
366 | 371 |
annotationColumn.setText("*" + annotations.getViewAnnotation().getName()); |
367 |
editor.refresh(false); |
|
372 |
notifyStartOfRefresh(); |
|
373 |
annotationColumnViewer.getViewer().refresh(); |
|
368 | 374 |
} |
369 | 375 |
catch (Exception e) { |
370 | 376 |
// TODO Auto-generated catch block |
... | ... | |
410 | 416 |
this.concordance = this.editor.getConcordance(); |
411 | 417 |
this.corpus = concordance.getCorpus(); |
412 | 418 |
this.annotations = new ConcordanceAnnotations(this.editor.getConcordance()); |
419 |
//annotations.computeLines(this.editor.getConcordance().getLines()); // pre-compute the annotation lines ot avoid breaking the sort and co. |
|
413 | 420 |
this.annotManager = KRAnnotationEngine.getAnnotationManager(corpus); |
414 | 421 |
|
415 | 422 |
TableViewer viewer = this.editor.getLineTableViewer(); |
... | ... | |
830 | 837 |
}); |
831 | 838 |
|
832 | 839 |
updateAnnotationWidgetStates(); |
840 |
|
|
833 | 841 |
editor.layout(true); |
842 |
|
|
834 | 843 |
// ext.getSaveButton().setEnabled(true); |
844 |
// viewer.refresh(); |
|
835 | 845 |
return true; |
836 | 846 |
} |
837 | 847 |
|
... | ... | |
856 | 866 |
annotations.setViewAnnotation(type); |
857 | 867 |
annotations.setAnnotationOverlap(true); |
858 | 868 |
try { |
859 |
editor.refresh(false); |
|
869 |
notifyStartOfRefresh(); |
|
870 |
annotationColumnViewer.getViewer().refresh(); |
|
860 | 871 |
} |
861 | 872 |
catch (Exception e) { |
862 | 873 |
// TODO Auto-generated catch block |
... | ... | |
997 | 1008 |
if (annotationArea.isDisposed()) return; |
998 | 1009 |
|
999 | 1010 |
List<Line> lines = concordance.getLines(concordance.getTopIndex(), concordance.getTopIndex() + concordance.getNLinePerPage()); |
1011 |
//List<Line> lines = concordance.getLines(); |
|
1000 | 1012 |
annotations.computeLines(lines); |
1001 | 1013 |
|
1002 | 1014 |
updateAnnotationWidgetStates(); |
... | ... | |
1010 | 1022 |
else { |
1011 | 1023 |
annotationColumn.setWidth(0); |
1012 | 1024 |
} |
1025 |
|
|
1026 |
annotationColumnViewer.getViewer().refresh(); |
|
1013 | 1027 |
} |
1014 | 1028 |
|
1015 | 1029 |
@Override |
TXM/trunk/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/ConcordanceAnnotations.java (revision 3534) | ||
---|---|---|
3 | 3 |
import java.util.ArrayList; |
4 | 4 |
import java.util.Collections; |
5 | 5 |
import java.util.HashMap; |
6 |
import java.util.LinkedHashMap; |
|
6 | 7 |
import java.util.List; |
7 | 8 |
import java.util.TreeMap; |
8 | 9 |
|
... | ... | |
51 | 52 |
|
52 | 53 |
this.concordanceLines = concordanceLines; |
53 | 54 |
|
54 |
HashMap<Match, Line> matches = new HashMap<Match, Line>(); |
|
55 |
// HashMap<Match, Line> matches = new HashMap<Match, Line>(); |
|
56 |
// for (Line line : concordanceLines) { |
|
57 |
// matches.put(line.getMatch(), line); |
|
58 |
// } |
|
59 |
// |
|
60 |
// ArrayList<Match> sorted_matches = new ArrayList<Match>(matches.keySet()); |
|
61 |
// Collections.sort(sorted_matches); |
|
62 |
// |
|
63 |
// List<Annotation> ann = getAnnotationForMatches(sorted_matches, overlapAnnotation); |
|
64 |
// lines = new HashMap<Line, AnnotationLine>(); |
|
65 |
// |
|
66 |
// for (int i = 0 ; i < ann.size() ; i++) { |
|
67 |
// Annotation a = ann.get(i); |
|
68 |
// AnnotationLine aline = new AnnotationLine(a, getAnnotationTypedValue(a)); |
|
69 |
// lines.put(matches.get(sorted_matches.get(i)), aline); |
|
70 |
// } |
|
71 |
// |
|
72 |
// return lines; // TODO find a way to add with lazy method |
|
73 |
|
|
74 |
LinkedHashMap<Match, Line> matches = new LinkedHashMap<Match, Line>(); |
|
55 | 75 |
for (Line line : concordanceLines) { |
56 | 76 |
matches.put(line.getMatch(), line); |
57 | 77 |
} |
78 |
|
|
58 | 79 |
ArrayList<Match> sorted_matches = new ArrayList<Match>(matches.keySet()); |
59 | 80 |
Collections.sort(sorted_matches); |
60 | 81 |
|
... | ... | |
208 | 229 |
|
209 | 230 |
public void setViewAnnotation(AnnotationType type) { |
210 | 231 |
viewAnnotation = type; |
211 |
concordance.resetLines(); |
|
232 |
//concordance.resetLines();
|
|
212 | 233 |
} |
213 | 234 |
|
214 | 235 |
/** |
TXM/trunk/org.txm.conllu.rcp/plugin.xml (revision 3534) | ||
---|---|---|
25 | 25 |
<extension |
26 | 26 |
point="org.eclipse.ui.menus"> |
27 | 27 |
<menuContribution |
28 |
locationURI="menu:menu.file.import?before=menu.file.import.separator.software"> |
|
28 |
locationURI="menu:menu.file.import.corpus?before=menu.file.import.separator.software">
|
|
29 | 29 |
<command |
30 | 30 |
commandId="org.txm.rcp.handlers.scripts.ExecuteImportScript" |
31 | 31 |
icon="icons/functions/UD.png" |
TXM/trunk/org.txm.imports.metopes/plugin.xml (revision 3534) | ||
---|---|---|
4 | 4 |
<extension |
5 | 5 |
point="org.eclipse.ui.menus"> |
6 | 6 |
<menuContribution |
7 |
locationURI="menu:menu.file.import?before=menu.file.import.separator.software"> |
|
7 |
locationURI="menu:menu.file.import.corpus?before=menu.file.import.separator.software">
|
|
8 | 8 |
<command |
9 | 9 |
commandId="org.txm.rcp.handlers.scripts.ExecuteImportScript" |
10 | 10 |
label="XML-TEI Metopes" |
TXM/trunk/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java (revision 3534) | ||
---|---|---|
189 | 189 |
|
190 | 190 |
editor.getTopToolbar().setVisible(GROUP_NAME, true); |
191 | 191 |
annotationAreas.add(aa); |
192 |
editor.refresh(false); // refresh the concordance display |
|
192 |
|
|
193 |
aa.notifyStartOfCompute(); |
|
194 |
aa.notifyStartOfRefresh(); |
|
195 |
|
|
196 |
//editor.refresh(false); // refresh the concordance display |
|
193 | 197 |
} |
194 | 198 |
|
195 | 199 |
/** |
TXM/trunk/org.txm.tigersearch.rcp/plugin.xml (revision 3534) | ||
---|---|---|
74 | 74 |
</command> |
75 | 75 |
</menuContribution> |
76 | 76 |
<menuContribution |
77 |
locationURI="menu:menu.file.import?before=menu.file.import.separator.software"> |
|
77 |
locationURI="menu:menu.file.import.corpus?before=menu.file.import.separator.software">
|
|
78 | 78 |
<command |
79 | 79 |
commandId="org.txm.rcp.handlers.scripts.ExecuteImportScript" |
80 | 80 |
icon="icons/functions/TS.png" |
TXM/trunk/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/storage/temporary/TemporaryAnnotationManager.java (revision 3534) | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.io.File; |
4 | 4 |
import java.util.ArrayList; |
5 |
import java.util.Collections; |
|
5 | 6 |
import java.util.HashMap; |
6 | 7 |
import java.util.List; |
7 | 8 |
import java.util.logging.Level; |
... | ... | |
403 | 404 |
return typedQuery.getResultList(); |
404 | 405 |
} |
405 | 406 |
|
406 |
public List<Annotation> getAnnotationsForMatches(List<Match> matches, List<Annotation> annotations, boolean overlap) { |
|
407 |
public List<Annotation> getAnnotationsForMatches(List<Match> sortedMatches, List<Annotation> sortedAnnotations, boolean overlap) { |
|
408 |
|
|
407 | 409 |
List<Annotation> annotsList = new ArrayList<>(); |
408 |
|
|
410 |
// matches = new ArrayList<>(matches); |
|
411 |
// Collections.sort(matches); |
|
409 | 412 |
int iMatch = 0; |
410 | 413 |
int iAnnotation = 0; |
411 |
int nMatch = matches.size();
|
|
412 |
int nAnnotations = annotations.size();
|
|
414 |
int nMatch = sortedMatches.size();
|
|
415 |
int nAnnotations = sortedAnnotations.size();
|
|
413 | 416 |
|
414 | 417 |
Match match = null; |
415 | 418 |
Annotation annotation = null; |
416 | 419 |
while (iMatch < nMatch && iAnnotation < nAnnotations) { |
417 |
match = matches.get(iMatch); |
|
420 |
|
|
421 |
match = sortedMatches.get(iMatch); |
|
418 | 422 |
int start, end; |
419 | 423 |
if (match.getTarget() >= 0) { |
420 | 424 |
start = end = match.getTarget(); |
... | ... | |
424 | 428 |
end = match.getEnd(); |
425 | 429 |
} |
426 | 430 |
|
427 |
annotation = annotations.get(iAnnotation);
|
|
431 |
annotation = sortedAnnotations.get(iAnnotation);
|
|
428 | 432 |
int astart = annotation.getStart(), aend = annotation.getEnd(); |
429 | 433 |
|
430 | 434 |
if (overlap) { |
... | ... | |
460 | 464 |
} |
461 | 465 |
} |
462 | 466 |
|
463 |
while (annotsList.size() < matches.size())
|
|
467 |
while (annotsList.size() < sortedMatches.size())
|
|
464 | 468 |
annotsList.add(null); // fill matches that were not process due to no more annotations |
465 | 469 |
|
466 | 470 |
return annotsList; |
TXM/trunk/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java (revision 3534) | ||
---|---|---|
1128 | 1128 |
|
1129 | 1129 |
@Override |
1130 | 1130 |
public LexicalTable getParent() { |
1131 |
|
|
1132 |
return (LexicalTable) this.parent;
|
|
1131 |
if (parent instanceof LexicalTable) return (LexicalTable) this.parent; |
|
1132 |
return null;
|
|
1133 | 1133 |
} |
1134 | 1134 |
|
1135 | 1135 |
// // FIXME: SJ: fix to save the eigenvalues when the CA is saved |
TXM/trunk/org.txm.rcp/plugin.xml (revision 3534) | ||
---|---|---|
351 | 351 |
icon="platform:/plugin/org.eclipse.ui/icons/full/etool16/import_wiz.png" |
352 | 352 |
id="menu.file.import" |
353 | 353 |
label="%menu.label.0"> |
354 |
<command |
|
354 |
<menu |
|
355 |
icon="icons/objects/corpus.png" |
|
356 |
id="menu.file.import.corpus" |
|
357 |
label="Corpus"> |
|
358 |
<command |
|
355 | 359 |
commandId="org.txm.rcp.commands.ImportClipboardText" |
356 | 360 |
label="%command.label.60" |
357 | 361 |
style="push" |
... | ... | |
523 | 527 |
name="menu.file.import.separator.end" |
524 | 528 |
visible="true"> |
525 | 529 |
</separator> |
530 |
</menu> |
|
526 | 531 |
<menu |
527 | 532 |
id="menu.file.import.properties" |
528 | 533 |
label="%menu.label.17"> |
... | ... | |
542 | 547 |
id="menu.file.import.annotations" |
543 | 548 |
label="%menu.label.15"> |
544 | 549 |
</menu> |
550 |
<command |
|
551 |
commandId="org.txm.rcp.handlers.export.ImportResultParameters" |
|
552 |
icon="icons/functions/import_parameters.png" |
|
553 |
label="Results..." |
|
554 |
style="push"> |
|
555 |
<visibleWhen |
|
556 |
checkEnabled="false"> |
|
557 |
<and> |
|
558 |
<reference |
|
559 |
definitionId="OneTXMResultSelected"> |
|
560 |
</reference> |
|
561 |
</and> |
|
562 |
</visibleWhen> |
|
563 |
</command> |
|
545 | 564 |
</menu> |
546 | 565 |
<menu |
547 | 566 |
id="menu.file.load" |
... | ... | |
630 | 649 |
</and> |
631 | 650 |
</visibleWhen> |
632 | 651 |
</command> |
652 |
<command |
|
653 |
commandId="org.txm.rcp.handlers.export.ExportResultParameters" |
|
654 |
icon="icons/functions/export_parameters.png" |
|
655 |
label="Results..." |
|
656 |
style="push"> |
|
657 |
<visibleWhen |
|
658 |
checkEnabled="false"> |
|
659 |
<and> |
|
660 |
<reference |
|
661 |
definitionId="OneTXMResultSelected"> |
|
662 |
</reference> |
|
663 |
<not> |
|
664 |
<reference |
|
665 |
definitionId="OneMainCorpusSelected"> |
|
666 |
</reference> |
|
667 |
</not> |
|
668 |
</and> |
|
669 |
</visibleWhen> |
|
670 |
</command> |
|
633 | 671 |
</menu> |
634 | 672 |
<separator |
635 | 673 |
name="menu.file.separator.file" |
... | ... | |
1489 | 1527 |
<toolbar |
1490 | 1528 |
id="org.txm.rcp.toolbars.result"> |
1491 | 1529 |
<command |
1530 |
commandId="org.txm.rcp.handlers.export.ImportResultParameters" |
|
1531 |
icon="icons/functions/import_parameters.png" |
|
1532 |
label="Import results" |
|
1533 |
style="push"> |
|
1534 |
<visibleWhen |
|
1535 |
checkEnabled="false"> |
|
1536 |
<and> |
|
1537 |
<reference |
|
1538 |
definitionId="OneTXMResultSelected"> |
|
1539 |
</reference> |
|
1540 |
</and> |
|
1541 |
</visibleWhen> |
|
1542 |
</command> |
|
1543 |
<command |
|
1492 | 1544 |
commandId="org.txm.rcp.commands.function.ExportResult" |
1493 | 1545 |
icon="icons/functions/export_data.png" |
1494 | 1546 |
label="%command.label.51" |
... | ... | |
1512 | 1564 |
</and> |
1513 | 1565 |
</visibleWhen> |
1514 | 1566 |
</command> |
1567 |
<command |
|
1568 |
commandId="org.txm.rcp.handlers.export.ExportResultParameters" |
|
1569 |
icon="icons/functions/export_parameters.png" |
|
1570 |
label="Export results..." |
|
1571 |
style="push"> |
|
1572 |
<visibleWhen |
|
1573 |
checkEnabled="false"> |
|
1574 |
<and> |
|
1575 |
<reference |
|
1576 |
definitionId="OneTXMResultSelected"> |
|
1577 |
</reference> |
|
1578 |
<not> |
|
1579 |
<reference |
|
1580 |
definitionId="OneMainCorpusSelected"> |
|
1581 |
</reference> |
|
1582 |
</not> |
|
1583 |
</and> |
|
1584 |
</visibleWhen> |
|
1585 |
</command> |
|
1515 | 1586 |
</toolbar> |
1516 | 1587 |
<separator |
1517 | 1588 |
name="org.txm.rcp.toolbar.separator1" |
... | ... | |
2055 | 2126 |
</and> |
2056 | 2127 |
</visibleWhen> |
2057 | 2128 |
</command> |
2129 |
<command |
|
2130 |
commandId="org.txm.rcp.handlers.export.ExportResultParameters" |
|
2131 |
icon="icons/functions/export_parameters.png" |
|
2132 |
label="Results..." |
|
2133 |
style="push"> |
|
2134 |
<visibleWhen |
|
2135 |
checkEnabled="false"> |
|
2136 |
<and> |
|
2137 |
<reference |
|
2138 |
definitionId="OneTXMResultSelected"> |
|
2139 |
</reference> |
|
2140 |
<not> |
|
2141 |
<reference |
|
2142 |
definitionId="OneMainCorpusSelected"> |
|
2143 |
</reference> |
|
2144 |
</not> |
|
2145 |
</and> |
|
2146 |
</visibleWhen> |
|
2147 |
</command> |
|
2058 | 2148 |
</menu> |
2149 |
<command |
|
2150 |
commandId="org.txm.rcp.handlers.export.ImportResultParameters" |
|
2151 |
icon="icons/functions/import_parameters.png" |
|
2152 |
label="Import results" |
|
2153 |
style="push"> |
|
2154 |
<visibleWhen |
|
2155 |
checkEnabled="false"> |
|
2156 |
<and> |
|
2157 |
<reference |
|
2158 |
definitionId="OneTXMResultSelected"> |
|
2159 |
</reference> |
|
2160 |
</and> |
|
2161 |
</visibleWhen> |
|
2162 |
</command> |
|
2059 | 2163 |
|
2060 | 2164 |
<separator |
2061 | 2165 |
name="org.txm.rcp.corporaview.corpus" |
... | ... | |
2117 | 2221 |
</and> |
2118 | 2222 |
</visibleWhen> |
2119 | 2223 |
</command> |
2120 |
<command |
|
2121 |
commandId="org.txm.rcp.commands.function.RenameResult" |
|
2122 |
label="%command.label.26" |
|
2123 |
style="push"> |
|
2124 |
<visibleWhen |
|
2125 |
checkEnabled="false"> |
|
2126 |
<reference |
|
2127 |
definitionId="OneTXMResultSelected"> |
|
2128 |
</reference> |
|
2129 |
</visibleWhen> |
|
2130 |
</command> |
|
2131 | 2224 |
|
2132 | 2225 |
<command |
2133 | 2226 |
commandId="org.txm.rcp.handlers.results.DeleteObject" |
... | ... | |
2143 | 2236 |
</visibleWhen> |
2144 | 2237 |
</command> |
2145 | 2238 |
<command |
2239 |
commandId="org.txm.rcp.commands.function.RenameResult" |
|
2240 |
label="%command.label.26" |
|
2241 |
style="push"> |
|
2242 |
<visibleWhen |
|
2243 |
checkEnabled="false"> |
|
2244 |
<reference |
|
2245 |
definitionId="OneTXMResultSelected"> |
|
2246 |
</reference> |
|
2247 |
</visibleWhen> |
|
2248 |
</command> |
|
2249 |
<command |
|
2146 | 2250 |
commandId="org.txm.rcp.handlers.results.CloneTXMResult" |
2147 | 2251 |
label="%command.label.372" |
2148 | 2252 |
style="push"> |
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResultParameters.java (revision 3534) | ||
---|---|---|
29 | 29 |
|
30 | 30 |
import java.io.File; |
31 | 31 |
import java.io.IOException; |
32 |
import java.util.ArrayList; |
|
33 |
import java.util.Calendar; |
|
32 | 34 |
|
33 | 35 |
import org.eclipse.core.commands.AbstractHandler; |
34 | 36 |
import org.eclipse.core.commands.ExecutionEvent; |
... | ... | |
43 | 45 |
import org.eclipse.swt.widgets.FileDialog; |
44 | 46 |
import org.eclipse.swt.widgets.Shell; |
45 | 47 |
import org.eclipse.ui.handlers.HandlerUtil; |
48 |
import org.txm.Toolbox; |
|
46 | 49 |
import org.txm.core.preferences.TBXPreferences; |
47 | 50 |
import org.txm.core.preferences.TXMPreferences; |
48 | 51 |
import org.txm.core.results.TXMResult; |
... | ... | |
52 | 55 |
import org.txm.rcp.messages.TXMUIMessages; |
53 | 56 |
import org.txm.rcp.swt.dialog.LastOpened; |
54 | 57 |
import org.txm.rcp.utils.JobHandler; |
58 |
import org.txm.utils.DeleteDir; |
|
59 |
import org.txm.utils.zip.Zip; |
|
55 | 60 |
|
56 | 61 |
// TODO: Auto-generated Javadoc |
57 | 62 |
/** |
... | ... | |
72 | 77 |
@Override |
73 | 78 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
74 | 79 |
IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
75 |
final Object s = selection.getFirstElement(); |
|
76 |
if (!(s instanceof TXMResult)) { |
|
77 |
return null; |
|
78 |
} |
|
80 |
|
|
79 | 81 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(); |
80 | 82 |
|
81 | 83 |
// String txmhome = Toolbox.getTxmHomePath(); |
82 | 84 |
FileDialog dialog = new FileDialog(shell, SWT.SAVE); |
83 | 85 |
|
84 |
String extensions[] = { "*.parameters" }; //$NON-NLS-1$
|
|
86 |
String extensions[] = { "*.txmresults" }; //$NON-NLS-1$
|
|
85 | 87 |
dialog.setFilterExtensions(extensions); |
86 |
dialog.setFileName(((TXMResult) s).getValidFileName() + ".parameters"); //$NON-NLS-1$
|
|
88 |
dialog.setFileName("results_"+Toolbox.dateformat.format(Calendar.getInstance().getTime()) +".txmresults"); //$NON-NLS-1$
|
|
87 | 89 |
if (LastOpened.getFile(ID) != null) { |
88 | 90 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
89 | 91 |
} |
90 | 92 |
|
91 | 93 |
if (dialog.open() != null) { |
92 | 94 |
StatusLine.setMessage(TXMUIMessages.exportingResults); |
93 |
String filepath = dialog.getFilterPath() |
|
94 |
+ "/" + dialog.getFileName(); //$NON-NLS-1$ |
|
95 |
if (!(filepath.endsWith(extensions[0].substring(1)))) |
|
95 |
String filepath = dialog.getFilterPath() + "/" + dialog.getFileName(); //$NON-NLS-1$ |
|
96 |
if (!(filepath.endsWith(extensions[0].substring(1)))) { |
|
96 | 97 |
filepath += extensions[0].substring(1); |
97 |
|
|
98 |
final File outfile = new File(filepath); |
|
99 |
LastOpened.set(ID, outfile.getParent(), outfile.getName()); |
|
100 |
try { |
|
101 |
outfile.createNewFile(); |
|
102 | 98 |
} |
103 |
catch (IOException e1) { |
|
104 |
System.err.println(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1)); |
|
105 |
} |
|
106 |
if (!outfile.canWrite()) { |
|
107 |
System.out.println(NLS.bind(TXMUIMessages.impossibleToReadP0, outfile)); |
|
108 |
return null; |
|
109 |
} |
|
110 |
if (!outfile.isFile()) { |
|
111 |
System.out.println("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$ |
|
112 |
return null; |
|
113 |
} |
|
114 | 99 |
|
100 |
final File zipfile = new File(filepath+".tmp"); |
|
101 |
final File zipfiledir = new File(filepath); // temporary directory to setup the archive |
|
102 |
LastOpened.set(ID, zipfiledir.getParent(), zipfiledir.getName()); |
|
103 |
zipfiledir.delete(); |
|
104 |
zipfiledir.mkdirs(); |
|
105 |
|
|
115 | 106 |
JobHandler jobhandler = new JobHandler(TXMUIMessages.exportingResults) { |
116 | 107 |
|
117 | 108 |
@Override |
... | ... | |
119 | 110 |
|
120 | 111 |
// convert the monitor into sub-monitor |
121 | 112 |
SubMonitor subMonitor = SubMonitor.convert(monitor, TXMUIMessages.exporting, 100); |
113 |
this.runInit(subMonitor); |
|
122 | 114 |
|
123 | 115 |
try { |
124 | 116 |
|
125 |
this.runInit(subMonitor); |
|
126 |
|
|
127 |
TXMResult r = (TXMResult) s; |
|
128 |
if (r.isAltered()) { |
|
129 |
System.out.println(TXMUIMessages.ExportResultParameters_WarningOnlyTheParametersAreExportedManualChangesAreNotTransfered); |
|
117 |
ArrayList<TXMResult> toExport = new ArrayList<TXMResult>(); |
|
118 |
for (Object o : selection.toList()) { |
|
119 |
if (!(o instanceof TXMResult)) continue; |
|
120 |
TXMResult r = (TXMResult)o; |
|
121 |
toExport.add(r); |
|
122 |
TXMResult parent = ((TXMResult)o).getParent(); |
|
123 |
|
|
124 |
while(parent != null && !parent.isVisible()) { // insivisble parent must be added to the exported results |
|
125 |
|
|
126 |
toExport.add(parent); |
|
127 |
parent = parent.getParent(); |
|
128 |
} |
|
130 | 129 |
} |
131 |
else { |
|
132 |
r.compute(subMonitor); // refresh result |
|
133 |
} |
|
134 |
if (r.toParametersFile(outfile)) { |
|
135 |
System.out.println(NLS.bind(TXMUIMessages.ExportResultParameters_ParametersExportedToTheP0File, outfile)); |
|
136 |
} |
|
137 | 130 |
|
138 |
if (outfile.exists()) { |
|
139 |
// Open internal editor in the UI thread |
|
140 |
if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPORT_SHOW)) { |
|
141 |
this.syncExec(new Runnable() { |
|
142 |
|
|
143 |
@Override |
|
144 |
public void run() { |
|
145 |
EditFile.openfile(outfile.getAbsolutePath()); |
|
146 |
} |
|
147 |
}); |
|
131 |
ArrayList<File> files = new ArrayList<>(); |
|
132 |
for (TXMResult r : toExport) { |
|
133 |
|
|
134 |
if (r.isAltered()) { |
|
135 |
System.out.println(TXMUIMessages.ExportResultParameters_WarningOnlyTheParametersAreExportedManualChangesAreNotTransfered); |
|
148 | 136 |
} |
137 |
else { |
|
138 |
r.compute(subMonitor); // refresh result |
|
139 |
} |
|
149 | 140 |
|
150 |
System.out.println(NLS.bind("", outfile.getAbsolutePath())); //$NON-NLS-1$ |
|
141 |
File outfile = new File(zipfiledir, (TXMPreferences.getNode(r.getParametersNodePath()).name()+".parameters")); |
|
142 |
if (r.toParametersFile(outfile)) { |
|
143 |
files.add(outfile); |
|
144 |
} |
|
151 | 145 |
} |
152 |
else { |
|
153 |
System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, outfile.getAbsolutePath())); |
|
154 |
} |
|
146 |
|
|
147 |
System.out.println(NLS.bind(TXMUIMessages.ExportResultParameters_ParametersExportedToTheP0File, zipfiledir)); |
|
148 |
Zip.compress(files.toArray(new File[files.size()]), zipfile, Zip.DEFAULT_LEVEL_COMPRESSION, null, null); |
|
149 |
DeleteDir.deleteDirectory(zipfiledir); |
|
150 |
zipfile.renameTo(zipfiledir); |
|
155 | 151 |
} |
156 | 152 |
catch (ThreadDeath td) { |
157 |
if (s instanceof TXMResult) { |
|
158 |
((TXMResult) s).clean(); |
|
159 |
} |
|
153 |
|
|
160 | 154 |
return Status.CANCEL_STATUS; |
161 | 155 |
} |
162 | 156 |
catch (Exception e) { |
163 |
System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e)); |
|
157 |
System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, selection.toList(), e));
|
|
164 | 158 |
org.txm.utils.logger.Log.printStackTrace(e); |
165 | 159 |
return Status.CANCEL_STATUS; |
166 | 160 |
} |
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ImportResultParameters.java (revision 3534) | ||
---|---|---|
27 | 27 |
// |
28 | 28 |
package org.txm.rcp.handlers.export; |
29 | 29 |
|
30 |
import java.io.BufferedReader; |
|
30 | 31 |
import java.io.File; |
31 | 32 |
import java.io.IOException; |
33 |
import java.lang.reflect.Constructor; |
|
34 |
import java.nio.file.FileSystem; |
|
35 |
import java.nio.file.FileSystems; |
|
36 |
import java.nio.file.Files; |
|
37 |
import java.util.Arrays; |
|
38 |
import java.util.Collections; |
|
39 |
import java.util.HashMap; |
|
40 |
import java.util.LinkedHashMap; |
|
41 |
import java.util.Properties; |
|
32 | 42 |
|
33 | 43 |
import org.eclipse.core.commands.AbstractHandler; |
34 | 44 |
import org.eclipse.core.commands.ExecutionEvent; |
35 | 45 |
import org.eclipse.core.commands.ExecutionException; |
36 | 46 |
import org.eclipse.core.runtime.IProgressMonitor; |
37 | 47 |
import org.eclipse.core.runtime.IStatus; |
48 |
import org.eclipse.core.runtime.Platform; |
|
38 | 49 |
import org.eclipse.core.runtime.Status; |
39 | 50 |
import org.eclipse.jface.viewers.IStructuredSelection; |
40 | 51 |
import org.eclipse.osgi.util.NLS; |
... | ... | |
42 | 53 |
import org.eclipse.swt.widgets.FileDialog; |
43 | 54 |
import org.eclipse.swt.widgets.Shell; |
44 | 55 |
import org.eclipse.ui.handlers.HandlerUtil; |
45 |
import org.txm.core.preferences.TBXPreferences; |
|
56 |
import org.osgi.framework.Bundle; |
|
57 |
import org.txm.Toolbox; |
|
46 | 58 |
import org.txm.core.preferences.TXMPreferences; |
47 | 59 |
import org.txm.core.results.TXMResult; |
48 | 60 |
import org.txm.rcp.JobsTimer; |
49 | 61 |
import org.txm.rcp.StatusLine; |
50 |
import org.txm.rcp.editors.TXMEditor; |
|
51 |
import org.txm.rcp.handlers.files.EditFile; |
|
52 | 62 |
import org.txm.rcp.messages.TXMUIMessages; |
53 | 63 |
import org.txm.rcp.swt.dialog.LastOpened; |
54 | 64 |
import org.txm.rcp.utils.JobHandler; |
55 | 65 |
import org.txm.rcp.utils.SWTEditorsUtils; |
56 | 66 |
import org.txm.rcp.views.corpora.CorporaView; |
67 |
import org.txm.utils.DeleteDir; |
|
68 |
import org.txm.utils.io.IOUtils; |
|
69 |
import org.txm.utils.logger.Log; |
|
70 |
import org.txm.utils.zip.Zip; |
|
57 | 71 |
|
58 | 72 |
// TODO: Auto-generated Javadoc |
59 | 73 |
/** |
... | ... | |
83 | 97 |
// String txmhome = Toolbox.getTxmHomePath(); |
84 | 98 |
FileDialog dialog = new FileDialog(shell, SWT.OPEN); |
85 | 99 |
|
86 |
String extensions[] = { "*.parameters" }; //$NON-NLS-1$
|
|
100 |
String extensions[] = { "*.txmresults" }; //$NON-NLS-1$
|
|
87 | 101 |
dialog.setFilterExtensions(extensions); |
88 | 102 |
|
89 | 103 |
if (LastOpened.getFile(ID) != null) { |
90 | 104 |
dialog.setFilterPath(LastOpened.getFolder(ID)); |
91 | 105 |
} |
92 |
|
|
93 |
if (dialog.open() != null) { |
|
94 |
StatusLine.setMessage(TXMUIMessages.exportingResults); |
|
95 |
String filepath = dialog.getFilterPath() |
|
96 |
+ "/" + dialog.getFileName(); //$NON-NLS-1$ |
|
97 |
if (!(filepath.endsWith(extensions[0].substring(1)))) |
|
98 |
filepath += extensions[0].substring(1); |
|
99 |
|
|
100 |
final File outfile = new File(filepath); |
|
101 |
LastOpened.set(ID, outfile.getParent(), outfile.getName()); |
|
102 |
try { |
|
103 |
outfile.createNewFile(); |
|
104 |
} |
|
105 |
catch (IOException e1) { |
|
106 |
System.err.println(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1)); |
|
107 |
} |
|
108 |
if (!outfile.canWrite()) { |
|
109 |
System.out.println(NLS.bind(TXMUIMessages.impossibleToReadP0, outfile)); |
|
110 |
return null; |
|
111 |
} |
|
112 |
if (!outfile.isFile()) { |
|
113 |
System.out.println("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$ |
|
114 |
return null; |
|
115 |
} |
|
116 |
|
|
117 |
JobHandler jobhandler = new JobHandler(TXMUIMessages.exportingResults) { |
|
106 |
try { |
|
107 |
if (dialog.open() != null) { |
|
108 |
StatusLine.setMessage(TXMUIMessages.exportingResults); |
|
109 |
String filepath = dialog.getFilterPath()+ "/" + dialog.getFileName(); //$NON-NLS-1$ |
|
118 | 110 |
|
119 |
@Override |
|
120 |
protected IStatus run(IProgressMonitor monitor) { |
|
121 |
try { |
|
122 |
this.runInit(monitor); |
|
123 |
monitor.beginTask(TXMUIMessages.exporting, 100); |
|
111 |
final File zipfile = new File(filepath); |
|
112 |
File outdir = new File(Toolbox.getTxmHomePath(), "results/import"); |
|
113 |
DeleteDir.deleteDirectory(outdir); |
|
114 |
|
|
115 |
Zip.decompress(zipfile, outdir, false); |
|
116 |
|
|
117 |
LinkedHashMap<File, Properties> fileToProperties = new LinkedHashMap<>(); // to retrieve a new result from its old uuid |
|
118 |
HashMap<String, File> oldUUIDToPropertiesFile = new HashMap<>(); // to retrieve a new result from its old uuid |
|
119 |
HashMap<String, String> oldUUIDToNewUUID = new HashMap<>(); // to retrieve a new result from its old uuid |
|
120 |
HashMap<String, String> UUIDDependencies = new HashMap<>(); // to -> from, if from is null use the selected TXMResult as parent |
|
121 |
|
|
122 |
File[] files = outdir.listFiles(); |
|
123 |
Arrays.sort(files); |
|
124 |
|
|
125 |
for (File parametersFile : files) { |
|
126 |
if (!parametersFile.getName().endsWith(".parameters")) continue; |
|
127 |
|
|
128 |
Properties props = new Properties(); |
|
129 |
BufferedReader r = IOUtils.getReader(parametersFile); |
|
130 |
props.load(r); |
|
131 |
r.close(); |
|
132 |
|
|
133 |
fileToProperties.put(parametersFile, props); |
|
134 |
String UUID = props.getProperty(TXMPreferences.RESULT_PARAMETERS_NODE_PATH); |
|
135 |
oldUUIDToPropertiesFile.put(UUID, parametersFile); |
|
136 |
} |
|
137 |
|
|
138 |
for (File parametersFile : outdir.listFiles()) { |
|
139 |
// if (TXMPreferences.PARENT_PARAMETERS_NODE_PATH.equals(ps)) continue; |
|
140 |
//if (TXMPreferences.RESULT_PARAMETERS_NODE_PATH.equals(ps)) continue; |
|
141 |
Properties props = fileToProperties.get(parametersFile); |
|
142 |
String UUID = props.getProperty(TXMPreferences.RESULT_PARAMETERS_NODE_PATH); |
|
143 |
String parentUUID = props.getProperty(TXMPreferences.PARENT_PARAMETERS_NODE_PATH); |
|
144 |
if (!oldUUIDToPropertiesFile.containsKey(parentUUID)) { |
|
145 |
UUIDDependencies.put(UUID, null); |
|
146 |
} else { |
|
147 |
UUIDDependencies.put(UUID, parentUUID); |
|
148 |
} |
|
149 |
} |
|
150 |
|
|
151 |
JobHandler jobhandler = new JobHandler(TXMUIMessages.importStarted) { |
|
152 |
|
|
153 |
@Override |
|
154 |
protected IStatus run(IProgressMonitor monitor) { |
|
124 | 155 |
|
125 |
TXMResult r = (TXMResult) s; |
|
126 |
if (r.importParameters(outfile)) { |
|
127 |
CorporaView.refreshObject(r); |
|
128 |
System.out.println(NLS.bind("Parameter imported from the {0} file.", outfile)); //$NON-NLS-1$ |
|
129 |
SWTEditorsUtils.refreshEditors(r); |
|
156 |
for (File parametersFile: fileToProperties.keySet()) { |
|
157 |
TXMResult importedResult = null; |
|
158 |
try { |
|
159 |
this.runInit(monitor); |
|
160 |
monitor.beginTask(TXMUIMessages.exporting, 100); |
|
161 |
|
|
162 |
TXMResult defaultParentResult = (TXMResult) s; |
|
163 |
|
|
164 |
Properties props = fileToProperties.get(parametersFile); |
|
165 |
String UUID = props.getProperty(TXMPreferences.RESULT_PARAMETERS_NODE_PATH); |
|
166 |
|
|
167 |
String className = props.getProperty(TXMPreferences.CLASS, ""); //$NON-NLS-1$ //$NON-NLS-2$ |
|
168 |
if (className == null || className.length() == 0) { |
|
169 |
Log.warning(NLS.bind("Warning: can not import object with no class name set with path={0}.", parametersFile)); //$NON-NLS-1$ |
|
170 |
continue; |
|
171 |
} |
|
172 |
String bundleId = props.getProperty(TXMPreferences.BUNDLE_ID, ""); //$NON-NLS-1$ |
|
173 |
if (bundleId == null || bundleId.length() == 0) { |
|
174 |
Log.warning(NLS.bind("Warning: can not import {0} object with no bundle id set.", parametersFile)); //$NON-NLS-1$ |
|
175 |
continue; |
|
176 |
} |
|
177 |
Bundle bundle = Platform.getBundle(bundleId); |
|
178 |
if (bundle == null) { |
|
179 |
Log.warning(NLS.bind("Warning: can not import {0} object with bundle id={1}.", className, parametersFile)); //$NON-NLS-1$ |
|
180 |
continue; |
|
181 |
} |
|
182 |
|
|
183 |
Class<?> cl = bundle.loadClass(className); |
|
184 |
|
|
185 |
String resultNodePath = defaultParentResult.getProject().getParametersNodeRootPath() + TXMResult.createUUID() + "_" + cl.getSimpleName(); |
|
186 |
Log.info("Importing a "+cl.getSimpleName()+" from "+resultNodePath); |
|
187 |
TXMResult parent = defaultParentResult; |
|
188 |
if (UUIDDependencies.get(UUID) != null) { |
|
189 |
parent = TXMResult.getResult(oldUUIDToNewUUID.get(UUIDDependencies.get(UUID))); |
|
190 |
} |
|
191 |
|
|
192 |
|
|
193 |
|
|
194 |
Constructor<?> cons = cl.getConstructor(String.class); |
|
195 |
|
|
196 |
// fill the preference node with the right parameter **and then** parent right parent node path |
|
197 |
for (Object p : props.keySet()) { |
|
198 |
String ps = p.toString(); |
|
199 |
TXMPreferences.put(resultNodePath, ps, props.getProperty(ps, "")); |
|
200 |
} |
|
201 |
TXMPreferences.put(resultNodePath, TXMPreferences.PARENT_PARAMETERS_NODE_PATH, parent.getParametersNodePath()); |
|
202 |
|
|
203 |
// this should create the right TXMResult, parameters string values are set |
|
204 |
importedResult = (TXMResult) cons.newInstance(resultNodePath); |
|
205 |
importedResult.autoLoadParametersFromAnnotations(); // update java parameters |
|
206 |
importedResult.loadParameters(); |
|
207 |
|
|
208 |
oldUUIDToNewUUID.put(UUID, resultNodePath); |
|
209 |
|
|
210 |
// if (r.importParameters(outfile)) { |
|
211 |
// CorporaView.refreshObject(r); |
|
212 |
// System.out.println(NLS.bind("Parameter imported from the {0} file.", outfile)); //$NON-NLS-1$ |
|
213 |
// |
|
214 |
// this.syncExec(new Runnable() { |
|
215 |
// |
|
216 |
// @Override |
|
217 |
// public void run() { |
|
218 |
// SWTEditorsUtils.refreshEditors(r); |
|
219 |
// } |
|
220 |
// }); |
|
221 |
// } |
|
222 |
} |
|
223 |
catch (ThreadDeath td) { |
|
224 |
if (importedResult != null) { |
|
225 |
importedResult.delete(); |
|
226 |
} |
|
227 |
return Status.CANCEL_STATUS; |
|
228 |
} |
|
229 |
catch (Exception e) { |
|
230 |
Log.info(NLS.bind("Error while loading result {0}: {1}", s, e)); |
|
231 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
232 |
if (importedResult != null) { |
|
233 |
importedResult.delete(); |
|
234 |
} |
|
235 |
//return Status.CANCEL_STATUS; |
|
236 |
} |
|
237 |
|
|
130 | 238 |
} |
131 |
} |
|
132 |
catch (ThreadDeath td) { |
|
133 |
return Status.CANCEL_STATUS; |
|
134 |
} |
|
135 |
catch (Exception e) { |
|
136 |
System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e)); |
|
137 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
138 |
return Status.CANCEL_STATUS; |
|
139 |
} |
|
140 |
finally { |
|
141 | 239 |
monitor.done(); |
142 | 240 |
JobsTimer.stopAndPrint(); |
241 |
|
|
242 |
this.syncExec(new Runnable() { |
|
243 |
|
|
244 |
@Override |
|
245 |
public void run() { |
|
246 |
|
|
247 |
CorporaView.refresh(); |
|
248 |
} |
|
249 |
}); |
|
250 |
return Status.OK_STATUS; |
|
143 | 251 |
} |
144 |
return Status.OK_STATUS; |
|
145 |
} |
|
146 |
}; |
|
252 |
}; |
|
253 |
|
|
254 |
jobhandler.startJob(); |
|
255 |
} |
|
147 | 256 |
|
148 |
jobhandler.startJob(); |
|
149 | 257 |
} |
258 |
catch (Exception e1) { |
|
259 |
// TODO Auto-generated catch block |
|
260 |
e1.printStackTrace(); |
|
261 |
return null; |
|
262 |
} |
|
150 | 263 |
return null; |
151 | 264 |
} |
152 | 265 |
} |
Formats disponibles : Unified diff