Révision 3300

TXM/trunk/org.txm.imports.metopes/src/org/txm/imports/metopes/DoInstallStep.java (revision 3300)
43 43
		
44 44
		File macroDirectory = new File(Toolbox.getTxmHomePath(), "scripts/macro/org/txm/macro");
45 45
		macroDirectory.mkdirs();
46
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "src", "org/txm/macro/", "metopes", macroDirectory)) {
46
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "src", "org/txm/macro/", "metopes", macroDirectory, true)) {
47 47
			Log.severe("Error while coping Metopes org/txm/macro/metopes in "+macroDirectory.getAbsolutePath());
48 48
			return;
49 49
		}
50 50
		
51 51
		File importDirectory = new File(Toolbox.getTxmHomePath(), "scripts/import");
52 52
		importDirectory.mkdirs();
53
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "src", "org/txm/importer/metopes", "metopesLoader.groovy", importDirectory)) {
53
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "src", "org/txm/importer/metopes", "metopesLoader.groovy", importDirectory, true)) {
54 54
			Log.severe("Error while coping Metopes org/txm/importer/metopes in "+importDirectory.getAbsolutePath());
55 55
			return;
56 56
		}
57 57
		
58 58
		File xslDirectory = new File(Toolbox.getTxmHomePath(), "xsl");
59 59
		xslDirectory.mkdirs();
