Révision 1094

tmp/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/handlers/ComputeCooccurrences.java (revision 1094)
41 41
import org.txm.rcp.editors.TXMEditor;
42 42
import org.txm.rcp.handlers.BaseAbstractHandler;
43 43
import org.txm.rcp.messages.TXMUIMessages;
44
import org.txm.searchengine.cqp.corpus.Corpus;
44
import org.txm.searchengine.cqp.corpus.CQPCorpus;
45 45
import org.txm.searchengine.cqp.corpus.StructuralUnit;
46 46
import org.txm.searchengine.cqp.corpus.WordProperty;
47 47
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
......
98 98
				List<WordProperty> properties = null;
99 99

  
100 100
				Concordance conc = (Concordance) selection;
101
				Corpus corpus = conc.getCorpus();
101
				CQPCorpus corpus = conc.getCorpus();
102 102
				maxleft = conc.getLeftContextSize();
103 103
				maxright = conc.getRightContextSize();
104 104
				properties = new ArrayList<WordProperty>();
......
116 116

  
117 117
			}
118 118
			// Creating from Corpus
119
			else if (selection instanceof Corpus) {
120
				cooc = new Cooccurrence((Corpus) selection);
119
			else if (selection instanceof CQPCorpus) {
120
				cooc = new Cooccurrence((CQPCorpus) selection);
121 121
			}
122 122
			// Reopening an existing result
123 123
			else if (selection instanceof Cooccurrence) {
tmp/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/handlers/___CooccurrencesToConcordances.java (revision 1094)
42 42
import org.txm.cooccurrence.core.functions.Cooccurrence.CLine;
43 43
import org.txm.cooccurrence.rcp.editors.CooccurrencesEditor;
44 44
import org.txm.rcp.editors.TXMResultEditorInput;
45
import org.txm.searchengine.cqp.corpus.Corpus;
45
import org.txm.searchengine.cqp.corpus.CQPCorpus;
46 46
import org.txm.searchengine.cqp.corpus.WordProperty;
47 47
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
48 48

  
......
115 115
		
116 116
		query = "("+cooc.getQuery()+" []* "+query+") | ("+query+" []* "+cooc.getQuery()+") "+maxempanstr; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
117 117
		
118
		Corpus corpus = cooc.getCorpus();
118
		CQPCorpus corpus = cooc.getCorpus();
119 119
		Concordance concordance = new Concordance(corpus);
120 120
		concordance.setParameters(new CQLQuery(query), null, null, null, null, null, null, null, null, null, null);
121 121
		editorInput = new TXMResultEditorInput(concordance);
tmp/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/CooccurrencesEditor.java (revision 1094)
32 32
import java.util.List;
33 33

  
34 34
import org.eclipse.core.runtime.IProgressMonitor;
35
import org.eclipse.jface.action.MenuManager;
35 36
import org.eclipse.jface.operation.IRunnableWithProgress;
36 37
import org.eclipse.jface.viewers.TableViewer;
37 38
import org.eclipse.osgi.util.NLS;
38 39
import org.eclipse.swt.SWT;
40
import org.eclipse.swt.custom.ScrolledComposite;
41
import org.eclipse.swt.events.KeyEvent;
42
import org.eclipse.swt.events.KeyListener;
39 43
import org.eclipse.swt.events.SelectionEvent;
40 44
import org.eclipse.swt.events.SelectionListener;
41 45
import org.eclipse.swt.graphics.Font;
......
49 53
import org.eclipse.swt.layout.RowLayout;
50 54
import org.eclipse.swt.widgets.Composite;
51 55
import org.eclipse.swt.widgets.Display;
56
import org.eclipse.swt.widgets.Event;
52 57
import org.eclipse.swt.widgets.Label;
58
import org.eclipse.swt.widgets.Listener;
59
import org.eclipse.swt.widgets.Menu;
53 60
import org.eclipse.swt.widgets.Spinner;
54 61
import org.eclipse.swt.widgets.TableColumn;
62
import org.eclipse.swt.widgets.Text;
55 63
import org.eclipse.ui.IEditorInput;
56 64
import org.eclipse.ui.IEditorSite;
57 65
import org.eclipse.ui.PartInitException;
58 66
import org.eclipse.ui.PlatformUI;
67
import org.txm.concordance.core.preferences.ConcordancePreferences;
59 68
import org.txm.cooccurrence.core.functions.Cooccurrence;
60 69
import org.txm.cooccurrence.core.functions.comparators.CLineComparator;
61 70
import org.txm.cooccurrence.core.functions.comparators.DistComparator;
......
74 83
import org.txm.rcp.editors.TXMResultEditorInput;
75 84
import org.txm.rcp.editors.TableKeyListener;
76 85
import org.txm.rcp.editors.listeners.ComputeKeyListener;
86
import org.txm.rcp.editors.listeners.ComputeListener;
77 87
import org.txm.rcp.editors.listeners.ComputeSelectionListener;
88
import org.txm.rcp.messages.TXMUIMessages;
89
import org.txm.rcp.preferences.RCPPreferences;
78 90
import org.txm.rcp.swt.widget.AssistedQueryWidget;
79 91
import org.txm.rcp.swt.widget.FloatSpinner;
80 92
import org.txm.rcp.swt.widget.PropertiesSelector;
81 93
import org.txm.rcp.views.QueriesView;
82 94
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
83
import org.txm.searchengine.cqp.corpus.Corpus;
95
import org.txm.searchengine.cqp.corpus.CQPCorpus;
84 96
import org.txm.searchengine.cqp.corpus.Property;
85 97
import org.txm.searchengine.cqp.corpus.WordProperty;
86 98
import org.txm.statsengine.r.rcp.views.RVariablesView;
......
131 143
	
132 144
	// params
133 145
	/** The query widget. */
134
	@Parameter(key=TXMPreferences.QUERY)
146
	@Parameter(key=CooccurrencePreferences.QUERY)
135 147
	AssistedQueryWidget queryWidget;
136 148

  
137 149
	/** The props area. */
......
150 162
	@Parameter(key=CooccurrencePreferences.MIN_SCORE)
151 163
	FloatSpinner minScore;
152 164
	
153
	
154 165

  
166

  
155 167
	/**
156 168
	 * Initialize the editor with the cooccurrences TXMResult
157 169
	 *
......
335 347
		
336 348
		// empant
337 349
		empantPanel = new EmpantWidget(paramArea, SWT.NONE, this.getCorpus());
350

  
338 351
		FormData empantLayoutData = new FormData();
339 352
		empantLayoutData.top = new FormAttachment(filtercontrols, 0);
340 353
		empantLayoutData.bottom = new FormAttachment(100);
......
582 595
	 *
583 596
	 * @return the corpus
584 597
	 */
585
	public Corpus getCorpus() {
598
	public CQPCorpus getCorpus() {
586 599
		return cooc.getCorpus();
587 600
	}
588 601

  
tmp/org.txm.cooccurrence.rcp/src/org/txm/cooccurrence/rcp/editors/EmpantWidget.java (revision 1094)
39 39
import org.eclipse.swt.widgets.Spinner;
40 40
import org.txm.rcp.messages.TXMUIMessages;
41 41
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
42
import org.txm.searchengine.cqp.corpus.Corpus;
42
import org.txm.searchengine.cqp.corpus.CQPCorpus;
43 43
import org.txm.searchengine.cqp.corpus.StructuralUnit;
44 44

  
45 45
// TODO: Auto-generated Javadoc
......
82 82
	Label infoLabel;
83 83
	
84 84
	/** The corpus. */
85
	Corpus corpus;
85
	CQPCorpus corpus;
86 86

  
87 87
	/**
88 88
	 * Instantiates a new empant widget.
......
91 91
	 * @param style the style
92 92
	 * @param corpus the corpus
93 93
	 */
94
	public EmpantWidget(Composite parent, int style, Corpus corpus) {
94
	public EmpantWidget(Composite parent, int style, CQPCorpus corpus) {
95 95
		super(parent, style);
96 96
		this.corpus = corpus;
97 97
		GridLayout mainLayout = new GridLayout(1, true);
tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/KRAnnotationEngine.java (revision 1094)
2 2

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

  
8 9
import org.eclipse.core.runtime.IProgressMonitor;
10
import org.osgi.service.prefs.BackingStoreException;
9 11
import org.txm.annotation.core.AnnotationEngine;
10 12
import org.txm.annotation.kr.core.repository.KnowledgeRepository;
11 13
import org.txm.annotation.kr.core.repository.KnowledgeRepositoryManager;
12 14
import org.txm.annotation.kr.core.repository.SQLKnowledgeRepository;
13 15
import org.txm.objects.Project;
14
import org.txm.objects.BaseParameters;
15
import org.txm.searchengine.cqp.corpus.Corpus;
16
import org.txm.objects.BaseOldParameters;
17
import org.txm.searchengine.cqp.corpus.CQPCorpus;
16 18
import org.txm.searchengine.cqp.corpus.MainCorpus;
17 19
import org.txm.sql.SQLConnection;
18 20
import org.txm.utils.logger.Log;
......
33 35
		return getKnowledgeRepositoryNames(corpus).size() > 0;
34 36
	}
35 37

  
36
	public static AnnotationManager getAnnotationManager(Corpus corpus) throws Exception{
38
	public static AnnotationManager getAnnotationManager(CQPCorpus corpus) throws Exception{
37 39
		return getAnnotationManager(corpus.getMainCorpus());
38 40
	}
39 41

  
......
75 77
	 * @param name KnowledgeRepository's name
76 78
	 * @return may return null if the KnowledgeRepository does not exist
77 79
	 */
78
	public static KnowledgeRepository getKnowledgeRepository(Corpus corpus, String name) {
80
	public static KnowledgeRepository getKnowledgeRepository(CQPCorpus corpus, String name) {
79 81
		return KnowledgeRepositoryManager.getKnowledgeRepository(name, corpus.getMainCorpus());
80 82
	}
81 83

  
......
166 168
		return repConfiguration;
167 169
	}
168 170

  
169
	public static Element getKnowledgeRepositoryElement(BaseParameters params, String name) {
171
	public static Element getKnowledgeRepositoryElement(BaseOldParameters params, String name) {
170 172
		Element rElement = getKnowledgeRepositoriesElement(params.getCorpusElement());
171 173
		NodeList repositoriesList = rElement.getElementsByTagName("repository");
172 174
		for (int i = 0 ; i < repositoriesList.getLength() ; i++) {
......
186 188
	 * @param params
187 189
	 * @return the repository names
188 190
	 */
189
	public static List<String> getKnowledgeRepositoryNames(BaseParameters params) {
191
	public static List<String> getKnowledgeRepositoryNames(BaseOldParameters params) {
190 192
		ArrayList<String> names = new ArrayList<String>();
191 193
		Element corpusElement = params.getCorpusElement();
192 194
		if (corpusElement == null) return names;
......
208 210
	 * @param corpus the corpus
209 211
	 * @return the repository names
210 212
	 */
211
	public static List<String> getKnowledgeRepositoryNames(Corpus corpus) {
213
	public static List<String> getKnowledgeRepositoryNames(CQPCorpus corpus) {
212 214
		if (corpus == null) return new ArrayList<String>();
213 215
		Project base = corpus.getProject();
214 216
		if (base == null) return new ArrayList<String>();
215
		BaseParameters params = base.getProjectParameters();
216
		return getKnowledgeRepositoryNames(params);
217
		String[] names;
218
		try {
219
			names = base.getPreferences().getNode("KnowledgeRepository").node("names").keys();
220
			return Arrays.asList(names); // getKnowledgeRepositoryNames(params);
221
		} catch (BackingStoreException e) {
222
			e.printStackTrace();
223
			return new ArrayList<>();
224
		}
217 225
	}
218 226
	
219 227
	/**
......
237 245
		}
238 246
	}
239 247
	
240
	public static Element createKnowledgeRepositoryElement(BaseParameters params, String name) {
248
	public static Element createKnowledgeRepositoryElement(BaseOldParameters params, String name) {
241 249
		Element rElement = getKnowledgeRepositoriesElement(params.getCorpusElement());
242 250
		Element e = rElement.getOwnerDocument().createElement("repository");
243 251
		e.setAttribute("name", name);
......
266 274
	}
267 275

  
268 276
	@SuppressWarnings("unchecked")
269
	public boolean[] mustLoginToKnowledgeRepository(Corpus corpus, String kr_name) {
277
	public boolean[] mustLoginToKnowledgeRepository(CQPCorpus corpus, String kr_name) {
270 278
		return KnowledgeRepositoryManager.mustLoginToKnowledgeRepository(kr_name, corpus.getMainCorpus());
271 279
	}
272 280

  
tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/repository/KnowledgeRepositoryManager.java (revision 1094)
12 12
import org.txm.annotation.kr.core.DatabasePersistenceManager;
13 13
import org.txm.annotation.kr.core.KRAnnotationEngine;
14 14
import org.txm.core.preferences.TBXPreferences;
15
import org.txm.objects.BaseParameters;
15
import org.txm.objects.BaseOldParameters;
16 16
import org.txm.searchengine.cqp.corpus.MainCorpus;
17 17
import org.txm.sql.SQLConnection;
18 18
import org.txm.utils.logger.Log;
......
154 154
			}
155 155
		}
156 156

  
157
		BaseParameters bp = corpus.getProject().getProjectParameters();
157
		//FIXME read KR configuration from Project preferences
158
		BaseOldParameters bp = null;//corpus.getProject().getProjectParameters();
158 159
		Element krCorpusElement = KRAnnotationEngine.getKnowledgeRepositoryElement(bp, name);
159 160
		if (krCorpusElement == null) krCorpusElement = KRAnnotationEngine.createKnowledgeRepositoryElement(bp, name);
160 161
		String sKRCorpusVersion = krCorpusElement.getAttribute("version");
tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/AnnotationWriter.java (revision 1094)
87 87
	 */
88 88
	public boolean writeAnnotationsInStandoff(File resultZipFile) throws IOException, CqiServerError, CqiClientException, InvalidCqpIdException, XMLStreamException{
89 89
		
90
		List<String> textsIds = corpus.getTextsID();
90
		List<String> textsIds = corpus.getProject().getTextsID();
91 91
		System.out.println("Exporting annotations of "+StringUtils.join(textsIds, ", ")+".");
92 92

  
93 93
		File resultDirectory = new File(Toolbox.getTxmHomePath(), "results/"+corpus.getName()+"_annotations");
......
138 138

  
139 139
		int[] end_limits = corpus.getTextEndLimits();
140 140
		int[] start_limits = corpus.getTextStartLimits();
141
		List<String> textsIds = corpus.getTextsID();
141
		List<String> textsIds = corpus.getProject().getTextsID();
142 142

  
143 143
		File inputDirectory = corpus.getProjectDirectory();
144 144
		File txmDirectory = new File(inputDirectory, "txm/"+corpus.getName());
tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/AnnotationInjector.java (revision 1094)
13 13
import javax.xml.stream.XMLInputFactory;
14 14
import javax.xml.stream.XMLStreamException;
15 15

  
16
import org.txm.Toolbox;
16 17
import org.txm.importer.StaxIdentityParser;
17 18
import org.txm.importer.ValidateXml;
18
import org.txm.objects.BaseParameters;
19 19

  
20 20
/**
21 21
 * The Class AnnotationInjection.
......
465 465
			writer.writeStartElement("txm:" + a.getType());
466 466
			writer.writeAttribute("author", "" + a.getAnnotator());
467 467
			writer.writeAttribute("ref", a.getValue());
468
			writer.writeAttribute("date", BaseParameters.dateformat.format(new Date()));
468
			writer.writeAttribute("date", Toolbox.dateformat.format(new Date()));
469 469
			writer.writeAttribute("start", Integer.toString(a.getStart()));
470 470
			writer.writeAttribute("end", Integer.toString(a.getEnd()));
471 471
		} catch (XMLStreamException e) {
tmp/org.txm.annotation.kr.core/src/org/txm/annotation/kr/core/Annotation.java (revision 1094)
7 7

  
8 8
import javax.persistence.*;
9 9

  
10
import org.txm.Toolbox;
10 11
import org.txm.annotation.kr.core.repository.KnowledgeRepository;
11
import org.txm.objects.BaseParameters;
12 12
 
13 13
@Entity
14 14
public class Annotation implements Serializable {
......
33 33
	public Annotation(String refType, String refVal, int CQPstartpos, int CQPendpos) 	{
34 34
		this.PK = new AnnotationPK(CQPstartpos, CQPendpos, refType);
35 35
		this.refVal = refVal;
36
		this.date = BaseParameters.dateformat.format(new Date());
36
		this.date = Toolbox.dateformat.format(new Date());
37 37
		
38 38
		String s = System.getProperty(KnowledgeRepository.LOGIN_KEY);
39 39
		if (s != null && s.length() > 0) {
tmp/org.txm.textsbalance.rcp/src/org/txm/textsbalance/rcp/handlers/ComputeTextsBalance.java (revision 1094)
32 32
import org.txm.chartsengine.rcp.editors.ChartEditor;
33 33
import org.txm.rcp.handlers.BaseAbstractHandler;
34 34
import org.txm.rcp.views.corpora.CorporaView;
35
import org.txm.searchengine.cqp.corpus.Corpus;
35
import org.txm.searchengine.cqp.corpus.CQPCorpus;
36 36
import org.txm.textsbalance.core.functions.TextsBalance;
37 37

  
38 38
/**
......
52 52
		TextsBalance textsBalance = null;
53 53
		
54 54
		// creates new result
55
		if(selection instanceof Corpus) {
56
			textsBalance = new TextsBalance((Corpus) selection);
55
		if(selection instanceof CQPCorpus) {
56
			textsBalance = new TextsBalance((CQPCorpus) selection);
57 57
		}
58 58
		// reopens existing result
59 59
		else if(selection instanceof TextsBalance) {
tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java (revision 1094)
48 48
import org.txm.progression.core.messages.ProgressionCoreMessages;
49 49
import org.txm.progression.core.preferences.ProgressionPreferences;
50 50
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
51
import org.txm.searchengine.cqp.corpus.Corpus;
51
import org.txm.searchengine.cqp.corpus.CQPCorpus;
52 52
import org.txm.searchengine.cqp.corpus.CorpusManager;
53 53
import org.txm.searchengine.cqp.corpus.Property;
54 54
import org.txm.searchengine.cqp.corpus.QueryResult;
55 55
import org.txm.searchengine.cqp.corpus.StructuralUnit;
56 56
import org.txm.searchengine.cqp.corpus.StructuralUnitProperty;
57 57
import org.txm.searchengine.cqp.corpus.Subcorpus;
58
import org.txm.searchengine.cqp.corpus.query.Match;
58 59
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
59
import org.txm.searchengine.cqp.corpus.query.Match;
60 60
import org.txm.searchengine.cqp.serverException.CqiServerError;
61 61
import org.txm.utils.logger.Log;
62 62

  
......
149 149
	 * 
150 150
	 * @param parent
151 151
	 */
152
	public Progression(Corpus parent)	{
152
	public Progression(CQPCorpus parent)	{
153 153
		super(parent);
154 154
	}
155 155

  
......
337 337
	 * @param corpus
338 338
	 * @return
339 339
	 */
340
	public static boolean canRunProgression(Corpus corpus) {
340
	public static boolean canRunProgression(CQPCorpus corpus) {
341 341
		if (corpus.getMatches().size() == 1) {
342 342
			return true;
343 343
		}
......
591 591
	 *
592 592
	 * @return the corpus
593 593
	 */
594
	public Corpus getCorpus() {
595
		return (Corpus) this.parent;
594
	public CQPCorpus getCorpus() {
595
		return (CQPCorpus) this.parent;
596 596
	}
597 597

  
598 598
	/**
tmp/org.txm.specificities.rcp/src/org/txm/specificities/rcp/editors/SpecificitiesEditor.java (revision 1094)
46 46
import org.txm.rcp.editors.TableKeyListener;
47 47
import org.txm.rcp.swt.GLComposite;
48 48
import org.txm.rcp.swt.widget.structures.PropertiesComboViewer;
49
import org.txm.searchengine.cqp.corpus.Corpus;
49
import org.txm.searchengine.cqp.corpus.CQPCorpus;
50 50
import org.txm.specificities.core.functions.Specificities;
51 51
import org.txm.specificities.core.preferences.SpecificitiesPreferences;
52 52
import org.txm.specificities.rcp.messages.SpecificitiesUIMessages;
......
97 97
	public void _createPartControl() {
98 98

  
99 99
		try {
100

  
101 100
			// Main parameters
102 101
			GLComposite mainParametersArea = this.getMainParametersComposite();
103 102
			mainParametersArea.getLayout().numColumns = 2;
......
105 104
			// unit property
106 105
			new Label(mainParametersArea, SWT.NONE).setText(TXMCoreMessages.common_property);
107 106
			this.unitPropertyComboViewer = new PropertiesComboViewer(mainParametersArea, this, true,
108
					Corpus.getFirstParentCorpus(this.getResult()).getOrderedProperties(),
107
					CQPCorpus.getFirstParentCorpus(this.getResult()).getOrderedProperties(),
109 108
					this.getResult().getUnitProperty(), false);
110 109

  
111 110
			
tmp/org.txm.querycooccurrences.rcp/src/org/txm/links/coocmatrix/toCA.java (revision 1094)
4 4
import org.txm.functions.coocmatrix.QueryCooccurrence;
5 5
import org.txm.lexicaltable.core.functions.LexicalTable;
6 6
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
7
import org.txm.searchengine.cqp.corpus.Corpus;
7
import org.txm.searchengine.cqp.corpus.CQPCorpus;
8 8
import org.txm.searchengine.cqp.corpus.Property;
9 9
import org.txm.statsengine.core.StatException;
10 10

  
......
17 17
	 * @throws CqiClientException 
18 18
	 */
19 19
	public static CA link(QueryCooccurrence coocs) throws StatException, CqiClientException {
20
		Corpus corpus = coocs.getCorpus();
20
		CQPCorpus corpus = coocs.getCorpus();
21 21
		Property analysisProperty = null;
22 22
		try {
23 23
			analysisProperty = coocs.getCorpus().getProperty("word"); //$NON-NLS-1$
tmp/org.txm.querycooccurrences.rcp/src/org/txm/rcp/commands/function/ComputeQueryAutoCooccurrence.java (revision 1094)
64 64
import org.txm.rcp.views.corpora.CorporaView;
65 65
import org.txm.searchengine.cqp.CQPSearchEngine;
66 66
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
67
import org.txm.searchengine.cqp.corpus.Corpus;
67
import org.txm.searchengine.cqp.corpus.CQPCorpus;
68 68
import org.txm.searchengine.cqp.corpus.StructuralUnit;
69 69
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
70 70
import org.txm.stat.utils.ConsoleProgressBar;
......
103 103
						return Status.CANCEL_STATUS;
104 104
					}
105 105
					QueryIndex qi = ((QueryIndex)element);
106
					Corpus corpus = qi.getCorpus();
106
					CQPCorpus corpus = qi.getCorpus();
107 107
					
108 108
					final CoocMatrixDialog dialog = new ComputeQueryAutoCooccurrence.CoocMatrixDialog(shell, corpus);
109 109
					syncExec(new Runnable() {
......
150 150
	}
151 151

  
152 152

  
153
	private QueryAutoCooccurrence computeCooc(Shell shell, Corpus corpus, QueryIndex element, CoocMatrixDialog dialog) {
153
	private QueryAutoCooccurrence computeCooc(Shell shell, CQPCorpus corpus, QueryIndex element, CoocMatrixDialog dialog) {
154 154
		ArrayList<CQLQuery> queries = new ArrayList<CQLQuery>();
155 155
		ArrayList<String> names = new ArrayList<String>();
156 156

  
......
194 194
	}
195 195

  
196 196
	public class CoocMatrixDialog extends Dialog {
197
		Corpus corpus;
197
		CQPCorpus corpus;
198 198

  
199 199
		org.eclipse.swt.widgets.List propsCombo;
200 200
		Spinner distSpinner;
......
209 209

  
210 210
		private Button orientedButton;
211 211

  
212
		public CoocMatrixDialog(Shell parentShell, Corpus corpus) {
212
		public CoocMatrixDialog(Shell parentShell, CQPCorpus corpus) {
213 213
			super(parentShell);
214 214
			this.setShellStyle(this.getShellStyle() | SWT.RESIZE);
215 215
			this.corpus = corpus;
tmp/org.txm.querycooccurrences.rcp/src/org/txm/rcp/commands/function/ComputeQueryCooccurrence.java (revision 1094)
67 67
import org.txm.rcp.views.corpora.CorporaView;
68 68
import org.txm.searchengine.cqp.CQPSearchEngine;
69 69
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
70
import org.txm.searchengine.cqp.corpus.Corpus;
70
import org.txm.searchengine.cqp.corpus.CQPCorpus;
71 71
import org.txm.searchengine.cqp.corpus.StructuralUnit;
72 72
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
73 73
import org.txm.statsengine.r.rcp.views.RVariablesView;
......
100 100
				try {
101 101
					JobsTimer.start();
102 102

  
103
					if (!(element instanceof Corpus)) {
103
					if (!(element instanceof CQPCorpus)) {
104 104
						System.out.println(TXMUIMessages.ComputeCooccurrences_1+ element);
105 105
						return Status.CANCEL_STATUS;
106 106
					}
107
					Corpus corpus = ((Corpus)element);
107
					CQPCorpus corpus = ((CQPCorpus)element);
108 108

  
109 109
					final CoocMatrixDialog dialog = new ComputeQueryCooccurrence.CoocMatrixDialog(shell, corpus);
110 110
					syncExec(new Runnable() {
......
151 151
	}
152 152

  
153 153

  
154
	private QueryCooccurrence computeCooc(Shell shell, Corpus corpus, CoocMatrixDialog dialog) throws IOException {
154
	private QueryCooccurrence computeCooc(Shell shell, CQPCorpus corpus, CoocMatrixDialog dialog) throws IOException {
155 155
		ArrayList<CQLQuery> queries1 = new ArrayList<CQLQuery>();
156 156
		ArrayList<String> names1 = new ArrayList<String>();
157 157
		ArrayList<CQLQuery> queries2 = new ArrayList<CQLQuery>();
......
203 203
	}
204 204

  
205 205
	public class CoocMatrixDialog extends Dialog {
206
		Corpus corpus;
206
		CQPCorpus corpus;
207 207

  
208 208
		org.eclipse.swt.widgets.List propsCombo;
209 209
		Spinner distSpinner;
......
222 222

  
223 223

  
224 224

  
225
		public CoocMatrixDialog(Shell parentShell, Corpus corpus) {
225
		public CoocMatrixDialog(Shell parentShell, CQPCorpus corpus) {
226 226
			super(parentShell);
227 227
			this.setShellStyle(this.getShellStyle() | SWT.RESIZE);
228 228
			this.corpus = corpus;
tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryAutoCooccurrence.java (revision 1094)
15 15
import org.txm.lexicaltable.core.statsengine.r.data.LexicalTableImpl;
16 16
import org.txm.rcp.IImageKeys;
17 17
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
18
import org.txm.searchengine.cqp.corpus.Corpus;
18
import org.txm.searchengine.cqp.corpus.CQPCorpus;
19 19
import org.txm.searchengine.cqp.corpus.Partition;
20 20
import org.txm.searchengine.cqp.corpus.Property;
21 21
import org.txm.searchengine.cqp.corpus.QueryResult;
......
27 27

  
28 28
public class QueryAutoCooccurrence extends TXMResult implements ICAComputable, IAdaptable {
29 29
	
30
	protected Corpus corpus;
30
	protected CQPCorpus corpus;
31 31
	protected int[][] coocs;
32 32
	protected ArrayList<CQLQuery> queries;
33 33
	protected ArrayList<String> names;
......
44 44
	protected int minCooc;
45 45
	protected boolean oriented = false;
46 46

  
47
	public QueryAutoCooccurrence(Corpus corpus) {
47
	public QueryAutoCooccurrence(CQPCorpus corpus) {
48 48
		super(corpus);
49 49
	}
50 50
	
......
109 109
		return corpus.getName()+ " d="+dist+ " min="+minCooc;
110 110
	}
111 111

  
112
	public Corpus getParent() {
112
	public CQPCorpus getParent() {
113 113
		return corpus;
114 114
	}
115 115

  
......
197 197
		return outfile.exists();
198 198
	}
199 199

  
200
	public Corpus getCorpus() {
200
	public CQPCorpus getCorpus() {
201 201
		return corpus;
202 202
	}
203 203

  
......
243 243

  
244 244
	@Override
245 245
	public CA toCA() throws StatException, CqiClientException {
246
		Corpus corpus = this.getCorpus();
246
		CQPCorpus corpus = this.getCorpus();
247 247
		Property analysisProperty = null;
248 248
		try {
249 249
			analysisProperty = this.getCorpus().getProperty("word"); //$NON-NLS-1$
......
264 264
		return null;
265 265
	}
266 266

  
267
	@Override
268
	public boolean delete() {
269
		return corpus.removeResult(this);
270
	}
271

  
272 267
	/** The WordCloud adapter. */
273 268
	private static IWorkbenchAdapter coocMatrixAdapter = new IWorkbenchAdapter() {
274 269

  
tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryCooccurrence.java (revision 1094)
15 15
import org.txm.lexicaltable.core.statsengine.r.data.LexicalTableImpl;
16 16
import org.txm.rcp.IImageKeys;
17 17
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
18
import org.txm.searchengine.cqp.corpus.Corpus;
18
import org.txm.searchengine.cqp.corpus.CQPCorpus;
19 19
import org.txm.searchengine.cqp.corpus.Partition;
20 20
import org.txm.searchengine.cqp.corpus.Property;
21 21
import org.txm.searchengine.cqp.corpus.QueryResult;
......
27 27

  
28 28
public class QueryCooccurrence extends TXMResult implements ICAComputable, IAdaptable {
29 29
	
30
	protected Corpus corpus;
30
	protected CQPCorpus corpus;
31 31
	protected int[][] coocs;
32 32
	protected ArrayList<CQLQuery> queries1;
33 33
	protected ArrayList<String> names1;
......
45 45
	protected int nEdges = 0;
46 46
	protected int minCooc;
47 47
	
48
	public QueryCooccurrence(Corpus corpus, 
48
	public QueryCooccurrence(CQPCorpus corpus, 
49 49
			ArrayList<CQLQuery> queries1, ArrayList<String> names1, 
50 50
			ArrayList<CQLQuery> queries2, ArrayList<String> names2, 
51 51
			int dist, int minCooc, String struct) throws CqiClientException, RWorkspaceException {
......
129 129
		rw.eval("colnames("+symbol+") <- cooclabels");
130 130
	}
131 131

  
132
	public Corpus getCorpus() {
132
	public CQPCorpus getCorpus() {
133 133
		return corpus;
134 134
	}
135 135
	
......
175 175

  
176 176
	@Override
177 177
	public CA toCA() throws StatException, CqiClientException {
178
		Corpus corpus = this.getCorpus();
178
		CQPCorpus corpus = this.getCorpus();
179 179
		Property analysisProperty = null;
180 180
		try {
181 181
			analysisProperty = this.getCorpus().getProperty("word"); //$NON-NLS-1$
......
196 196
		return null;
197 197
	}
198 198

  
199
	@Override
200
	public boolean delete() {
201
		return corpus.removeResult(this);
202
	}
203

  
204 199
	public String[] getExportTXTExtensions() {
205 200
		return new String[]{"*.txt"};
206 201
	}
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/CreteMissingPropertiesFiles.groovy (revision 1094)
1
package org.txm.groovy.core
2

  
3
File workspace = new File("/home/mdecorde/workspace047")
4
def langs = ["fr", "ru"]
5
for (File project : workspace.listFiles()) {
6
	if (!project.isDirectory()) continue;
7
	
8
	File osgiinf = new File(project, "OSGI-INF/l10n")
9
	if (!osgiinf.exists()) continue;
10
	
11
	println project.getName()
12
	File defaultFile = new File(osgiinf, "bundle.properties")
13
	
14
	for (def lang : langs) {
15
		File langFile = new File(osgiinf, "bundle_"+lang+".properties");
16
		if (!langFile.exists()) {
17
			langFile.createNewFile()
18
		}
19
	}
20
}
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/InstallGroovyFiles.java (revision 1094)
2 2

  
3 3
import java.io.File;
4 4
import java.io.IOException;
5
import java.util.HashMap;
6 5

  
7 6
import org.txm.PostTXMHOMEInstallationStep;
7
import org.txm.Toolbox;
8 8
import org.txm.objects.Workspace;
9 9
import org.txm.utils.BundleUtils;
10
import org.txm.utils.DeleteDir;
11 10
import org.txm.utils.io.FileCopy;
12 11

  
12
/**
13
 * Copy all Groovy scripts in TXMHome directory
14
 * 
15
 * @author mdecorde
16
 *
17
 */
13 18
public class InstallGroovyFiles extends PostTXMHOMEInstallationStep {
14 19

  
15 20
	@Override
16 21
	public boolean install(Workspace workspace) {
17
		File txmhomedir = workspace.getLocation();
22
		File txmhomedir = new File(Toolbox.getTxmHomePath());
18 23
		
19 24
		String createfolders[] = {"scripts/groovy/lib", "scripts/groovy/user", "scripts/groovy/system"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
20 25
		
......
76 81
			e.printStackTrace();
77 82
		}
78 83
		
84

  
85
		
79 86
		return scriptsDirectory.exists();
80 87
	}
81 88

  
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/CreateMissingPropertiesFiles.groovy (revision 1094)
1
package org.txm.groovy.core
2

  
3
File workspace = new File("/home/mdecorde/workspace047")
4
def langs = ["fr", "ru"]
5
for (File project : workspace.listFiles()) {
6
	if (!project.isDirectory()) continue;
7
	
8
	File osgiinf = new File(project, "OSGI-INF/l10n")
9
	if (!osgiinf.exists()) continue;
10
	
11
	println project.getName()
12
	File defaultFile = new File(osgiinf, "bundle.properties")
13
	
14
	for (def lang : langs) {
15
		File langFile = new File(osgiinf, "bundle_"+lang+".properties");
16
		if (!langFile.exists()) {
17
			langFile.createNewFile()
18
		}
19
	}
20
}
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyProgressMonitor.java (revision 1094)
1
package org.txm.groovy.core;
2

  
3
import org.eclipse.core.runtime.IProgressMonitor;
4

  
5
/**
6
 * IProgressMonitor wrapper 
7
 * 
8
 * adds some methods for Groovy scripts
9
 * 
10
 * @author mdecorde
11
 *
12
 */
13
public class GroovyProgressMonitor implements IProgressMonitor{
14
	
15
	private IProgressMonitor monitor;
16

  
17
	public GroovyProgressMonitor(IProgressMonitor monitor) {
18
		this.monitor = monitor;
19
	}
20

  
21
	@Override
22
	public void beginTask(String name, int totalWork) {
23
		if (monitor == null) return;
24

  
25
		monitor.beginTask(name, totalWork);
26
	}
27

  
28
	@Override
29
	public void done() {
30
		if (monitor == null) return;
31
		monitor.done();
32
	}
33

  
34
	@Override
35
	public void internalWorked(double work) {
36
		if (monitor == null) return;
37
		monitor.internalWorked(work);
38
	}
39

  
40
	@Override
41
	public boolean isCanceled() {
42
		if (monitor == null) return false;
43
		
44
		return monitor.isCanceled();
45
	}
46

  
47
	@Override
48
	public void setCanceled(boolean value) {
49
		if (monitor == null) return;
50
		
51
		monitor.setCanceled(value);
52
	}
53

  
54
	@Override
55
	public void setTaskName(String name) {
56
		if (monitor == null) return;
57
		
58
		monitor.setTaskName(name);
59
	}
60

  
61
	@Override
62
	public void subTask(String name) {
63
		// TODO Auto-generated method stub
64
		
65
	}
66

  
67
	@Override
68
	public void worked(int work) {
69
		if (monitor == null) return;
70
		monitor.worked(work);
71
	}
72
	
73
	public void worked(int work, String message) {
74
		if (monitor == null) return;
75
		monitor.worked(work);
76
		monitor.setTaskName(message);
77
	}
78
}
0 79

  
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java (revision 1094)
1
package org.txm.groovy.core;
2

  
3
import java.io.File;
4
import java.util.logging.Level;
5

  
6
import org.eclipse.core.runtime.IProgressMonitor;
7
import org.eclipse.core.runtime.IStatus;
8
import org.eclipse.core.runtime.Status;
9
import org.txm.Toolbox;
10
import org.txm.annotation.core.AnnotationEngine;
11
import org.txm.core.engines.Engine;
12
import org.txm.core.engines.EngineType;
13
import org.txm.core.engines.ScriptedImportEngine;
14
import org.txm.objects.Project;
15
import org.txm.searchengine.cqp.CQPSearchEngine;
16
import org.txm.tokenizer.TokenizerClasses;
17
import org.txm.utils.ExecTimer;
18
import org.txm.utils.logger.Log;
19

  
20
import groovy.lang.Binding;
21

  
22
public class GroovyScriptedImportEngine extends ScriptedImportEngine {
23

  
24
	File importer, compiler, pager, annotate;
25
	
26
	public GroovyScriptedImportEngine(File directory) {
27
		super(directory.getName(), new File(directory, directory.getName()+"Loader.groovy"));
28
		importer = new File(directory, "importer.groovy");
29
		compiler = new File(directory, "compiler.groovy");
30
		pager = new File(directory, "pager.groovy");
31
		annotate = new File(directory, "annotate.groovy");
32
	}
33
	
34
	@Override
35
	public IStatus _build(Project project, IProgressMonitor monitor) {
36
		
37
		try {
38
			// check if TreeTagger if ready
39
			boolean annotate = project.getAnnotate();
40
			if (annotate) {
41
				Engine e = Toolbox.getEngineManager(EngineType.ANNOTATION).getEngine("TreeTagger");
42
				if (e == null) {
43
					System.out.println("Error: no TreeTagger annotation engine found to annotate the corpus. Aborting");
44
					return null;
45
				}
46
				AnnotationEngine engine = (AnnotationEngine) e;
47
				if (!engine.isRunning()) {
48
					System.out.println("Error: TreeTagger annotation engine is not ready please check TXM > Advance > TAL > TreeTagger preferences. Aborting");
49
					return null;
50
				}
51
			}
52

  
53
			// the binary directory which is going to be created
54

  
55
			final File basedir = project.getProjectDirectory();
56
//			final File tempBinDirectory = new File(basedir.getAbsolutePath()+"_temp"); //$NON-NLS-1$
57
//			final File errorBinDirectory = new File(basedir.getAbsolutePath()+"_error"); //$NON-NLS-1$
58
//			if (tempBinDirectory.exists()) DeleteDir.deleteDirectory(tempBinDirectory);
59
//			if (errorBinDirectory.exists()) DeleteDir.deleteDirectory(errorBinDirectory);
60

  
61
			//this.setCurrentMonitor(monitor);
62
			monitor.beginTask("Importing sources" + project.getSrcdir(), 100); //$NON-NLS-1$
63

  
64
			//org.txm.Toolbox.shutdownSearchEngine();
65
			monitor.worked(5);
66

  
67
			GSERunner gse = GSERunner.buildDefaultGSE(mainScript);
68

  
69
			Binding binding = new Binding();
70
			binding.setProperty("projectBinding", project); //$NON-NLS-1$
71
			binding.setProperty("monitor", new GroovyProgressMonitor(monitor)); //$NON-NLS-1$
72

  
73
			boolean logLevel = Log.getLevel().intValue() < Level.WARNING.intValue();			
74
			binding.setProperty("debug", logLevel); //$NON-NLS-1$
75
			binding.setProperty("readyToLoad", Boolean.FALSE); //$NON-NLS-1$
76
			//System.out.println("script="+script);
77

  
78
			TokenizerClasses.reset();
79
			if (!TokenizerClasses.loadFromProject(project.getPreferences())) {
80
				System.out.println("Error: failed to load tokenizer parameters");
81
				monitor.done();
82
//				if (basedir.exists()) basedir.renameTo(errorBinDirectory);
83
//				if (tempBinDirectory.exists()) tempBinDirectory.renameTo(basedir);
84
				return Status.CANCEL_STATUS;
85
			}
86

  
87
			ExecTimer.start();
88
			Log.info("Start of Groovy import script" + mainScript.getAbsolutePath()); //$NON-NLS-1$
89
			gse.run(mainScript.getAbsolutePath(), binding); // run the groovy import script
90
			System.out.println("\nEnd of Groovy import script: "+ExecTimer.stop()); //$NON-NLS-1$
91
			monitor.worked(90);
92

  
93
			TokenizerClasses.reset();
94

  
95
			Object ready = binding.getVariable("readyToLoad"); //$NON-NLS-1$
96
			if (ready != null && ready instanceof Boolean) {
97
				Boolean readyToLoad = (Boolean)ready;
98
				//System.out.println("TRY TO LOAD THE BINARY CORPUS CREATED: "+basedir);
99
				if (readyToLoad) {
100
//					base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(basedir);
101
//					if (base == null) {
102
//						System.out.println(TXMUIMessages.ExecuteScriptImport_8);
103
//						if (basedir.exists()) basedir.renameTo(errorBinDirectory);
104
//						if (tempBinDirectory.exists()) tempBinDirectory.renameTo(basedir);
105
//						return Status.CANCEL_STATUS;
106
//					}
107
//					this.acquireSemaphore();
108
//					Log.info("Save workspace"); //$NON-NLS-1$
109
//					Toolbox.workspace.save();
110

  
111
					Log.info("Restart Toolbox search engine"); //$NON-NLS-1$
112
					//Toolbox.restartWorkspace(null);
113
					Toolbox.getEngineManager(EngineType.SEARCH).restartEngines();
114

  
115
//					DeleteDir.deleteDirectory(tempBinDirectory);
116

  
117
					//							IWorkspace workspace = ResourcesPlugin.getWorkspace();
118
					//							IProject newProject = workspace.getRoot().getProject(base.getName());
119
					//							newProject.create(monitor);
120
					//							newProject.open(monitor);
121
					//							IFolder srcFolder = newProject.getFolder("src");
122
					//							IPath path = new Path(params.rootDir);
123
					//							srcFolder.createLink(path, IResource.ALLOW_MISSING_LOCAL, monitor);
124
				} else {
125
					System.out.println("Error: import not correctly ended. See console messages.");
126
//					if (basedir.exists()) basedir.renameTo(errorBinDirectory);
127
//					if (tempBinDirectory.exists()) tempBinDirectory.renameTo(basedir);
128
					return new Status(Status.ERROR, "org.txm.groovy.core", "Import not correclty ended. See console messages.");
129
				}
130
			}
131
		} catch (ThreadDeath td) {
132
			return Status.CANCEL_STATUS;
133
		} catch (Exception e) {
134
			//System.out.println(NLS.bind(TXMUIMessages.RunGroovyScript_8, e));
135
			Log.printStackTrace(e);
136
			return new Status(Status.ERROR, "org.txm.groovy.core", e.getMessage());
137
		} finally {
138
			if (!CQPSearchEngine.isInitialized()) { // the import failed
139
				monitor.setTaskName("Restarting Toolbox search engine"); //$NON-NLS-1$
140
				Toolbox.restartWorkspace(monitor);
141
				Toolbox.getEngineManager(EngineType.SEARCH).restartEngines();
142
			}
143
		}
144
		System.gc();
145
		return Status.OK_STATUS;
146
	}
147
}
0 148

  
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/TXMClassLoader.java (revision 1094)
1
package org.txm.groovy.core;
2

  
3
import java.util.HashSet;
4

  
5
public class TXMClassLoader extends ClassLoader {
6
	private HashSet<ClassLoader> loaders;
7

  
8
	public TXMClassLoader(HashSet<ClassLoader> loaders2) {
9
		this.loaders  = loaders2;
10
	}
11
	
12
    public Class findClass(String name) throws ClassNotFoundException {
13
    	
14
    	try { // try with the common one
15
    		return this.getClass().getClassLoader().loadClass(name);
16
    	} catch(Exception e) {}
17
    	
18
        for (ClassLoader cl : loaders) {
19
        	try {
20
        		return cl.loadClass(name);
21
        	} catch(Exception e) {}
22
        }
23
        throw new ClassNotFoundException(name);
24
    }
25
}
0 26

  
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyImportEngine.java (revision 1094)
1
package org.txm.groovy.core;
2

  
3
import java.io.File;
4

  
5
import org.eclipse.core.runtime.IProgressMonitor;
6
import org.eclipse.core.runtime.IStatus;
7
import org.eclipse.core.runtime.Status;
8
import org.txm.Toolbox;
9
import org.txm.core.engines.ImportEngine;
10
import org.txm.core.engines.ImportEngines;
11
import org.txm.core.engines.ScriptedImportEngine;
12
import org.txm.objects.Project;
13

  
14
public class GroovyImportEngine extends ImportEngine {
15

  
16
	@Override
17
	public boolean isRunning() {
18
		return false;
19
	}
20

  
21
	@Override
22
	public boolean initialize() throws Exception {
23
		
24
		ImportEngines engines = Toolbox.getImportEngines();
25
		File importsPackageDirectory = new File(Toolbox.getTxmHomePath(), "scripts/groovy/user/org/txm/scripts/importer");
26
		
27
		if (!importsPackageDirectory.exists()) {
28
			return false;
29
		}
30
		for (File dir : importsPackageDirectory.listFiles()) {
31
			if (!dir.isDirectory()) continue;
32
			if (dir.isHidden()) continue;
33
			
34
			String name = dir.getName();
35
			File loader = new File(dir, name+"Loader.groovy");
36
			if (loader.exists()) {
37
				ScriptedImportEngine sengine = new GroovyScriptedImportEngine(dir);
38
				if (engines.getEngine(name) == null) {
39
					engines.put(name, sengine);
40
				} else {
41
					System.out.println("Scripted import module in "+dir+" not registered since one with the same name is registered.");
42
				}
43
			}
44
		}
45
		return true;
46
	}
47

  
48
	@Override
49
	public boolean start(IProgressMonitor monitor) throws Exception {
50
		// TODO Auto-generated method stub
51
		return true;
52
	}
53

  
54
	@Override
55
	public boolean stop() throws Exception {
56
		// TODO Auto-generated method stub
57
		return true;
58
	}
59

  
60
	@Override
61
	public String getName() {
62
		return "groovy scripted imports installers - not meant to be used";
63
	}
64

  
65
	@Override
66
	public IStatus build(Project project, IProgressMonitor monitor) {
67
		return Status.CANCEL_STATUS;
68
	}
69
}
0 70

  
tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GSERunner.java (revision 1094)
1
package org.txm.groovy.core;
2

  
3
import java.io.File;
4
import java.io.FilenameFilter;
5
import java.io.IOException;
6
import java.net.MalformedURLException;
7
import java.net.URL;
8
import java.util.Comparator;
9
import java.util.HashMap;
10
import java.util.HashSet;
11
import java.util.Map;
12

  
13
import org.codehaus.groovy.control.CompilerConfiguration;
14
import org.codehaus.groovy.control.customizers.ImportCustomizer;
15
import org.eclipse.core.internal.runtime.InternalPlatform;
16
import org.osgi.framework.Bundle;
17
import org.osgi.framework.BundleContext;
18
import org.osgi.framework.wiring.BundleWiring;
19
import org.txm.Toolbox;
20
import org.txm.utils.logger.Log;
21

  
22
import cern.colt.Arrays;
23
import groovy.lang.Binding;
24
import groovy.util.GroovyScriptEngine;
25
import groovy.util.ResourceException;
26
import groovy.util.ScriptException;
27

  
28
/**
29
 * GroovyScriptEngine wrapper for TXM scripts and macros
30
 * 
31
 * @author mdecorde
32
 *
33
 */
34
public class GSERunner extends GroovyScriptEngine {
35

  
36
	protected GSERunner(String[] urls) throws IOException {
37
		super(urls, getTXMClassLoader());
38
	}
39

  
40
	protected static GSERunner defaultGSE;
41
	protected static String defaultScriptRootDir = "";
42
	
43
	public static void clearDefaultGSE() {
44
		defaultGSE = null;
45
		defaultScriptRootDir = "";
46
	}
47
	
48
	/**
49
	 * Build a GSERunner with default paths : user, macro, import and library path
50
	 * 
51
	 * @param scriptRootDir if null uses Toolbox home directory
52
	 * @param script
53
	 * @return
54
	 */
55
	public static GSERunner buildDefaultGSE(File script) {
56
		String scriptRootDir = new File(Toolbox.getTxmHomePath(), "scripts/groovy/").getAbsolutePath();
57
		// check if script root dir was changed
58
		if (defaultScriptRootDir.equals(scriptRootDir) && defaultGSE != null) {
59
			try {
60
				defaultGSE.getGroovyClassLoader().addURL(new URL("file://"+script.getParent()));
61
			} catch (MalformedURLException e) {
62
				// TODO Auto-generated catch block
63
				e.printStackTrace();
64
			}
65
			return defaultGSE;
66
		}
67
		
68
		if (scriptRootDir == null) {
69
			scriptRootDir = new File(Toolbox.getTxmHomePath(), "scripts/groovy/").getAbsolutePath();
70
		}
71
		String[] roots = new String[] { 
72
				scriptRootDir+"/user/", //$NON-NLS-1$
73
				scriptRootDir+"/system/", //$NON-NLS-1$
74
		}; 
75

  
76
		try {
77
			defaultScriptRootDir = scriptRootDir;
78
			Log.info("GSE roots: "+Arrays.toString(roots));
79
			defaultGSE = new GSERunner(roots);
80
		} catch (IOException e) {
81
			e.printStackTrace();
82
			return null;
83
		}
84

  
85
		ImportCustomizer imports = new ImportCustomizer();
86
		imports.addStarImports("org.txm.rcp.utils", 
87
				"org.txm.utils", 
88
				"org.txm", 
89
				"org.kohsuke.args4j", 
90
				"org.txm.rcp.swt.widget.parameters");
91
		imports.addImports("groovy.transform.Field");
92
		CompilerConfiguration configuration = new CompilerConfiguration();
93
		configuration.addCompilationCustomizers(imports);
94
		
95
		defaultGSE.setConfig(configuration);
96
		
97
		File jardir = new File(scriptRootDir,"lib"); //$NON-NLS-1$
98
		if (jardir.exists() && jardir.isDirectory()) {
99
			for (File f: jardir.listFiles(new FilenameFilter() {
100
				@Override
101
				public boolean accept(File dir, String name) {
102
					return name.endsWith(".jar"); //$NON-NLS-1$
103
				}
104
			}))
105
			{
106
				try {
107
					defaultGSE.getGroovyClassLoader().addURL(f.toURI().toURL());
108
				} catch (MalformedURLException e) {
109
					// TODO Auto-generated catch block
110
					e.printStackTrace();
111
				}
112
			}
113
		}	
114
		defaultGSE.getGroovyClassLoader().addClasspath(scriptRootDir); // for the .class files if any
115
		
116
		return defaultGSE;
117
	}
118
	
119
	/**
120
	 * 
121
	 * @return a class loader containing all bundles activated in TXM
122
	 */
123
	protected static ClassLoader getTXMClassLoader() {
124
		HashSet<ClassLoader> loaders = new HashSet<ClassLoader>();
125
		BundleContext bundleContext = InternalPlatform.getDefault().getBundleContext();
126
		Bundle[] bundles = bundleContext.getBundles();
127
//		java.util.Arrays.sort(bundles, new Comparator<Bundle>() {
128
//
129
//			@Override
130
//			public int compare(Bundle o1, Bundle o2) {
131
//				if (o1.getSymbolicName().startsWith("org.txm")) return 1;
132
//				return -1;
133
//			}
134
//		});
135
		for (Bundle b : bundles) {
136
			if (b == null) continue;
137
			
138
			if (!b.getSymbolicName().startsWith("org.txm")) continue;
139
			
140
			BundleWiring bundleWiring = b.adapt(BundleWiring.class);
141
			if (bundleWiring == null) {
142
				//System.out.println("GSERunner.createGSERunner(): NO wiring: " + b.getSymbolicName());
143
			} else if (bundleWiring.getClassLoader() != null) {
144
				loaders.add(bundleWiring.getClassLoader());
145

  
146
				//FIXME: debug
147
				//System.out.println("GSERunner.createGSERunner(): ADD class loader: " + b.getSymbolicName());
148
			} else {
149
				//System.out.println("GSERunner.createGSERunner(): NO  class loader: " + b.getSymbolicName());
150
			}
151
		}
152

  
153
		Log.info("Initializing TXMClassLoader with " + loaders.size() + " bundles.");
154
		return new TXMClassLoader(loaders);
155
	}
156

  
157
	/**
158
	 * 
159
	 * Simplify the call a Groovy script within a Groovy script and allow to send named and typed arguments
160
	 * 
161
	 * @param clazz
162
	 * @param args
163
	 * @return
164
	 * @throws ResourceException
165
	 * @throws ScriptException
166
	 */
167
	@SuppressWarnings("rawtypes")
168
	public Object run(Class clazz, Map args) throws ResourceException, ScriptException {
169
		return run(clazz.getCanonicalName().replace(".", "/")+".groovy", new Binding(args));
170
	}
171

  
172
	/**
173
	 * Convenience method exactly the same as calling
174
	 * run(clazz, ["args":args])
175
	 * 
176
	 * @param clazz
177
	 * @param args
178
	 * @return
179
	 * @throws ResourceException
180
	 * @throws ScriptException
181
	 */
182
	@SuppressWarnings("rawtypes")
183
	public Object runMacro(Class clazz, Map args) throws ResourceException, ScriptException {
184
		HashMap<String, Object> arrangedMap = new HashMap<String, Object>();
185
		arrangedMap.put("args", args);
186
		return run(clazz.getCanonicalName().replace(".", "/")+".groovy", new Binding(arrangedMap));
187
	}
188

  
189
	/**
190
	 * Convenience method exactly the same as calling
191
	 * run(clazz, ["args":[:]])
192
	 * 
193
	 * @param clazz
194
	 * @param args
195
	 * @return
196
	 * @throws ResourceException
197
	 * @throws ScriptException
198
	 */
199
	@SuppressWarnings("rawtypes")
200
	public Object runMacro(Class clazz) throws ResourceException, ScriptException {
201
		HashMap<String, Object> arrangedMap = new HashMap<String, Object>();
202
		arrangedMap.put("args", new HashMap<String, Object>());
203
		return run(clazz.getCanonicalName().replace(".", "/")+".groovy", new Binding(arrangedMap));
204
	}
205
}
0 206

  
tmp/org.txm.groovy.core/src/groovy/org/txm/scripts/importer/txt/txtLoader.groovy (revision 1094)
33 33
import org.txm.objects.*;
34 34
import org.txm.importer.scripts.xmltxm.*;
35 35
import org.txm.*;
36
import org.txm.objects.*;
36 37
import org.txm.core.engines.*;
37 38
import org.txm.utils.i18n.*;
38 39
import org.txm.metadatas.*;
......
44 45
String userDir = System.getProperty("user.home");
45 46
boolean debug = org.txm.utils.logger.Log.isPrintingErrors();
46 47
def MONITOR;
47
BaseParameters params;
48
try {params = paramsBinding;MONITOR=monitor} catch (Exception)
49
{	println "DEV MODE";//exception means we debug
50
	debug = true
51
	params = new BaseParameters(new File(userDir, "TXM/clipboard/clipboard2/import.xml"))
52
	params.load()
53
	if (!org.txm.Toolbox.isInitialized()) {
54
		Toolbox.setParam(Toolbox.INSTALL_DIR,new File("C:/Program Files/TXM"));
55
		Toolbox.setParam(Toolbox.TREETAGGER_MODELS_PATH, new File("C:/Users/mdecorde/TXM/treetagger"));
56
		Toolbox.setParam(Toolbox.METADATA_ENCODING, "UTF-8");
57
		Toolbox.setParam(Toolbox.METADATA_COLSEPARATOR, ",");
58
		Toolbox.setParam(Toolbox.METADATA_TXTSEPARATOR, "\"");
59
		Toolbox.setParam(Toolbox.USER_TXM_HOME, new File(userDir, "TXM"));
60
	}
61
}
62
if (params == null) { println "No parameters file. Aborting"; return;}
48
Project project;
49
boolean debug = org.txm.utils.logger.Log.isPrintingErrors();
63 50

  
64
String corpusname = params.getCorpusName();
65
Element corpusElem = params.corpora.get(corpusname);
66
String basename = params.name;
67
String rootDir = params.rootDir;
68
String lang = corpusElem.getAttribute("lang");
51
try {project=projectBinding;MONITOR=monitor} catch (Exception)
52
{	}
53
if (project == null) { println "no project set. Aborting"; return; }
54

  
55
String corpusname = project.getName();
56
String basename = corpusname
57
String rootDir = project.getSrcdir();
58
String lang = project.getLang()
69 59
String model = lang
70
String encoding = corpusElem.getAttribute("encoding");
71
boolean annotate = "true" == corpusElem.getAttribute("annotate");
72
String xsl = params.getXsltElement(corpusElem).getAttribute("xsl")
73
def xslParams = params.getXsltParams(corpusElem);
74
int wordsPerPage = params.getWordsPerPage("default")
75
boolean build_edition = params.getDoEdition("default")
60
String encoding = project.getEncoding()
61
boolean annotate = project.getAnnotate()
62
String xsl = project.getFrontXSL();
63
def xslParams = project.getXsltParameters();
64
int wordsPerPage = project.getEditionDefinition("default").getWordsPerPage()
65
boolean build_edition = project.getEditionDefinition("default").getBuildEdition()
76 66

  
77 67
File srcDir = new File(rootDir);
78
File binDir = new File(Toolbox.getTxmHomePath(), "corpora/"+basename);
79
binDir.deleteDir();
68
File binDir = project.getProjectDirectory();
80 69
binDir.mkdirs();
81 70
if (!binDir.exists()) {
82 71
	println "Could not create binDir "+binDir
......
186 175
		List<String> NoSpaceBefore = LangFormater.getNoSpaceBefore(lang);
187 176
		List<String> NoSpaceAfter = LangFormater.getNoSpaceAfter(lang);
188 177

  
189
		Element text = params.addText(params.corpora.get(corpusname), txtname, srcfile);
190

  
178
		Text t = new Text(project);
179
		t.setName(txtname);
180
		t.setSourceFile(srcfile)
181
		t.setTXMFile(srcfile)
182
		
191 183
		def ed = new pager(srcfile, outdir, txtname, NoSpaceBefore, NoSpaceAfter, wordsPerPage, basename, null);
192
		Element edition = params.addEdition(text, "default", outdir.getAbsolutePath(), "html");
193

  
184
		Edition edition = new Edition(t);
185
		edition.setName("default");
186
		edition.setIndex(outdir.getAbsolutePath());
194 187
		for (i = 0 ; i < ed.getPageFiles().size();) {
195 188
			File f = ed.getPageFiles().get(i);
196 189
			String wordid = ed.getIdx().get(i);
197
			params.addPage(edition, ""+(++i), wordid);
190
			edition.addPage(""+(++i), wordid);
198 191
		}
199 192
	}
200 193
}
201 194
if (MONITOR != null && MONITOR.isCanceled()) { return MONITOR.done(); }
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.

Formats disponibles : Unified diff