60
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "res", "org/txm/xml/xsl", "metopes", xslDirectory)) {
60
		if (!BundleUtils.copyFiles("org.txm.imports.metopes", "res", "org/txm/xml/xsl", "metopes", xslDirectory, true)) {
61 61
			Log.severe("Error while coping Metopes org/txm/xml/xsl/metopes in "+xslDirectory.getAbsolutePath());
62 62
			return;
63 63
		}
TXM/trunk/org.txm.rcp/src/main/java/org/eclipse/jface/fieldassist/TXMAutoCompleteField.java (revision 3300)
1 1
package org.eclipse.jface.fieldassist;
2 2

  
3
import java.util.ArrayList;
4

  
5 3
import org.eclipse.jface.bindings.keys.KeyStroke;
6
import org.eclipse.swt.events.SelectionListener;
7 4
import org.eclipse.swt.widgets.Control;
8 5

  
9 6
/**
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/EncodingSection.java (revision 3300)
89 89
			"ISO-8859-15", "Big5", "Windows-1256", "ISO-8859-9" };
90 90
	
91 91
	@Override
92
	public void update(Project project) {
92
	public void updateFields(Project project) {
93 93
		if (this.section.isDisposed()) return;
94 94
		if (project == null) return;
95 95
		// fill combo and select default encoding
......
132 132
	}
133 133
	
134 134
	@Override
135
	public boolean save(Project project) {
135
	public boolean saveFields(Project project) {
136 136
		if (this.section == null) return true;
137 137
		
138 138
		String encoding = project.getEncoding();
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/FontSection.java (revision 3300)
71 71
	}
72 72
	
73 73
	@Override
74
	public void update(Project project) {
74
	public void updateFields(Project project) {
75 75
		if (this.section.isDisposed()) return;
76 76
		if (project == null) return;
77 77
		
......
88 88
	}
89 89
	
90 90
	@Override
91
	public boolean save(Project project) {
91
	public boolean saveFields(Project project) {
92 92
		if (!this.section.isDisposed()) {
93 93
			String value = fontCombo.getText();
94 94
			if (DEFAULTFONT.equals(value)) value = "";
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/TRSSection.java (revision 3300)
1 1
package org.txm.rcp.editors.imports.sections;
2 2

  
3
import java.util.HashMap;
4

  
5 3
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
6 4
import org.eclipse.swt.SWT;
7 5
import org.eclipse.swt.widgets.Button;
......
91 89
	}
92 90
	
93 91
	@Override
94
	public void update(Project project) {
92
	public void updateFields(Project project) {
95 93
		if (this.section.isDisposed()) return;
96 94
		if (project == null) return;
97 95
		
......
103 101
	}
104 102
	
105 103
	@Override
106
	public boolean save(Project project) {
104
	public boolean saveFields(Project project) {
107 105
		if (this.section != null && !this.section.isDisposed()) {
108 106
			
109 107
			IEclipsePreferences customNode = project.getImportParameters();
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/TokenizerSection.java (revision 3300)
310 310
	}
311 311
	
312 312
	@Override
313
	public void update(Project project) {
313
	public void updateFields(Project project) {
314 314
		if (this.section.isDisposed()) return;
315 315
		if (project == null) return;
316 316
		
......
338 338
	}
339 339
	
340 340
	@Override
341
	public boolean save(Project project) {
341
	public boolean saveFields(Project project) {
342 342
		
343 343
		if (textWhiteSpaces.getText().length() == 0 && textPuncts.getText().length() == 0) {
344 344
			System.out.println(TXMUIMessages.errorWhileSavingTokenizerParameters);
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/EditionSection.java (revision 3300)
253 253
	}
254 254
	
255 255
	@Override
256
	public void update(Project project) {
256
	public void updateFields(Project project) {
257 257
		if (this.section.isDisposed()) return;
258 258
		if (project == null) return;
259 259
		
......
294 294
		if (defaults != null && defaults.length() > 0 && defaultEditions != null) {
295 295
			defaultEditions.setText(defaults);
296 296
		}
297
		
297 298
	}
298 299
	
299 300
	@Override
300
	public boolean save(Project project) {
301
	public boolean saveFields(Project project) {
301 302
		if (this.section != null && !this.section.isDisposed()) {
302 303
			
303 304
			String page_break_tag = "pb";
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/OptionsSection.java (revision 3300)
56 56
	}
57 57
	
58 58
	@Override
59
	public void update(Project project) {
59
	public void updateFields(Project project) {
60 60
		cleanButton.setSelection(project.getCleanAfterBuild());
61 61
		//
62 62
		//// value = (String) params.getKeyValueParameters().get(ImportKeys.MULTITHREAD);
......
65 65
	}
66 66
	
67 67
	@Override
68
	public boolean save(Project project) {
68
	public boolean saveFields(Project project) {
69 69
		if (this.section != null && !section.isDisposed()) {
70 70
			//
71 71
			project.setCleanAfterBuild(cleanButton.getSelection());
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/InfosSection.java (revision 3300)
73 73
	}
74 74
	
75 75
	@Override
76
	public void update(Project project) {
76
	public void updateFields(Project project) {
77 77
		section.setText(NLS.bind(TXMUIMessages.descriptionOfTheP0CorpusP1, project.getName(), project.getSrcdir()));
78 78
		
79 79
		String descContent = project.getDescription();
......
86 86
	}
87 87
	
88 88
	@Override
89
	public boolean save(Project project) {
89
	public boolean saveFields(Project project) {
90 90
		project.setDescription("<pre><br/>" + descText.getText().replace("\n", "<br/>") + "</pre>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
91 91
		
92 92
		return true;
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/FrontXSLSection.java (revision 3300)
194 194
	}
195 195
	
196 196
	@Override
197
	public void update(Project project) {
197
	public void updateFields(Project project) {
198 198
		if (this.section.isDisposed()) return;
199 199
		
200 200
		this.project = project;
......
210 210
	}
211 211
	
212 212
	@Override
213
	public boolean save(Project project) {
213
	public boolean saveFields(Project project) {
214 214
		if (xsltfileValue != null && !xsltfileValue.isDisposed())
215 215
			project.setXslt(xsltfileValue.getText());
216 216
		
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/CommandsSection.java (revision 3300)
100 100
	}
101 101
	
102 102
	@Override
103
	public void update(Project project) {
103
	public void updateFields(Project project) {
104 104
		CorpusCommandPreferences concPrefs = project.getCommandPreferences("concordance");
105 105
		if (concPrefs.get("context_limits") != null) {
106 106
			structLimitsText.setText(concPrefs.get("context_limits"));
......
127 127
	}
128 128
	
129 129
	@Override
130
	public boolean save(Project project) {
130
	public boolean saveFields(Project project) {
131 131
		if (this.section != null && !section.isDisposed()) {
132 132
			CorpusCommandPreferences concPrefs = project.getCommandPreferences("concordance");
133 133
			concPrefs.set("context_limits_type", "list");
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/ImportEditorSection.java (revision 3300)
1 1
package org.txm.rcp.editors.imports.sections;
2 2

  
3 3
import java.lang.reflect.Field;
4
import java.util.ArrayList;
4 5

  
5 6
import org.eclipse.swt.widgets.Composite;
6 7
import org.eclipse.ui.forms.widgets.FormToolkit;
......
10 11
import org.txm.core.results.BeanParameters;
11 12
import org.txm.core.results.Parameter;
12 13
import org.txm.objects.Project;
13
import org.txm.rcp.editors.TXMEditor;
14
import org.txm.rcp.messages.TXMUIMessages;
15 14
import org.w3c.dom.Document;
16 15
import org.w3c.dom.Element;
17 16
import org.w3c.dom.NodeList;
18 17

  
19 18
public abstract class ImportEditorSection {
20 19
	
20
	ArrayList<ImportSubSection> subsections = new ArrayList<ImportSubSection>();
21
	
21 22
	public static TableWrapData getButtonLayoutData() {
22 23
		TableWrapData td = new TableWrapData(TableWrapData.LEFT, TableWrapData.MIDDLE);
23 24
		return td;
......
46 47
		return gdata;
47 48
	}
48 49
	
50
	public FormToolkit getToolkit() {
51
		return toolkit;
52
	}
53
	
54
	public ScrolledForm getScrolledForm() {
55
		return form;
56
	}
57
	
58
	public Section getSection() {
59
		return section;
60
	}
61
	
49 62
	protected ScrolledForm form;
50 63
	
51 64
	protected Project project;
......
80 93
	 * @param project
81 94
	 * @return true if all necessary parameters are set
82 95
	 */
96
	public final boolean check() {
97
		
98
		if (this.checkFields()) {
99
			for (ImportSubSection sub : subsections) {
100
				if (!sub.checkFields()) {
101
					return false;
102
				}
103
			}
104
			return true;
105
		}
106
		return false;
107
	}
108
	
109
	/**
110
	 * Check if all necessary parameters are set
111
	 * 
112
	 * @param project
113
	 * @return true if all necessary parameters are set
114
	 */
83 115
	public abstract boolean checkFields();
84 116
	
85 117
	public abstract int getSectionSize(); // 1 2 3, it depends the number of element inserted in the form
......
93 125
	 * Update the Project import parameters using the section widgets values
94 126
	 * 
95 127
	 * @param project
96
	 * @deprecated interface write parameters in a import.xml
97 128
	 */
98
	@Deprecated
99
	public abstract boolean save(Project params);
129
	public final boolean save(Project project) {
130
		
131
		if (this.saveFields(project)) {
132
			for (ImportSubSection sub : subsections) {
133
				if (!sub.saveFields(project)) {
134
					return false;
135
				}
136
			}
137
			return true;
138
		}
139
		return false;
140
	}
100 141
	
101 142
	/**
143
	 * Update the Project import parameters using the section widgets values
144
	 * 
145
	 * @param project
146
	 */
147
	public abstract boolean saveFields(Project project);
148
	
149
	/**
102 150
	 * write interface parameters to a XML DOM
103 151
	 * 
152
	 * NOT USED YET
153
	 * 
104 154
	 * @param xmlFile
105 155
	 */
106 156
	public boolean save(Document document) {
157
		
107 158
		NodeList sectionList = document.getElementsByTagName("section");
108 159
		Element sectionElement = null;
109 160
		for (int i = 0; i < sectionList.getLength(); i++) {
......
133 184
	 * Update the section widgets with the Project import parameters
134 185
	 * 
135 186
	 * @param project
136
	 * @deprecated interface is now loaded from a import.xml file
137 187
	 */
138
	@Deprecated
139
	public abstract void update(Project project);
188
	public final void update(Project project) {
189
		
190
		this.updateFields(project);
191
		for (ImportSubSection sub : subsections) {
192
			sub.updateFields(project);
193
		}
194
	}
195
	
196
	/**
197
	 * Update the section widgets with the Project import parameters
198
	 * 
199
	 * @param project
200
	 */
201
	public abstract void updateFields(Project project);
140 202
}
141 203

  
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/LangSection.java (revision 3300)
148 148
	}
149 149
	
150 150
	@Override
151
	public void update(Project project) {
151
	public void updateFields(Project project) {
152 152
		if (this.section.isDisposed()) return;
153 153
		if (project == null) return;
154 154
		
......
189 189
	}
190 190
	
191 191
	@Override
192
	public boolean save(Project project) {
192
	public boolean saveFields(Project project) {
193 193
		if (!this.section.isDisposed()) {
194 194
			// LANGUAGE
195 195
			String lang = null, annotate = null;
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/ImportSubSection.java (revision 3300)
1
package org.txm.rcp.editors.imports.sections;
2

  
3
import org.eclipse.swt.SWT;
4
import org.txm.objects.Project;
5
import org.txm.rcp.swt.GLComposite;
6

  
7
public abstract class ImportSubSection extends GLComposite {
8
	
9
	protected ImportEditorSection isection;
10
	
11
	public ImportSubSection(ImportEditorSection isection, String name) {
12
		
13
		super(isection.section, SWT.NONE, name);
14
		this.isection = isection;
15
	}
16
	
17
	public abstract void updateFields(Project project);
18
	
19
	public abstract boolean saveFields(Project project);
20
	
21
	public abstract boolean checkFields();
22
}
0 23

  
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/sections/TextualPlansSection.java (revision 3300)
84 84
	}
85 85
	
86 86
	@Override
87
	public void update(Project project) {
87
	public void updateFields(Project project) {
88 88
		if (this.section != null && !section.isDisposed()) {
89 89
			outsideTextElementsText.setText(project.getTextualPlan("OutSideTextTags"));
90 90
			outsideTextElementsToEditText.setText(project.getTextualPlan("OutSideTextTagsAndKeepContent"));
......
94 94
	}
95 95
	
96 96
	@Override
97
	public boolean save(Project project) {
97
	public boolean saveFields(Project project) {
98 98
		if (this.section != null && !section.isDisposed()) {
99 99
			
100 100
			project.setTextualPlan("OutSideTextTags", outsideTextElementsText.getText().trim());
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/CorpusPage.java (revision 3300)
27 27
//
28 28
package org.txm.rcp.editors.imports;
29 29

  
30
import java.io.File;
31 30
import java.io.IOException;
32 31
import java.lang.reflect.Constructor;
33
import java.lang.reflect.InvocationTargetException;
34
import java.util.Date;
35 32
import java.util.HashMap;
36 33

  
37 34
import javax.xml.parsers.ParserConfigurationException;
......
49 46
import org.eclipse.swt.widgets.Display;
50 47
import org.eclipse.swt.widgets.Label;
51 48
import org.eclipse.ui.IEditorPart;
52
import org.eclipse.ui.IWorkbenchPartConstants;
53 49
import org.eclipse.ui.forms.IManagedForm;
54 50
import org.eclipse.ui.forms.editor.FormPage;
55 51
import org.eclipse.ui.forms.events.HyperlinkAdapter;
......
62 58
import org.eclipse.ui.forms.widgets.Section;
63 59
import org.eclipse.ui.forms.widgets.TableWrapData;
64 60
import org.eclipse.ui.forms.widgets.TableWrapLayout;
65
import org.txm.metadatas.Metadatas;
66 61
import org.txm.objects.Project;
67 62
import org.txm.rcp.IImageKeys;
68 63
import org.txm.rcp.corpuswizard.ImportWizard;
64
import org.txm.rcp.editors.imports.sections.CommandsSection;
69 65
import org.txm.rcp.editors.imports.sections.EditionSection;
70 66
import org.txm.rcp.editors.imports.sections.EncodingSection;
71 67
import org.txm.rcp.editors.imports.sections.FontSection;
......
76 72
import org.txm.rcp.editors.imports.sections.OptionsSection;
77 73
import org.txm.rcp.editors.imports.sections.TextualPlansSection;
78 74
import org.txm.rcp.editors.imports.sections.TokenizerSection;
79
import org.txm.rcp.editors.imports.sections.CommandsSection;
80
import org.txm.rcp.handlers.results.DeleteObject;
81 75
import org.txm.rcp.handlers.scripts.ExecuteImportScript;
82 76
import org.txm.rcp.messages.TXMUIMessages;
83 77
import org.txm.rcp.utils.SWTEditorsUtils;
84
import org.txm.utils.AsciiUtils;
85 78
import org.txm.utils.logger.Log;
86
import org.w3c.dom.Element;
87
import org.w3c.dom.NodeList;
88 79
import org.xml.sax.SAXException;
89 80

  
90 81
/**
......
753 744
				if (project != null) {
754 745
					saveConfig();
755 746
				}
756
				else
747
				else {
757 748
					System.out.println(TXMUIMessages.cannotStartImportConfigurationNoSourceFolderSelected);
749
				}
758 750
			}
759 751
		};
760 752
		
......
769 761
						startImport();
770 762
					}
771 763
				}
772
				else
764
				else {
773 765
					System.out.println(TXMUIMessages.cannotStartImportConfigurationNoSourceFolderSelected);
766
				}
774 767
			}
775 768
		};
776 769
		
......
939 932
		// TEST ALL SECTIONS
940 933
		boolean doSave = true;
941 934
		if (infosSection != null && !infosSection.isDisposed()) {
942
			doSave = doSave & infosSection.checkFields();
935
			doSave = doSave & infosSection.check();
943 936
		}
944 937
		if (langSection != null && !langSection.isDisposed()) {
945
			doSave = doSave & langSection.checkFields();
938
			doSave = doSave & langSection.check();
946 939
		}
947 940
		if (xsltSection != null && !xsltSection.isDisposed()) {
948
			doSave = doSave & xsltSection.checkFields();
941
			doSave = doSave & xsltSection.check();
949 942
		}
950 943
		if (tokenizerSection != null && !tokenizerSection.isDisposed()) {
951
			doSave = doSave & tokenizerSection.checkFields();
944
			doSave = doSave & tokenizerSection.check();
952 945
		}
953 946
		if (uiSection != null && !uiSection.isDisposed()) {
954
			doSave = doSave & uiSection.checkFields();
947
			doSave = doSave & uiSection.check();
955 948
		}
956 949
		if (encodingSection != null && !encodingSection.isDisposed()) {
957
			doSave = doSave & encodingSection.checkFields();
950
			doSave = doSave & encodingSection.check();
958 951
		}
959 952
		if (editionSection != null && !editionSection.isDisposed()) {
960
			doSave = doSave & editionSection.checkFields();
953
			doSave = doSave & editionSection.check();
961 954
		}
962 955
		if (fontSection != null && !fontSection.isDisposed()) {
963
			doSave = doSave & fontSection.checkFields();
956
			doSave = doSave & fontSection.check();
964 957
		}
965 958
		if (textualPlansSection != null && !textualPlansSection.isDisposed()) {
966
			doSave = doSave & textualPlansSection.checkFields();
959
			doSave = doSave & textualPlansSection.check();
967 960
		}
968 961
		if (optionsSection != null && !optionsSection.isDisposed()) {
969
			doSave = doSave & optionsSection.checkFields();
962
			doSave = doSave & optionsSection.check();
970 963
		}
971 964
		if (additionalSection != null && !additionalSection.isDisposed()) {
972
			doSave = doSave & additionalSection.checkFields();
965
			doSave = doSave & additionalSection.check();
973 966
		}
974 967
		if (!doSave) {
975 968
			System.out.println("Some fields are not correctly filled.");
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/ImportEditorSectionConfigurator.java (revision 3300)
1
package org.txm.rcp.editors.imports;
2

  
3

  
4
/**
5
 * Section configurator that adds section or subsection (a part of section)
6
 * 
7
 * @author mdecorde
8
 *
9
 */
10
public abstract class ImportEditorSectionConfigurator {
11
	
12
	public ImportEditorSectionConfigurator() {
13
		
14
	}
15
	
16
	public abstract void installSections();
17
}
0 18

  
TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/ImportModuleCustomization.java (revision 3300)
3 3
import java.util.HashMap;
4 4
import java.util.LinkedHashMap;
5 5

  
6
import org.eclipse.core.runtime.IConfigurationElement;
7
import org.eclipse.core.runtime.IContributor;
8
import org.eclipse.core.runtime.RegistryFactory;
9
import org.txm.core.messages.TXMCoreMessages;
6 10
import org.txm.rcp.editors.imports.sections.ImportEditorSection;
7 11
import org.txm.rcp.editors.imports.sections.TRSSection;
12
import org.txm.utils.logger.Log;
8 13

  
9 14
/**
10 15
 * static class that defines what parameters are used by import modules
......
46 51
	
47 52
	public static final String IMPORT_NAME = "import_name";
48 53
	
49
	static HashMap<String, HashMap<String, Boolean>> sectionsPerImportModule = new HashMap<>();
54
	public static HashMap<String, HashMap<String, Boolean>> sectionsPerImportModule = new HashMap<>();
50 55
	
51
	static HashMap<String, Class<? extends ImportEditorSection>> additionalSections = new HashMap<>();
56
	public static HashMap<String, Class<? extends ImportEditorSection>> additionalSections = new HashMap<>();
52 57
	
53
	static HashMap<String, String> names = new HashMap<>();
58
	public static HashMap<String, String> names = new HashMap<>();
54 59
	
55 60
	static { // init import module
56 61
		HashMap<String, Boolean> params = new HashMap<>();
......
167 172
		params.put(OPTIONS, true);
168 173
		sectionsPerImportModule.put("transcriberLoader.groovy", params); //$NON-NLS-1$
169 174
		names.put("transcriberLoader.groovy", "XML-TRS + CSV"); //$NON-NLS-1$ //$NON-NLS-2$
170
		additionalSections.put("transcriberLoader.groovy", TRSSection.class);
171 175
		
172 176
		params = new HashMap<>();
173 177
		params.put(PARALLEL, false);
......
320 324
		params.put(OPTIONS, true);
321 325
		sectionsPerImportModule.put("xtzLoader.groovy", params); //$NON-NLS-1$
322 326
		names.put("xtzLoader.groovy", "XML-TEI Zero + CSV"); //$NON-NLS-1$ //$NON-NLS-2$
327
		
328
		IConfigurationElement[] contributions = RegistryFactory.getRegistry().getConfigurationElementsFor("org.txm.rcp.importsection");
329
			
330
		for (int i = 0; i < contributions.length; i++) {
331
			try {
332
				IContributor c = contributions[i].getContributor();
333
				@SuppressWarnings("unchecked")
334
				ImportEditorSectionConfigurator iesc = (ImportEditorSectionConfigurator) contributions[i].createExecutableExtension("class"); //$NON-NLS-1$
335
				
336
				Log.fine(TXMCoreMessages.bind("Initializing import section with: {0}...", iesc));
337
				
338
				iesc.installSections();
339
			}
340
			catch (Exception e) {
341
				Log.severe("Error: failed to instantiate " + contributions[i].getName() + ".");
342
				e.printStackTrace();
343
			}
344
		}	
345
		additionalSections.put("transcriberLoader.groovy", TRSSection.class);
323 346
	}
324 347
	
325 348
	/**
TXM/trunk/org.txm.rcp/plugin.xml (revision 3300)
3 3
<plugin>  
4 4
   <extension-point id="org.txm.rcp.extentionpoint.command" name="%extension-point.name" schema="schema/org.txm.rcp.extentionpoint.command.exsd"/>
5 5
   <extension-point id="org.txm.rcp.editors.TXMEditorExtension" name="%extension-point.name.0" schema="schema/org.txm.rcp.editors.TXMEditorExtension.exsd"/>
6
   <extension-point id="org.txm.rcp.importsection" name="Import parameter section" schema="schema/org.txm.rcp.importsection.exsd"/>
6 7
 
7 8
   <extension
8 9
         id="Application"
TXM/trunk/org.txm.rcp/schema/org.txm.rcp.importsection.exsd (revision 3300)
1
<?xml version='1.0' encoding='UTF-8'?>
2
<!-- Schema file written by PDE -->
3
<schema targetNamespace="org.txm.rcp" xmlns="http://www.w3.org/2001/XMLSchema">
4
<annotation>
5
      <appinfo>
6
         <meta.schema plugin="org.txm.rcp" id="org.txm.rcp.importsection" name="Import parameter section"/>
7
      </appinfo>
8
      <documentation>
9
         [Enter description of this extension point.]
10
      </documentation>
11
   </annotation>
12

  
13
   <element name="extension">
14
      <annotation>
15
         <appinfo>
16
            <meta.element />
17
         </appinfo>
18
      </annotation>
19
      <complexType>
20
         <choice minOccurs="1" maxOccurs="unbounded">
21
            <element ref="importsectionconfiguration"/>
22
         </choice>
23
         <attribute name="point" type="string" use="required">
24
            <annotation>
25
               <documentation>
26
                  
27
               </documentation>
28
            </annotation>
29
         </attribute>
30
         <attribute name="id" type="string">
31
            <annotation>
32
               <documentation>
33
                  
34
               </documentation>
35
            </annotation>
36
         </attribute>
37
         <attribute name="name" type="string">
38
            <annotation>
39
               <documentation>
40
                  
41
               </documentation>
42
               <appinfo>
43
                  <meta.attribute translatable="true"/>
44
               </appinfo>
45
            </annotation>
46
         </attribute>
47
      </complexType>
48
   </element>
49

  
50
   <element name="importsectionconfiguration">
51
      <complexType>
52
         <attribute name="class" type="string">
53
            <annotation>
54
               <documentation>
55
                  
56
               </documentation>
57
               <appinfo>
58
                  <meta.attribute kind="java" basedOn="org.txm.rcp.editors.imports.ImportEditorSectionConfigurator:"/>
59
               </appinfo>
60
            </annotation>
61
         </attribute>
62
      </complexType>
63
   </element>
64

  
65
   <annotation>
66
      <appinfo>
67
         <meta.section type="since"/>
68
      </appinfo>
69
      <documentation>
70
         [Enter the first release in which this extension point appears.]
71
      </documentation>
72
   </annotation>
73

  
74
   <annotation>
75
      <appinfo>
76
         <meta.section type="examples"/>
77
      </appinfo>
78
      <documentation>
79
         [Enter extension point usage example here.]
80
      </documentation>
81
   </annotation>
82

  
83
   <annotation>
84
      <appinfo>
85
         <meta.section type="apiinfo"/>
86
      </appinfo>
87
      <documentation>
88
         [Enter API information here.]
89
      </documentation>
90
   </annotation>
91

  
92
   <annotation>
93
      <appinfo>
94
         <meta.section type="implementation"/>
95
      </appinfo>
96
      <documentation>
97
         [Enter information about supplied implementation of this extension point.]
98
      </documentation>
99
   </annotation>
100

  
101

  
102
</schema>
0 103

  
TXM/trunk/org.txm.tigersearch.rcp/groovy/org/txm/macro/ud/UD2TigerXMLMacro.groovy (revision 3300)
48 48
// for Profiterole project (2019-2021)
49 49

  
50 50
// 2019-09-25
51
// - updated default column numbers for CONNL-U SRCMF format
51
// - updated default column numbers for CONLL-U SRCMF format
52 52
// - added processing for comment lines
53 53
// - added @textid to terminal nodes
54 54
// - deleted ppos, pmor et plemma (predicted tags and lemmas)
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/searchengine/ts/TSResult.java (revision 3300)
186 186
		return matches[matchNo];
187 187
	}
188 188
	
189
	public void setDisplayProperties(List<String> tprops, String feature) {
189
	public void setDisplayProperties(ArrayList<String> tprops, String feature) {
190 190
		tsCorpus.setDisplayProperties(this.header, tprops, feature);
191 191
	}
192 192
	
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/test/DrawTSSVG.java (revision 3300)
1 1
package org.txm.test;
2 2

  
3 3
import java.io.File;
4
import java.util.ArrayList;
4 5
import java.util.Arrays;
5 6

  
6 7
import org.txm.searchengine.ts.TSCorpus;
......
32 33

  
33 34
			TSResult result = corpus.query(query);
34 35

  
35
			result.setDisplayProperties(Arrays.asList("word", "pos", "form"), "type");
36
			result.setDisplayProperties(new ArrayList<>(Arrays.asList("word", "pos", "form")), "type");
36 37

  
37 38
			TSMatch first = result.getFirst();
38 39
			System.out.println("First: nb of sub graph: "+first.getNumberOfSubGraph());
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/tigersearch/commands/DoInstall.java (revision 3300)
1
package org.txm.tigersearch.commands;
2

  
3
import java.io.File;
4

  
5
import org.txm.PostInstallationStep;
6
import org.txm.Toolbox;
7
import org.txm.utils.BundleUtils;
8

  
9
public class DoInstall extends PostInstallationStep {
10
	
11
	protected String name = "TIGERSearch"; //$NON-NLS-1$
12
	
13
	public void install()
14
	{
15
		File outputDirectory = new File(Toolbox.getTxmHomePath(), "scripts/import");
16
		outputDirectory.mkdirs();
17
		BundleUtils.copyFiles("org.txm.tigersearch.rcp", "groovy", "org/txm/importer/tigersearch", "tigersearchLoader.groovy", outputDirectory);
18
	}
19
}
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/tigersearch/rcp/InstallGroovyTIGERFiles.java (revision 3300)
41 41
		
42 42
		scriptsPackageDirectory.mkdirs();
43 43
		scriptsPackageDirectory2.mkdirs();
44
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/scripts/importer", "", scriptsPackageDirectory);
45
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/scripts/importer", "", scriptsPackageDirectory2);
44
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/scripts/importer", "", scriptsPackageDirectory, true);
45
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/scripts/importer", "", scriptsPackageDirectory2, true);
46 46
		
47 47
		// MACROS
48
		
49 48
		scriptsPackageDirectory = new File(userDirectory, "org/txm/macro/tiger");
50 49
		scriptsPackageDirectory2 = new File(systemDirectory, "org/txm/macro/tiger");
51 50
		
......
58 57
		
59 58
		scriptsPackageDirectory.mkdirs();
60 59
		scriptsPackageDirectory2.mkdirs();
61
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/macro/tiger", "", scriptsPackageDirectory);
62
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/macro/tiger", "", scriptsPackageDirectory2);
60
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/macro/tiger", "", scriptsPackageDirectory, true);
61
		BundleUtils.copyFiles(bundle_id, "groovy", "org/txm/macro/tiger", "", scriptsPackageDirectory2, true);
63 62
		
64 63
		return scriptsPackageDirectory.exists();
65 64
	}
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/tigersearch/imports/TIGERImportSectionConfigurator.java (revision 3300)
1
package org.txm.tigersearch.imports;
2

  
3

  
4
import org.txm.rcp.editors.imports.ImportEditorSectionConfigurator;
5
import org.txm.rcp.editors.imports.ImportModuleCustomization;
6

  
7

  
8
public class TIGERImportSectionConfigurator extends ImportEditorSectionConfigurator {
9
	
10
	@Override
11
	public void installSections() {
12
		
13
		ImportModuleCustomization.additionalSections.put("tigersearchLoader.groovy", TIGERSection.class);
14
	}
15
}
0 16

  
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/tigersearch/imports/TIGERSection.java (revision 3300)
1
package org.txm.tigersearch.imports;
2

  
3

  
4
import org.eclipse.swt.widgets.Button;
5
import org.eclipse.swt.widgets.Composite;
6
import org.eclipse.ui.forms.events.ExpansionAdapter;
7
import org.eclipse.ui.forms.events.ExpansionEvent;
8
import org.eclipse.ui.forms.widgets.FormToolkit;
9
import org.eclipse.ui.forms.widgets.ScrolledForm;
10
import org.eclipse.ui.forms.widgets.TableWrapLayout;
11
import org.osgi.service.prefs.Preferences;
12
import org.txm.objects.Project;
13
import org.txm.rcp.editors.imports.sections.ImportEditorSection;
14

  
15
public class TIGERSection extends ImportEditorSection {
16
	
17
	String ID = TIGERSection.class.getSimpleName();
18
	
19
	private static final int SECTION_SIZE = 1;
20
		
21
	/**
22
	 * 
23
	 * @param toolkit2
24
	 * @param form2
25
	 * @param parent
26
	 * @param stylesave
27
	 * 
28
	 * @param moduleParams
29
	 * @param scriptName temporary parameter to detect if import module is xtzLoader.groovy
30
	 */
31
	public TIGERSection(FormToolkit toolkit2, ScrolledForm form2, Composite parent, int style) {
32
		
33
		super(toolkit2, form2, parent, style, "TIGERSearch");
34
		
35
		TableWrapLayout layout = new TableWrapLayout();
36
		layout.makeColumnsEqualWidth = true;
37
		layout.numColumns = 1;
38
		this.section.setLayout(layout);
39
		this.section.setLayoutData(getSectionGridData(SECTION_SIZE));
40
		this.section.setEnabled(false);
41
		
42
		this.section.addExpansionListener(new ExpansionAdapter() {
43
			
44
			@Override
45
			public void expansionStateChanged(ExpansionEvent e) {
46
				form.layout(true);
47
			}
48
		});
49
		
50
		// filesection.setDescription("Select how to find source files");
51
		Composite sectionClient = toolkit.createComposite(this.section);
52
		TableWrapLayout slayout = new TableWrapLayout();
53
		slayout.numColumns = 4;
54
		sectionClient.setLayout(slayout);
55
		this.section.setClient(sectionClient);
56
		
57
//		headPropertiesText = toolkit.createText(sectionClient, "UD head properties to project (comma separated list)", SWT.CHECK);
58
//		gdata2 = getButtonLayoutData();
59
//		gdata2.colspan = 4; // one line
60
//		headPropertiesText.setLayoutData(gdata2);
61
//		
62
//		// build text edition or not button
63
//		depsPropertiesText = toolkit.createText(sectionClient, "UD deps properties to project (comma separated list)", SWT.CHECK);
64
//		gdata2 = getButtonLayoutData();
65
//		gdata2.colspan = 4; // one line
66
//		depsPropertiesText.setLayoutData(gdata2);
67
	}
68
	
69
	@Override
70
	public void updateFields(Project project) {
71
		if (this.section.isDisposed()) return;
72
		if (project == null) return;
73
		
74
		Preferences customNode = project.getImportParameters().node("tigersearch");
75
//		createPagesForSectionsButton.setSelection(customNode.getBoolean("create_section_pages", true)); //$NON-NLS-1$
76
//		indexTranscriberMetadataButton.setSelection(customNode.getBoolean("ignoreTranscriberMetadata", true)); //$NON-NLS-1$
77
	}
78
	
79
	@Override
80
	public boolean saveFields(Project project) {
81
		if (this.section != null && !this.section.isDisposed()) {
82
			
83
			Preferences customNode = project.getImportParameters().node("tigersearch");
84
//			customNode.putBoolean("create_section_pages", createPagesForSectionsButton.getSelection()); //$NON-NLS-1$
85
//			customNode.putBoolean("ignoreTranscriberMetadata", indexTranscriberMetadataButton.getSelection()); //$NON-NLS-1$
86
		}
87
		return true;
88
	}
89
	
90
	@Override
91
	public boolean checkFields() {
92
		return true;
93
	}
94
	
95
	@Override
96
	public int getSectionSize() {
97
		return SECTION_SIZE;
98
	}
99
}
0 100

  
TXM/trunk/org.txm.tigersearch.rcp/src/org/txm/function/tigersearch/TIGERSearch.java (revision 3300)
2 2

  
3 3
import java.io.File;
4 4
import java.nio.MappedByteBuffer;
5
import java.util.ArrayList;
5 6
import java.util.Arrays;
6 7
import java.util.List;
7 8

  
......
97 98
		
98 99
		if (tsresult.getNumberOfMatch() == 0) return false;
99 100
		
100
		tsresult.setDisplayProperties(Arrays.asList(T), NT);
101
		tsresult.setDisplayProperties(new ArrayList<>(Arrays.asList(T)), NT);
101 102
		
102 103
		try {
103 104
			// iterate to the sub th subgraph
......
117 118
	}
118 119
	
119 120
	public String[] getAvailableTProperties() {
121
		
120 122
		if (tscorpus == null) return new String[0];
121 123
		List<String> tFeatures = tscorpus.getTFeatures();
122 124
		return tFeatures.toArray(new String[tFeatures.size()]);
123 125
	}
124 126
	
125 127
	public String[] getAvailableNTProperties() {
128
		
126 129
		if (tscorpus == null) return new String[0];
127 130
		List<String> ntFeatures = tscorpus.getNTFeatures();
128 131
		return ntFeatures.toArray(new String[ntFeatures.size()]);
......
319 322
		
320 323
		return textAndWord;
321 324
	}
325

  
326
	@Override
327
	public String getIconPath() {
328
		
329
		return "platform:/plugin/org.txm.tigersearch.rcp/icons/functions/TS.png";
330
	}
322 331
}
TXM/trunk/org.txm.tigersearch.rcp/plugin.xml (revision 3300)
139 139
   <extension
140 140
         point="org.eclipse.ui.preferencePages">
141 141
      <page
142
            category="org.txm.rcp.preferences.UserPreferencePage"
142
            category="org.txm.treesearch.preferences.TreeSearchPreferencePage"
143 143
            class="org.txm.tigersearch.rcp.preferences.TigerSearchPreferencePage"
144
            id="org.txm.tigersearch.rcp.preferences.TreeSearchPreferencePage"
144
            id="org.txm.tigersearch.rcp.preferences.TigerSearchPreferencePage"
145 145
            name="TIGERSearch">
146 146
      </page>
147 147
   </extension>
TXM/trunk/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editors/imports/sections/AnnotationSection.java (revision 3300)
56 56
	}
57 57
	
58 58
	@Override
59
	public void update(Project project) {
59
	public void updateFields(Project project) {
60 60
		if (this.section.isDisposed()) return;
61 61
		if (project == null) return;
62 62
	}
63 63
	
64 64
	@Override
65
	public boolean save(Project project) {
65
	public boolean saveFields(Project project) {
66 66
		if (!this.section.isDisposed()) {
67 67
			String value = nameText.getText();
68 68
			
TXM/trunk/org.txm.analec.rcp/src/org/txm/annotation/urs/commands/DoInstallStep.java (revision 3300)
59 59
		}
60 60
		
61 61
		File macroDirectory = new File(Toolbox.getTxmHomePath(), "scripts/groovy/user/org/txm/macro/analec"); //$NON-NLS-1$
62
		if (!BundleUtils.copyFiles("org.txm.annotation.urs.rcp", "src", "org/txm/macro/", "urs", macroDirectory)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
62
		if (!BundleUtils.copyFiles("org.txm.annotation.urs.rcp", "src", "org/txm/macro/", "urs", macroDirectory, true)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
63 63
			System.out.println(NLS.bind(Messages.DoInstallStep_17, macroDirectory.getAbsolutePath()));
64 64
			return;
65 65
		}
TXM/trunk/org.txm.analec.rcp/src/org/txm/annotation/urs/InstallURSFiles.java (revision 3300)
59 59
		}
60 60

  
61 61
		String bundle_id = "org.txm.annotation.urs.rcp";
62
		BundleUtils.copyFiles(bundle_id, "src/", "org/txm/macro", "urs", macroDirectory);
62
		BundleUtils.copyFiles(bundle_id, "src/", "org/txm/macro", "urs", macroDirectory, true);
63 63

  
64 64
		// saving current version
65 65
//		URSPreferences.getInstance().put(URSPreferences.VERSION, currentVersion.toString());
TXM/trunk/org.txm.analec.rcp/src/org/txm/annotation/urs/search/URSSearchEngine.java (revision 3300)
104 104
	static ArrayList<Element> findAllInCorpus(int debug, Corpus analecCorpus, CorpusBuild corpus, String URSQL) {
105 105
		String[] params = getFilterParameters(URSQL);
106 106
		if (debug >= 2) Log.finer("PARAMS=$params");
107
		return findAllInCorpus(debug, analecCorpus, corpus, params[0], params[1], params[2], Boolean.parseBoolean(params[3]), params[4]);
107
		return findAllInCorpus(debug, analecCorpus, corpus, params[0], params[1], params[3], Boolean.parseBoolean(params[2]), params[4]);
108 108
	}
109 109
	
110 110
	static ArrayList<Element> findAllInCorpus(int debug, Corpus analecCorpus, CorpusBuild corpus, String clazzString, String typeRegex, String propName, boolean valueMustMatch, String valueRegex) {
TXM/trunk/org.txm.connlu.core/plugin.xml (revision 3300)
4 4
   <extension
5 5
         point="org.txm.PostTXMHOMEInstallationStep">
6 6
      <PostTXMHOMEInstallationStep
7
            class="org.txm.ud.core.InstallGroovyUDFiles"
7
            class="org.txm.conllu.core.InstallGroovyCoNLLUFiles"
8 8
            description="copy scripts for import module"
9
            name="UDFiles">
9
            name="CoNLLUFiles">
10 10
      </PostTXMHOMEInstallationStep>
11 11
   </extension>
12 12
   <extension
13 13
         point="org.txm.treesearch.TreeSearchSelector">
14 14
      <TreeSearchSelector
15
            class="org.txm.ud.function.UDTreeSearchSelector">
15
            class="org.txm.conllu.core.function.UDTreeSearchSelector">
16 16
      </TreeSearchSelector>
17 17
   </extension>
18 18
   <extension
19 19
         point="org.eclipse.core.runtime.preferences">
20 20
      <initializer
21
            class="org.txm.ud.preferences.UDPreferences">
21
            class="org.txm.conllu.core.preferences.UDPreferences">
22 22
      </initializer>
23 23
   </extension>
24 24

  
TXM/trunk/org.txm.connlu.core/META-INF/MANIFEST.MF (revision 3300)
1 1
Manifest-Version: 1.0
2 2
Automatic-Module-Name: org.txm.connlu.core
3
Bundle-SymbolicName: org.txm.ud.core;singleton:=true
4
Export-Package: org.txm.ud.core,
5
 org.txm.ud.function,
6
 org.txm.ud.preferences
7
Bundle-Name: CONNLU
3
Bundle-SymbolicName: org.txm.conllu.core;singleton:=true
4
Export-Package: org.txm.conllu.core,
5
 org.txm.conllu.core.function,
6
 org.txm.conllu.core.preferences
7
Bundle-Name: org.txm.conllu.core
8 8
Bundle-Version: 1.0.0.qualifier
9
Require-Bundle: org.txm.core;bundle-version="0.8.0";visibility:=reexport,
9
Require-Bundle: org.txm.core;visibility:=reexport,
10 10
 org.txm.groovy.core;bundle-version="1.0.0";visibility:=reexport,
11 11
 org.txm.treesearch.core;bundle-version="1.0.0";visibility:=reexport,
12 12
 org.txm.libs.deptreeviz;bundle-version="0.3.0";visibility:=reexport,
TXM/trunk/org.txm.connlu.core/.project (revision 3300)
1 1
<?xml version="1.0" encoding="UTF-8"?>
2 2
<projectDescription>
3
	<name>org.txm.ud.core</name>
3
	<name>org.txm.conllu.core</name>
4 4
	<comment></comment>
5 5
	<projects>
6 6
	</projects>
TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/conlluLoader.groovy (revision 3300)
1
// Copyright © 2010-2013 ENS de Lyon.
2
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of
3
// Lyon 2, University of Franche-Comté, University of Nice
4
// Sophia Antipolis, University of Paris 3.
5
//
6
// The TXM platform is free software: you can redistribute it
7
// and/or modify it under the terms of the GNU General Public
8
// License as published by the Free Software Foundation,
9
// either version 2 of the License, or (at your option) any
10
// later version.
11
//
12
// The TXM platform is distributed in the hope that it will be
13
// useful, but WITHOUT ANY WARRANTY; without even the implied
14
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15
// PURPOSE. See the GNU General Public License for more
16
// details.
17
//
18
// You should have received a copy of the GNU General
19
// Public License along with the TXM platform. If not, see
20
// http://www.gnu.org/licenses.
21
//
22
//
23
//
24
// $LastChangedDate: 2015-06-03 15:04:53 +0200 (mer., 03 juin 2015) $
25
// $LastChangedRevision: 2984 $
26
// $LastChangedBy: mdecorde $
27
//
28
package org.txm.scripts.importer.conllu;
29

  
30
import javax.xml.stream.*
31

  
32
import org.txm.*
33
import org.txm.metadatas.*
34
import org.txm.objects.*
35
import org.txm.importer.scripts.xmltxm.*
36
import org.txm.utils.*
37
import org.txm.utils.i18n.*
38
import org.txm.importer.xtz.*
39

  
40
String userDir = System.getProperty("user.home");
41

  
42
def MONITOR;
43
Project project;
44

  
45
try {project=projectBinding;MONITOR=monitor} catch (Exception)
46
{	}
47
if (project == null) { println "no project set. Aborting"; return; }
48
CoNLLUImport i = new CoNLLUImport(project);
49
/*
50
 * To customize the XTZ import, replace the importer, compiler, annotater or pager objects before calling process()
51
		i.importer = new XTZImporter(i)
52
		i.compiler = new XTZCompiler(i)
53
		i.annotater = new TTAnnotater(i);
54
		i.pager = new XTZPager(i)
55
 */
56
i.process();
57
readyToLoad = i.isSuccessful && project.save()
TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CoNLLUImport.groovy (revision 3300)
1
package org.txm.scripts.importer.conllu;
2

  
3
import java.io.File;
4
import java.util.ArrayList;
5

  
6
import ims.tiger.index.writer.*
7
import ims.tiger.system.*
8

  
9
import org.txm.Toolbox;
10
import org.txm.importer.ApplyXsl2;
11
import org.txm.importer.xtz.*
12
import org.txm.objects.Project
13
import org.txm.utils.BundleUtils;
14
import org.txm.utils.io.FileCopy;
15
import org.txm.utils.io.IOUtils
16
import org.apache.log4j.BasicConfigurator;
17
import org.txm.importer.xtz.*
18
import org.txm.scripts.importer.xtz.*
19
import org.txm.scripts.importer.tigersearch.TSImport
20
import org.txm.utils.*
21
import org.txm.searchengine.ts.TIGERSearchEngine
22

  
23
class CoNLLUImport extends XTZImport {
24

  
25
	public CoNLLUImport(Project params) {
26
		super(params);
27
	}
28

  
29
	@Override
30
	public void init(Project p) {
31
		super.init(p);
32

  
33
		importer = new CoNLLUImporter(this);
34
		compiler = new XTZCompiler(this)
35
		annotater = null; // no annotater step to do
36
		pager = new XTZPager(this)
37
	}
38
	
39
	/**
40
	 * Do a XTZ Import then build the TIGERSearch indexes in the binary corpus "tiger" directory
41
	 */
42
	@Override
43
	public void start() throws InterruptedException {
44
		
45
		super.start(); // call the usual XTZ import
46
		
47
		// build the TIGER-XML file
48
		new CallUD2TigerPerlScript().convertCoNLLUFiles(this.sourceDirectory.getAbsolutePath(), this.binaryDirectory.getAbsolutePath())
49
		
50
		
51
		File tigerXMLDirectory = new File(this.binaryDirectory, "tiger-xml")
52
		
53
		File xslfile1 = BundleUtils.getFile("org.txm.conllu.core", "groovy", "/org/txm/scripts/importer/conllu/", "tigerXml-commentOutLongSentences.xsl")
54
		File xslfile2 = BundleUtils.getFile("org.txm.conllu.core", "groovy", "/org/txm/scripts/importer/conllu/", "tigerXml-sortBfmByDate.xsl")
55
		
56
		ApplyXsl2 a1 = new ApplyXsl2(xslfile1);
57
		ApplyXsl2 a2 = new ApplyXsl2(xslfile2);
58
		for (File xmlFile : tigerXMLDirectory.listFiles()) {
59
			if (!xmlFile.getName().endsWith(".xml")) continue;
60
			File xmlFileTmp = new File(xmlFile.getAbsolutePath()+".tmp")
61
			if (!(a1.process(xmlFile, xmlFileTmp) && xmlFile.delete() && xmlFileTmp.renameTo(xmlFile))) {
62
				println "Error while applying $xslfile1 to $xmlFile"
63
			}
64
			
65
			if (!(a2.process(xmlFile, xmlFileTmp) && xmlFile.delete() && xmlFileTmp.renameTo(xmlFile))) {
66
				println "Error while applying $xslfile2 to $xmlFile"
67
			}
68
		}
69
		
70
		// build TIGER indexes
71
		if (isSuccessful) {
72
			// read from the 'tiger-xml' and write to the 'tiger' directory
73
			TIGERSearchEngine.buildTIGERCorpus(tigerXMLDirectory, this.binaryDirectory, corpusName);
74
		}
75
	}
76
}
TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CallUD2TigerPerlScript.groovy (revision 3300)
1
package org.txm.scripts.importer.conllu
2

  
3
import org.txm.utils.*
4

  
5
def convertCoNLLUFiles(def input_directory_path, def output_directory) {
6
	
7
	def input_directory = new File(input_directory_path)
8
	
9
	if (input_directory_path.length() == 0 && input_directory.canRead()) {
10
		println "** impossible to access directory $input_directory. Aborting."
11
		return false
12
	}
13
	
14
	def tigerXMLDirectory = new File(output_directory, "tiger-xml")
15
	def conversionFile = new File(tigerXMLDirectory, "conversion.log")
16
	def mainFullFile = new File(tigerXMLDirectory, "main-full.xml")
17
	def mainFile = new File(tigerXMLDirectory, "main.xml")
18
	def perlScript = BundleUtils.getFile("org.txm.conllu.core", "groovy", "/org/txm/scripts/importer/conllu/", "conll2tiger-ud.pl")
19
	
20
	tigerXMLDirectory.deleteDir()
21
	//println "clean&mkdir $tigerXMLDirectory"
22
	tigerXMLDirectory.mkdir()
23
	
24
	//println "Converting..."
25
	
26
	def subcorpusList = ""
27
	for (def f : input_directory.listFiles()) {
28
		
29
		if (!f.getName().endsWith(".conllu")) {
30
			continue
31
		}
32
		
33
		try {
34
			println "$f... "+"perl '$perlScript' -s 10000 -o '$tigerXMLDirectory' '$f'"
35
			def p =  ["perl", "$perlScript", "-s", "10000", "-o", "$tigerXMLDirectory", "$f"].execute()
36
			def sout = new StringBuilder(), serr = new StringBuilder()
37
			p.consumeProcessOutput(sout, serr)
38
			p.waitFor()
39
			
40
			subcorpusList += mainFile.readLines("UTF-8").findAll() {it.contains("<subcorpus ")}.join("\n") // tiger-xml/main.xml >> tiger-xml/subcorpus-list
41
		} catch (Throwable t) { println "Error: $t" }
42
	}
43
	
44
	//	println "subcorpus-list: "+subcorpusList
45
	mainFullFile.setText(mainFile.getText().replaceAll("<subcorpus .+</subcorpus>", subcorpusList))
46
	
47
	conversionFile.delete()
48
	mainFullFile.renameTo(mainFile)
49
	
50
	//println "Done."
51
	return true
52
}
TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/tigerXml-commentOutLongSentences.xsl (revision 3300)
1
<!-- The Identity Transformation -->
2
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
  
4
  <!-- This stylesheet comments out the sentences containing more than 100 terminal nodes in Tiger XML files.
5
    To change the theshold, puse the maxLength parameter.
6
  
7
  Written by A. Lavrentiev, CNRS, UMR IHRIM 2021-07-16
8
  Licence: GNU GPL v.3
9
  -->
10
  
11
  <!-- Whenever you match any node or any attribute -->
12
  <xsl:template match="node()|@*">
13
    <!-- Copy the current node -->
14
    <xsl:copy>
15
      <!-- Including any attributes it has and any child nodes -->
16
      <xsl:apply-templates select="@*|node()"/>
17
    </xsl:copy>
18
  </xsl:template>
19
  
20
  <xsl:param name="maxLength" as="xs:integer">100</xsl:param>
21
  
22
  <xsl:template match="s">
23
    <xsl:choose>
24
      <xsl:when test="count(graph/terminals/t) gt $maxLength">
25
        <xsl:comment>
26
          Sentence too long (<xsl:value-of select="count(graph/terminals/t)"/> tokens) :
27
          <xsl:for-each select="graph/terminals/t"><xsl:value-of select="@word"/><xsl:text> </xsl:text></xsl:for-each>
28
        </xsl:comment>
29
      </xsl:when>
30
      <xsl:otherwise>
31
        <xsl:copy-of select="."/>
32
      </xsl:otherwise>
33
    </xsl:choose>
34
  </xsl:template>
35
  
36
</xsl:stylesheet>
0 37

  
TXM/trunk/org.txm.connlu.core/groovy/org/txm/scripts/importer/conllu/CoNLLUImporter.groovy (revision 3300)
1
package org.txm.scripts.importer.conllu
2

  
3
import org.txm.Toolbox
4
import org.txm.importer.xtz.ImportModule;
5
import org.txm.metadatas.Metadatas
6
import org.txm.utils.io.FileCopy
7
import org.txm.utils.io.IOUtils
8
import org.txm.importer.xtz.*
9
import org.txm.scripts.importer.xtz.*
10
import org.txm.conllu.core.function.ImportCoNLLUAnnotations
11
import org.txm.conllu.core.preferences.UDPreferences
12
import org.txm.importer.ApplyXsl2;
13
import javax.xml.stream.*
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.

Formats disponibles : Unified diff