Révision 3659

TXM/trunk/bundles/org.txm.searchengine.core/.project (revision 3659)
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>org.txm.searchengine.core</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.jdt.core.javabuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
		<buildCommand>
14
			<name>org.eclipse.pde.ManifestBuilder</name>
15
			<arguments>
16
			</arguments>
17
		</buildCommand>
18
		<buildCommand>
19
			<name>org.eclipse.pde.SchemaBuilder</name>
20
			<arguments>
21
			</arguments>
22
		</buildCommand>
23
	</buildSpec>
24
	<natures>
25
		<nature>org.eclipse.pde.PluginNature</nature>
26
		<nature>org.eclipse.jdt.core.javanature</nature>
27
	</natures>
28
</projectDescription>
0 29

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/SearchEngineProperty.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
/**
4
 * A SearchEngine queryable property for match positions
5
 * 
6
 * @author mdecorde
7
 *
8
 */
9
public interface SearchEngineProperty {
10
	
11
	/**
12
	 * 
13
	 * @return the property uniq name in the queried corpus
14
	 */
15
	public String getName();
16
	
17
	/**
18
	 * 
19
	 * @return the property uniq name in the queried corpus
20
	 */
21
	public String getFullName();
22

  
23
}
0 24

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/EmptySelection.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
6
import org.txm.objects.Match;
7

  
8
public class EmptySelection extends Selection {
9
	
10
	private static final List<? extends Match> EMPTY = new ArrayList<Match>();
11
	protected IQuery query;
12
	
13
	public EmptySelection(IQuery query) {
14
		this.query = query;
15
	}
16

  
17
	public List<? extends Match> getMatches() {
18
		return EMPTY;
19
	}
20
	
21
	public List<? extends Match> getMatches(int from, int to) {
22
		return EMPTY;
23
	}
24
	
25
	public int getNMatch() {
26
		return 0;
27
	}
28
	
29
	public IQuery getQuery() {
30
		return query;
31
	}
32

  
33
	@Override
34
	public boolean isTargetUsed() {
35
		return false;
36
	}
37

  
38
	@Override
39
	public void drop() throws Exception {
40
	}
41

  
42
	@Override
43
	public boolean delete(int iMatch) {
44
		// nothing to do
45
		return false;
46
	}
47

  
48
	@Override
49
	public boolean delete(Match match) {
50
		// nothing to do
51
		return false;
52
	}
53

  
54
	@Override
55
	public boolean delete(ArrayList<Match> matchesToRemove) {
56
		return false;
57
	}
58
}
0 59

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/ISearchEngine.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import org.txm.core.engines.Engine;
4
import org.txm.objects.CorpusBuild;
5

  
6
public interface ISearchEngine extends Engine {
7
	
8
	public Selection query(CorpusBuild corpus, IQuery query, String name, boolean saveQuery) throws Exception;
9
	
10
	/**
11
	 * 
12
	 * @return an empty Query for the engine implementation
13
	 */
14
	public IQuery newQuery();
15

  
16
	/**
17
	 * 
18
	 * @param corpus
19
	 * @return true if the Engine can query the corpus
20
	 */
21
	public abstract boolean hasIndexes(CorpusBuild corpus);
22
	
23
	public String getDetails();
24
}
0 25

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/Property.java (revision 3659)
1
// Copyright © 2010-2020 ENS de Lyon., University of Franche-Comté
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: 2013-05-06 17:38:43 +0200 (lun., 06 mai 2013) $
25
// $LastChangedRevision: 2386 $
26
// $LastChangedBy: mdecorde $ 
27
//
28
package org.txm.searchengine.core;
29

  
30
// TODO: Auto-generated Javadoc
31
/**
32
 * The Class Property.
33
 */
34
public abstract class Property {
35
	
36
	protected String name;
37
	
38
	public Property(String name) {
39
		this.name = name;
40
	}
41
		
42
	/* (non-Javadoc)
43
	 * @see java.lang.Object#toString()
44
	 */
45
	@Override
46
	public String toString() {
47
		return name;
48
	}
49
	
50
	public String getName() {
51
		return name;
52
	}
53
	
54
	public abstract SearchEngine getSearchEngine();
55

  
56
	public abstract int[] cpos2Id(int[] positions) throws Exception;
57
	
58
	public abstract String[] id2Str(int[] positions) throws Exception;
59
}
0 60

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/Query.java (revision 3659)
1
// Copyright © 2010-2020 ENS de Lyon., University of Franche-Comté
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-05-13 09:46:56 +0200 (Wed, 13 May 2015) $
25
// $LastChangedRevision: 2967 $
26
// $LastChangedBy: mdecorde $ 
27
//
28
package org.txm.searchengine.core;
29

  
30
import java.util.ArrayList;
31
import java.util.List;
32

  
33
import org.txm.core.preferences.TXMPreferences;
34
import org.txm.utils.logger.Log;
35

  
36
/**
37
 * Implements a SearchEngine generic query with a query and a search engine.
38
 * 
39
 * TODO stop using CQLQuery and TIGERQuery with this class
40
 */
41

  
42
public class Query implements IQuery {
43
	
44
	public Query() {
45
		
46
	}
47
	
48
	/**
49
	 * Converts the specified list of Query to a string.
50
	 * Queries strings are separated by a tabulation.
51
	 * 
52
	 * @param queries
53
	 * @return
54
	 */
55
	public static String queriesToString(List<Query> queries) {
56
		if (queries == null) return "";
57
		StringBuilder str = new StringBuilder();
58
		for (int i = 0; i < queries.size(); i++) {
59
			if (i > 0) {
60
				str.append(TXMPreferences.LIST_SEPARATOR);
61
			}
62
			Query q = queries.get(i);
63
			str.append(q.getQueryString());
64
			str.append(TXMPreferences.LIST_SEPARATOR + q.getSearchEngine().getName());
65
		}
66
		return str.toString();
67
	}
68
	
69
	public boolean canBeMultiLine() {
70
		return false;
71
	}
72
			
73
	/**
74
	 * Converts the specified string to a list of Query.
75
	 * Input string must contains queries separated by a tabulation.
76
	 * 
77
	 * A query is composed of a engine name + tabulation + query
78
	 * 
79
	 * if the String list is odd, the 
80
	 * 
81
	 * @param str
82
	 * @return
83
	 */
84
	public static List<Query> stringToQueries(String str) {
85
		
86
		ArrayList<Query> queries = new ArrayList<>();
87
		if (str == null || str.length() == 0) {
88
			return queries;
89
		}
90
		String[] split = str.split(TXMPreferences.LIST_SEPARATOR);
91
			
92
			for (int i = 0; i + 1 < split.length; i = i + 2) {
93
				String s = split[i];
94
				String eName = split[i+1];
95
				SearchEngine e = SearchEnginesManager.getSearchEngine(eName);
96
				if (e == null) {
97
					Log.warning("Error: unknown search engine: "+eName);
98
					continue;
99
				}
100
				
101
				Query q = e.newQuery();
102
				q.setQuery(s);
103
				queries.add(q);
104
			}
105
		return queries;
106
	}
107
	
108
	/**
109
	 * Converts the specified string to a Query.
110
	 * Input string must contains queries separated by a tabulation.
111
	 * 
112
	 * @param str
113
	 * @return
114
	 */
115
	public static Query stringToQuery(String str) {
116
		
117
		String[] split = str.split(TXMPreferences.LIST_SEPARATOR, 2);
118
		String eName = "CQP";
119
		if (split[1] != null) {
120
			eName = split[1];
121
		}
122
		
123
		SearchEngine e = SearchEnginesManager.getSearchEngine(eName);
124
		return new Query(split[0], e);
125
	}
126
	
127
	
128
	/**
129
	 * The query string.
130
	 */
131
	protected SearchEngine engine = null;
132
	
133
	/**
134
	 * The query string.
135
	 */
136
	protected String queryString = "";
137
	
138
	/**
139
	 * The query friendly name.
140
	 */
141
	protected String friendlyName = "";
142
	
143
	/**
144
	 * Instantiates a new query.
145
	 * 
146
	 * @param queryString
147
	 *            the query string
148
	 * 
149
	 *            public Query(String queryString){
150
	 *            this.queryString=queryString.trim(); }
151
	 */
152
	public Query(String queryString, SearchEngine engine) {
153
		if (queryString != null) {
154
			this.queryString = queryString.trim();
155
		}
156
		else {
157
			this.queryString = "";
158
		}
159
		
160
		this.engine = engine;
161
	}
162
	
163
	@Override
164
	public Query setName(String name) {
165
		this.friendlyName = name;
166
		return this;
167
	}
168
	
169
	@Override
170
	public String getName() {
171
		if (friendlyName == null || friendlyName.length() == 0) return queryString;
172
		
173
		return friendlyName;
174
	}
175
	
176
	@Override
177
	public boolean equals(IQuery q) {
178
		return this.engine.equals(q.getSearchEngine()) && this.getQueryString().equals(q.getQueryString());
179
	}
180
	
181
	@Override
182
	public boolean equals(Object obj) {
183
		
184
		if (obj == null) return false;
185
		
186
		if (!(obj instanceof Query)) {
187
			return false;
188
		}
189
		if (this.queryString == null) return false;
190
		if (this.engine == null) return false;
191
		
192
		return this.queryString.equals(((Query) obj).queryString) && this.engine.equals(((Query) obj).engine);
193
	}
194
	
195
	@Override
196
	public IQuery fixQuery(String lang) {
197
		return new Query(queryString, this.engine);
198
	}
199
	
200
	
201
	/**
202
	 * Gets the query string.
203
	 * 
204
	 * @return the query string
205
	 */
206
	@Override
207
	public final String getQueryString() {
208
		return queryString;
209
	}
210
	
211
	@Override
212
	public SearchEngine getSearchEngine() {
213
		return engine;
214
	}
215
	
216
	/**
217
	 * Checks whatever the query is empty (null, empty or contains only double quotes) or not.
218
	 * 
219
	 * @return true if empty otherwise false
220
	 */
221
	@Override
222
	public boolean isEmpty() {
223
		return queryString == null || queryString.length() == 0 || "\"\"".equals(queryString);
224
	}
225
	
226
	@Override
227
	public IQuery setQuery(String rawQuery) {
228
		queryString = rawQuery;
229
		return this;
230
	}
231
	
232
	/**
233
	 * Creates a readable formated string from the query.
234
	 * 
235
	 * @return
236
	 */
237
	@Override
238
	public String asString() {
239
		return (friendlyName != null?friendlyName:"")+"<" + this.queryString + ">"; //$NON-NLS-1$ //$NON-NLS-2$
240
	}
241
	
242
	
243
	/*
244
	 * (non-Javadoc)
245
	 * @see java.lang.Object#toString()
246
	 */
247
	@Override
248
	public String toString() {
249
		return queryString;
250
	}
251

  
252
	public static Object toPrettyString(List<Query> queries) {
253
		
254
		if (queries == null) return "";
255
		StringBuilder str = new StringBuilder();
256
		for (int i = 0; i < queries.size(); i++) {
257
			if (i > 0) {
258
				str.append(TXMPreferences.LIST_SEPARATOR);
259
			}
260
			Query q = queries.get(i);
261
			str.append(q.getQueryString());
262
			//str.append(TXMPreferences.LIST_SEPARATOR + q.getSearchEngine().getName());
263
		}
264
		return str.toString();
265
	}
266
}
0 267

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/Selection.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
6
import org.txm.objects.Match;
7

  
8
public abstract class Selection {
9
	
10
	public abstract List<? extends Match> getMatches() throws Exception;
11
	
12
	public abstract List<? extends Match> getMatches(int from, int to) throws Exception;
13
	
14
	public abstract int getNMatch() throws Exception;
15
	
16
	public abstract IQuery getQuery();
17

  
18
	public abstract boolean isTargetUsed() throws Exception;
19

  
20
	public abstract void drop() throws Exception;
21
	
22
	public abstract boolean delete(int iMatch);
23
	
24
	public abstract boolean delete(Match match);
25

  
26
	public abstract boolean delete(ArrayList<Match> matchesToRemove);
27
}
0 28

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/messages/messages.properties (revision 3659)
1
#TXM messages generated by the PluginMessagesManager class
2
#Fri Jun 10 16:36:03 CEST 2022
3
deletingQueryResultP0=Deleting query result {0}…
4
deletingSubcorpusP0=Deleting sub-corpus {0}…
5
info_computingCorpusP0=Computing corpus {0}...
6
info_computingPartXWithQueryZ=Computing the part {0} with query {1}...
7
info_computingTheP0PartitionOfTheP1Corpus=Partition {0} of {1} corpus...
8
info_computingTheP0SubCorpusOfP1CommaQueryP2=Sub-corpus {0} of {1} {2}...
9
info_computingTheP0SubCorpusOfP1CommaStructureP2CommaPropertyP3ColonP4=Sub-corpus {0} of {1}, structure {2}, property {3}\: {4}...
10
info_creatingNewPartition=Creating partition {1} of corpus {0}…
11
info_creatingSubcorpusXFromCorpusYWithTheQueryZ=Creating sub-corpus {0} of corpus {1} with the query {2}…
12
info_deletingPartition=Deleting partition {0}…
13
info_doneP0Parts={0} parts.
14
info_partCreatedInXMs=Part {0} created in {1} ms.
15
info_partitionCreatedInXMs=Partition {0} created in {1} ms.
16
info_searchEngineStopped=Search engine stopped.
17
info_stoppingSearchEngine=Stopping the search engine…
18
sizeOfSubcorpusP0P1ComputedInP2Ms=Size of subcorpus {0} ({1}) computed in {2} ms.
19
subcorpusP0CreatedInP1Ms=Sub-corpus {0} created in {1} ms.
0 20

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/messages/messages_fr.properties (revision 3659)
1
#TXM messages generated by the PluginMessagesManager class
2
#Fri Jun 10 16:36:03 CEST 2022
3
deletingQueryResultP0=Suppression du résultat de requête {0}…
4
deletingSubcorpusP0=Suppression du sous-corpus {0}…
5
info_computingCorpusP0=Calcul du corpus {0}...
6
info_computingPartXWithQueryZ=Création de la partie {0} avec la requête {1}...
7
info_computingTheP0PartitionOfTheP1Corpus=Partition {0} du corpus {1}...
8
info_computingTheP0SubCorpusOfP1CommaQueryP2=Sous-corpus {0} de {1} {2}...
9
info_computingTheP0SubCorpusOfP1CommaStructureP2CommaPropertyP3ColonP4=Sous-corpus {0} de {1}, structure {2}, propriété {3} \: {4}...
10
info_creatingNewPartition=Création de la partition {1} du corpus {0}…
11
info_creatingSubcorpusXFromCorpusYWithTheQueryZ=Création du sous-corpus {0} du corpus {1} avec la requête {2}…
12
info_deletingPartition=Suppression de la partition {0}…
13
info_doneP0Parts={0} parties.
14
info_partCreatedInXMs=Partie {0} créée en {1} ms.
15
info_partitionCreatedInXMs=Partition {0} créée en {1} ms.
16
info_searchEngineStopped=Moteur de recherche arrêté.
17
info_stoppingSearchEngine=Arrêt du moteur de recherche…
18
sizeOfSubcorpusP0P1ComputedInP2Ms=Taille du sous-corpus {0} ({1}) calculée en {2} ms.
19
subcorpusP0CreatedInP1Ms=Sous-corpus {0} créé en {1} ms.
0 20

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/messages/SearchEngineCoreMessages.java (revision 3659)
1
package org.txm.searchengine.core.messages;
2

  
3
import org.eclipse.osgi.util.NLS;
4
import org.txm.utils.messages.Utf8NLS;
5

  
6

  
7
/**
8
 * Search engine core messages.
9
 * 
10
 * @author mdecorde
11
 * @author sjacquot
12
 *
13
 */
14
public class SearchEngineCoreMessages extends NLS {
15
	
16
	private static final String BUNDLE_NAME = "org.txm.searchengine.core.messages.messages"; //$NON-NLS-1$
17
	
18
	public static String info_creatingNewPartition;
19
	
20
	public static String info_deletingPartition;
21
	
22
	public static String info_partCreatedInXMs;
23
	
24
	public static String info_partitionCreatedInXMs;
25
	
26
	public static String deletingQueryResultP0;
27
	
28
	public static String info_computingPartXWithQueryZ;
29
	
30
	public static String info_creatingSubcorpusXFromCorpusYWithTheQueryZ;
31
	
32
	public static String info_computingTheP0SubCorpusOfP1CommaStructureP2CommaPropertyP3ColonP4;
33
	
34
	public static String info_computingTheP0SubCorpusOfP1CommaQueryP2;
35
	
36
	public static String deletingSubcorpusP0;
37
	
38
	public static String sizeOfSubcorpusP0P1ComputedInP2Ms;
39
	
40
	public static String info_searchEngineStopped;
41
	
42
	public static String info_stoppingSearchEngine;
43
	
44
	public static String subcorpusP0CreatedInP1Ms;
45
	
46
	
47
	
48
	public static String info_computingTheP0PartitionOfTheP1Corpus;
49
	
50
	public static String info_computingCorpusP0;
51
	
52
	public static String info_doneP0Parts;
53
	
54
	
55
	
56
	
57
	static {
58
		// initialize resource bundle
59
		Utf8NLS.initializeMessages(BUNDLE_NAME, SearchEngineCoreMessages.class);
60
	}
61
	
62
	private SearchEngineCoreMessages() {}
63
	
64
}
0 65

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/SearchEnginesManager.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import java.util.ArrayList;
4
import java.util.List;
5

  
6
import org.txm.Toolbox;
7
import org.txm.core.engines.EngineType;
8
import org.txm.core.engines.EnginesManager;
9
import org.txm.objects.CorpusBuild;
10

  
11
/**
12
 * Search engines manager.
13
 * 
14
 * @author mdecorde
15
 *
16
 */
17
// FIXME: useless class, the type and priority/order should be defined in org.txm.core.engines.EnginesManager extension point
18
public class SearchEnginesManager extends EnginesManager<SearchEngine> {
19
	
20
	private static final long serialVersionUID = 8476457980915443357L;
21
	
22
	/**
23
	 * 
24
	 * @return
25
	 */
26
	public static SearchEngine getCQPSearchEngine() {
27
		return (SearchEngine) Toolbox.getEngineManager(EngineType.SEARCH).getEngine("CQP"); //$NON-NLS-1$
28
	}
29
	
30
	/**
31
	 * 
32
	 * @return
33
	 */
34
	public static SearchEngine getTIGERSearchEngine() {
35
		return (SearchEngine) Toolbox.getEngineManager(EngineType.SEARCH).getEngine("TIGER"); //$NON-NLS-1$
36
	}
37
	
38
	/**
39
	 * 
40
	 * @return
41
	 */
42
	public static SearchEngine getSearchEngine(String name) {
43
		return (SearchEngine) Toolbox.getEngineManager(EngineType.SEARCH).getEngine(name);
44
	}
45
	
46
	@Override
47
	public boolean fetchEngines() {
48
		return this.fetchEngines(SearchEngine.EXTENSION_POINT_ID);
49
	}
50
	
51
	@Override
52
	public EngineType getEnginesType() {
53
		return EngineType.SEARCH;
54
	}
55
	
56
	public static List<SearchEngine> getAvailableEngines(CorpusBuild corpus) {
57
		List<SearchEngine> availables = new ArrayList<>();
58
		SearchEnginesManager em = (SearchEnginesManager) Toolbox.getEngineManager(EngineType.SEARCH);
59
		for (String name : em.getEngines().keySet()) {
60
			SearchEngine engine = em.getEngine(name);
61
			if (engine.hasIndexes(corpus)) {
62
				availables.add(engine);
63
			}
64
		}
65
		return availables;
66
	}
67
}
0 68

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/SearchEngine.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import java.util.List;
4

  
5
import org.txm.core.engines.Engine;
6
import org.txm.objects.CorpusBuild;
7
import org.txm.objects.Match;
8
import org.txm.utils.LogMonitor;
9

  
10
// FIXME: useless class
11
public abstract class SearchEngine implements ISearchEngine {
12

  
13
	public static final String EXTENSION_POINT_ID = SearchEngine.class.getCanonicalName();
14

  
15
	@Override
16
	public abstract String getName();
17
	
18
	public boolean start() throws Exception {
19
		return start(new LogMonitor("Starting "+getName()));
20
	}
21
	
22
	public abstract Selection query(CorpusBuild corpus, IQuery query, String name, boolean saveQuery) throws Exception;
23
	
24
	public abstract Query newQuery();
25

  
26
	/**
27
	 * 
28
	 * @param corpus
29
	 * @return true if the Engine can query the corpus
30
	 */
31
	public abstract boolean hasIndexes(CorpusBuild corpus);
32
	
33
	public String getDetails() {
34
		return this.getClass()+ " "+this.toString();
35
	}
36
	
37
	public boolean equals(SearchEngine e) {
38
		
39
		if (e == null) return false;
40
		if (this.getName() == null) return false;
41
		
42
		return this.getName().equals(e.getName());
43
	}
44
	
45
	/**
46
	 * 
47
	 * @param match
48
	 * @param property
49
	 * @return the first position property value
50
	 */
51
	public abstract String getValueForProperty(Match match, SearchEngineProperty property);
52
	
53
	/**
54
	 * 
55
	 * @param match
56
	 * @param property
57
	 * @return the positions property value
58
	 */
59
	public abstract List<String> getValuesForProperty(Match match, SearchEngineProperty property);
60

  
61
	/**
62
	 * 
63
	 * @return indicates if the SearchEngine queries need mumltiple lines to be written
64
	 */
65
	public boolean hasMultiLineQueries() {
66
		return false;
67
	}
68
}
0 69

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/corpus/CorpusSearchException.java (revision 3659)
1
package org.txm.searchengine.core.corpus;
2

  
3
public class CorpusSearchException extends Exception {
4

  
5
	/**
6
	 * 
7
	 */
8
	private static final long serialVersionUID = 3518861723206508596L;
9

  
10
	public CorpusSearchException(String message) {
11
		super(message);
12
	}
13

  
14
	public CorpusSearchException(String message, Throwable cause) {
15
		super(message, cause);
16
	}
17
}
0 18

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/QueryBasedTXMResult.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import org.txm.core.results.TXMResult;
4

  
5
/**
6
 * abstract class of result built on query
7
 * 
8
 * @author mdecorde
9
 *
10
 */
11
public abstract class QueryBasedTXMResult extends TXMResult {
12
	
13

  
14
	public QueryBasedTXMResult(String parametersNodePath) {
15
		
16
		super(parametersNodePath);
17
	}
18
	
19
	public QueryBasedTXMResult(String parametersNodePath, TXMResult parent) {
20
		
21
		super(parametersNodePath, parent);
22
	}
23
	
24
	public QueryBasedTXMResult(TXMResult parent) {
25
		
26
		super(parent);
27
	}
28

  
29
	/**
30
	 * 
31
	 * @return a query based on the result parameters
32
	 */
33
	public abstract IQuery getQuery();
34
}
0 35

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/SearchEnginePreferences.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import org.osgi.service.prefs.Preferences;
4
import org.txm.core.preferences.TXMPreferences;
5

  
6

  
7
public class SearchEnginePreferences extends TXMPreferences {
8
	
9
	/**
10
	 * contains the last bundle version setting the TreeTagger models directory
11
	 */
12
	public static final String DEFAULT_SEARCH_ENGINE = "default_search_engine"; //$NON-NLS-1$
13
	
14
	/**
15
	 * if set, the available search engines are shown in TXM interfaces
16
	 */
17
	public static final String SHOW_SEARCH_ENGINES = "show_search_engines"; //$NON-NLS-1$
18
	
19
	/**
20
	 * Gets the instance.
21
	 * 
22
	 * @return the instance
23
	 */
24
	public static TXMPreferences getInstance() {
25
		if (!TXMPreferences.instances.containsKey(SearchEnginePreferences.class)) {
26
			new SearchEnginePreferences();
27
		}
28
		return TXMPreferences.instances.get(SearchEnginePreferences.class);
29
	}
30
	
31
	@Override
32
	public void initializeDefaultPreferences() {
33
		super.initializeDefaultPreferences();
34
		
35
		// Default preferences if no org.txm.udpipe.core fragment is found
36
		Preferences preferences = this.getDefaultPreferencesNode();
37
		
38
		preferences.put(DEFAULT_SEARCH_ENGINE, "CQP");
39
		preferences.putBoolean(SHOW_SEARCH_ENGINES, true);
40
	}
41
}
0 42

  
TXM/trunk/bundles/org.txm.searchengine.core/src/org/txm/searchengine/core/IQuery.java (revision 3659)
1
package org.txm.searchengine.core;
2

  
3
import org.eclipse.osgi.util.NLS;
4

  
5
/**
6
 * Represent a search engine query
7
 * 
8
 * @author mdecorde
9
 *
10
 */
11
public interface IQuery {
12
	
13
	public String getQueryString();
14
	
15
	public boolean isEmpty();
16
	
17
	/**
18
	 * 
19
	 * @return the Query SearchEngine that can resolve the query
20
	 */
21
	public SearchEngine getSearchEngine();
22
	
23
	/**
24
	 * update the query
25
	 * 
26
	 * @param rawQuery
27
	 * @return this
28
	 */
29
	public IQuery setQuery(String rawQuery);
30
	
31
	/**
32
	 * update the query name
33
	 * 
34
	 * @param rawQuery
35
	 * @return this
36
	 */
37
	public String getName();
38
	
39
	/**
40
	 * update the query name for frienddier access
41
	 * 
42
	 * @param name
43
	 * @return this
44
	 */
45
	public IQuery setName(String name);
46
	
47
	/**
48
	 * fix the query using sugar syntax rules
49
	 * 
50
	 * @return this
51
	 */
52
	public IQuery fixQuery(String lang);
53
	
54
	public boolean equals(IQuery q);
55
	
56
	public String asString();
57
	
58
	public boolean canBeMultiLine();
59
	
60
	public static String toPrefString(IQuery query) {
61
		return query.getSearchEngine().getName()+"\t"+query.getQueryString();
62
	}
63
	
64
	public static IQuery fromPrefString(String prefString) {
65
		
66
		String[] split = prefString.split("\t", 2);
67
		
68
		String engineName = null;
69
		String queryString = null;
70
		
71
		
72
		if (split.length == 2) {
73
			engineName = split[0];
74
			queryString = split[1];
75
		} else {
76
			engineName = "CQP";
77
			queryString = split[0];
78
		}
79
		
80
		SearchEngine se = SearchEnginesManager.getSearchEngine(engineName);
81
		if (se == null) {
82
			throw new IllegalArgumentException(NLS.bind("No SearchEngine {0} found.", engineName));
83
		}
84
		IQuery query = se.newQuery();
85
		query.setQuery(queryString);
86
		return query;
87
	}
88
}
0 89

  
TXM/trunk/bundles/org.txm.searchengine.core/build.properties (revision 3659)
1
#Fri Jul 06 10:25:16 CEST 2018
2
output..=bin/
3
bin.includes = META-INF/,\
4
               .,\
5
               plugin.xml,\
6
               OSGI-INF/
7
source..=src/
8
#qualifier=svn
0 9

  
TXM/trunk/bundles/org.txm.searchengine.core/OSGI-INF/l10n/bundle.properties (revision 3659)
1
#TXM OSGI messages generated by the PluginMessagesManager class
2
#Fri Jun 10 16:36:03 CEST 2022
3
Bundle-Name=Searchengine core
4
EngineManager.description=Manage the search engines
5
extension-point.name=Search Engine
0 6

  
TXM/trunk/bundles/org.txm.searchengine.core/plugin.xml (revision 3659)
1
<?xml version="1.0" encoding="UTF-8"?>
2
<?eclipse version="3.4"?>
3
<plugin>  
4
   <extension-point id="org.txm.searchengine.core.SearchEngine" name="Search Engine" schema="schema/org.txm.searchengine.exsd"/>
5
   <extension
6
         point="org.txm.core.engines.EnginesManager">
7
      <EngineManager
8
            class="org.txm.searchengine.core.SearchEnginesManager"
9
            description="Manage the search engines"
10
            name="org.txm.searchengine.core.SearchEngines">
11
      </EngineManager>
12
   </extension>
13
   <extension
14
         point="org.eclipse.core.runtime.preferences">
15
      <initializer
16
            class="org.txm.searchengine.core.SearchEnginePreferences">
17
      </initializer>
18
   </extension>
19

  
20
</plugin>
0 21

  
TXM/trunk/bundles/org.txm.searchengine.core/.settings/org.eclipse.core.resources.prefs (revision 3659)
1
eclipse.preferences.version=1
2
encoding//src/org/txm/searchengine/core/messages/messages_fr.properties=UTF-8
0 3

  
TXM/trunk/bundles/org.txm.searchengine.core/.classpath (revision 3659)
1
<?xml version="1.0" encoding="UTF-8"?>
2
<classpath>
3
	<classpathentry kind="con"
4
		path="org.eclipse.jdt.launching.JRE_CONTAINER" />
5
	<classpathentry kind="con"
6
		path="org.eclipse.pde.core.requiredPlugins">
7
		<accessrules>
8
			<accessrule kind="accessible" pattern="**" />
9
		</accessrules>
10
	</classpathentry>
11
	<classpathentry kind="src" path="src" />
12
	<classpathentry kind="output" path="bin" />
13
</classpath>
0 14

  
TXM/trunk/bundles/org.txm.searchengine.core/META-INF/MANIFEST.MF (revision 3659)
1
Manifest-Version: 1.0
2
Export-Package: org.txm.searchengine.core,org.txm.searchengine.core.co
3
 rpus,org.txm.searchengine.core.messages
4
Bundle-SymbolicName: org.txm.searchengine.core;singleton:=true
5
Bundle-Version: 1.0.0.qualifier
6
Bundle-Name: Searchengine core
7
Require-Bundle: org.txm.core;bundle-version="0.7.0";visibility:=reexpo
8
 rt
9
Bundle-ActivationPolicy: lazy
10
Bundle-ManifestVersion: 2
11
Bundle-RequiredExecutionEnvironment: JavaSE-16
12
Bundle-Vendor: Textometrie.org
13
Automatic-Module-Name: org.txm.searchengine.core
14

  
0 15

  
TXM/trunk/bundles/org.txm.searchengine.core/schema/org.txm.searchengine.exsd (revision 3659)
1
<?xml version='1.0' encoding='UTF-8'?>
2
<!-- Schema file written by PDE -->
3
<schema targetNamespace="org.txm.searchengine.core" xmlns="http://www.w3.org/2001/XMLSchema">
4
<annotation>
5
      <appinfo>
6
         <meta.schema plugin="org.txm.searchengine.core" id="org.txm.searchengine.core.SearchEngine" name="Search Engine"/>
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="SearchEngine"/>
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="SearchEngine">
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.searchengine.core.SearchEngine:"/>
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/bundles/org.txm.rcp.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages_fr.properties (revision 3659)
1
#/home/mdecorde/workspace047/org.eclipse.equinox.p2.ui.nl_fr/org/eclipse/equinox/internal/p2/ui/messages_fr.properties + /home/mdecorde/workspace047/org.txm.rcp.p2.ui/src/org/eclipse/equinox/internal/p2/ui/messages_fr.properties
2
#Tue Apr 15 11:45:28 CEST 2014
3
QueryableMetadataRepositoryManager_LoadRepositoryProgress=Prise de contact avec {0}
4
RevertIUCommandTooltip=Revenir ? une pr?c?dente configuration install?e
5
RepositoryManipulationPage_Edit=&Editer
6
UpdateIUCommandTooltip=Voir si des mises ? jour sont disponibles pour les ?l?ments s?lectionn?s
7
IUGeneralInfoPropertyPage_IdentifierLabel=Identificateur \:
8
UninstallIUOperationLabel=D?sinstaller
9
RevertDialog_ConfigsLabel=Configurations &pr?c?dentes\:
10
RepositoryManipulationPage_RefreshConnection=&Recharger
11
QueryableUpdates_UpdateListProgress=Assembling list of updates
12
RemedyElementInstalledVersion=Version install?e \: 
13
RepositorySelectionGroup_PrefPageName=Sites de logiciels
14
TrustCertificateDialog_Title=Faites-vous confiance ? ces certificats??
15
RevertProfilePage_ProfileTagColumn=Balise
16
UpdateManagerCompatibility_InvalidSitesTitle=Invalid Sites File
17
RepositoryManipulationPage_Add=&Ajouter...
18
RepositoryNameAndLocationDialog_Title=Modifier le site
19
UpdateIUProgress=Mise ? jour...
20
RepositoryManipulationPage_LocationColumnTitle=Emplacement
21
UpdateManagerCompatibility_InvalidSiteFileMessage=L''emplacement s?lectionn? ne contient pas de site de mise ? jour. Veuillez choisir un autre dossier.
22
AvailableIUsPage_RepoFilterInstructions=Vous pouvez entrer l''emplacement du site de mise ? jour. En appuyant sur "Entr?e" le contenu du site est affich?.
23
UpdateIUOperationTask=Mise ? jour logicielle en cours
24
RepositoryGroup_SelectRepositoryDirectory=S?lectionnez un dossier racine de r?f?rentiel?\:
25
AvailableIUsPage_SingleSelectionCount={0} objet s?lectionn?
26
ResolutionWizardPage_Canceled=L''op?ration a ?t? annul?e.
27
AvailableIUsPage_SelectASite=S?lectionnez un site ou entrez l''adresse d''un site
28
AddRepositoryDialog_LocationLabel=Emp&lacement \:
29
UpdateRemediationPage_Description=La mise ? jour n''a pas pu se finir.
30
ProvUI_IdColumnTitle=ID
31
RemediationPage_SubDescription= Veuillez choisir une de ces solution alternative.
32
RevertProfilePage_ProfileTimestampColumn=Date
33
RepositoryManipulationPage_Description=Les sites activ?s seront utilis?s pour trouver les logiciels disponibles. Les sites d?sactiv?s sont ignor?s.
34
RepositoryManipulatorDropTarget_DragAndDropJobLabel=Op?ration de glisser-d?poser
35
ColocatedRepositoryTracker_PromptForSiteLocationEdit=Pas de site de mise ? jour trouv? ? l''emplacement {0}. Voulez-vous modifier l''emplacement ?
36
QueriedElementWrapper_NoItemsExplanation=Pas de mise ? jour disponible
37
AvailableIUsPage_LocalSites=--Sites de mise ? jour locaux--
38
InstallIUOperationLabel=Installer
39
IUGeneralInfoPropertyPage_DescriptionLabel=Description
40
RemediationPage_SolutionDetails=D?tails de la solution
41
ProvisioningOperationRunner_CannotApplyChanges=Les changements ne peuvent pas ?tre appliqu?s pendant que l''application est en cours d''ex?cution. Vous devez red?marrer l''application pour que les changements prennent effet.
42
InstallIUCommandLabel=&Installer
43
RepositoryManipulationPage_RefreshOperationCanceled=Op?ration annul?e.
44
RemedyElementRequestedVersion=Version demand?e \:
45
RevertProfilePage_CompareTooltip=Comparer les configurations d''installation s?lectionn?es
46
RevertProfilePage_RevertLabel=R?&tablir
47
RepositoryManipulationPage_Export=E&xporter...
48
RevertProfilePage_DeleteMultipleConfigurationsTitle=Supprimer les configurations
49
UpdateWizardPage_Description=V?rifier les mises ? jour.
50
Label_Repositories=Sites connus
51
RepositoryGroup_ArchivedRepoBrowseButton=&Archive
52
UpdateIUOperationLabel=Mettre ? jour
53
ResolutionWizardPage_ErrorStatus=L''op?ration ne peut pas ?tre termin?e. Voir les d?tails.
54
Label_Profiles=All Software Profiles
55
ProvUIMessages_SavedNotAccepted_EnterFor_0=Saved login details were not accepted. Please provide login details for {0}
56
RemedyCategoryChanged=Sera mis ? jour
57
ResolutionWizardPage_RelaxedConstraints=Install software with with relaxed constraints.
58
UninstallIUCommandLabel=&D?sinstaller
59
ResolutionWizardPage_RelaxedConstraintsTip=Instructs p2 to install the selected software with with relaxed constraints.
60
AddRepositoryDialog_NameLabel=&Nom \:
61
AddRepositoryDialog_Title=Ajouter un repository
62
RepositorySelectionGroup_NameAndLocationSeparator=\ - 
63
MetadataRepositoryElement_RepositoryLoadError=Erreur lors du chargement du site {0}
64
ProvUIMessages_NotAccepted_EnterFor_0=Login details were not accepted. Please provide login details for {0}
65
RepositoryManipulationPage_NameColumnTitle=Nom
66
IULicensePropertyPage_NoLicense=Aucune information de licence n''a ?t? fournie.
67
AvailableIUGroup_LoadingRepository=Chargement {0}
68
IUGeneralInfoPropertyPage_ProviderLabel=Fournisseur \:
69
RepositorySelectionGroup_GenericSiteLinkTitle=<a>Modifier la liste des sites logiciels</a>
70
RemoveColocatedRepositoryAction_Label=&Retirer des sites
71
IUGeneralInfoPropertyPage_CouldNotOpenBrowser=Impossible d''ouvrir le navigateur.
72
RemediationPage_NoSolutionFound=Pas de solution trouv?e.
73
ApplyProfileChangesDialog_Restart=&Red?marrer maintenant
74
AcceptLicensesWizardPage_LicenseTextLabel=&Texte de la licence \:
75
RepositoryDetailsLabelProvider_Disabled=D?sactiv?
76
AcceptLicensesWizardPage_AcceptMultiple=J''&accepte les termes des licences
77
ApplyProfileChangesDialog_NotYet=&Pas maintenant
78
AvailableIUsPage_GotoProperties=<a>Plus...</a>
79
RepositoryManipulationPage_Import=&Importer...
80
IUDetailsLabelProvider_ComputingSize=Calcul de la taille
81
RemedyCategoryNotAdded=Ne sera pas install?
82
RepositoryManipulationPage_DefaultFilterString=entrer le texte du filtre
83
RevertIUCommandLabel=&Revenir
84
RemedyCategoryRemoved=Sera desinstall?
85
AvailableIUsPage_AllSites=--Sites de mise ? jour--
86
UpdateManagerCompatibility_ExportSitesTitle=Exporter les sites
87
UpdateSingleIUPage_SingleUpdateDescription=Une mise ? jour a ?t? trouv?e pour {0}.
88
IUGeneralInfoPropertyPage_VersionLabel=Version \:
89
UpdateActionRemediationJobTask=La mise ? jour n''a pas pu ?tre compl?t?e. Recherche de solution alternative...
90
UserValidationDialog_SavePasswordButton=Sauve&garder le mot de passe
91
QueriedElementWrapper_NoCategorizedItemsExplanation=Il n''y a pas d''item cat?goris?.
92
LoadMetadataRepositoryJob_ContactSitesProgress=Contact du site de mise ? jour...
93
AvailableIUWrapper_AllAreInstalled=tous les items sont install?s.
94
UserValidationDialog_UsernameLabel=&Username\:
95
PreselectedIUInstallWizard_Title=Installer
96
UninstallWizardPage_Title=D?tails de d?sinstallation
97
UpdateManagerCompatibility_ImportSitesTitle=Importer des sites
98
AcceptLicensesWizardPage_ReviewLicensesDescription=Les licences doivent ?tre accept?es avant que l''installation puisse commencer.
99
OptionalPlatformRestartMessage=Vous aurez besoin de red?marrer {0} pour que les effets de la mise ? jour prennent effet.
100
RefreshAction_Label=&Actualiser
101
PlatformRestartMessage=Vous aurez besoin de red?marrer {0} pour que les effets de la mise ? jour prennent effet. Voulez-vous red?marrer maintenant ?
102
AvailableIUGroup_NoSitesConfiguredExplanation=Il n''y a pas de site de mise ? jour disponible
103
QueryableProfileRegistry_QueryProfileProgress=R?cup?ration des profils
104
ColocatedRepositoryTracker_SiteNotFoundTitle=Erreur lors du contact du site de mise ? jour
105
RevertProfilePage_ConfirmDeleteSingleConfig=Deleting the configuration from the installation history will free up the disk space used to store it.  However, you will no longer be able to revert your installation to this configuration.  Are you sure you want to delete it?
106
ResolutionWizardPage_WarningInfoStatus=Your original request has been modified. See the details.
107
PreselectedIUInstallWizard_Description=S?lectionner les items ? installer.
108
RevertProfilePage_NoProfile=This installation has not been configured properly for accessing the installation history.  See the error log for details.
109
RemediationPage_InstalledSection_AllowInstalledUpdate=Update items already installed
110
RepositorySelectionGroup_PrefPageLink=Trouvez plus de logiciels en modifiant les pr?f?rences de <a>"{0}"</a>.
111
RemediationPage_BestSolutionBeingInstalledRelaxed=Keep my installation the same and modify the items being installed to be compatible
112
ProvDropAdapter_UnsupportedDropOperation=Op?ration de d?pose non support?e
113
RemediationPage_InstalledSection=How do you want to alter the current installation?
114
IUCopyrightPropertyPage_ViewLinkLabel=Voir les mentions compl?tes de droit d''auteur?\:
115
IUViewQueryContext_NoCategorizedItemsDescription=You can uncheck the ''Group items by category'' check box to see items without categories.
116
ProvUI_NameColumnTitle=Nom
117
UpdateIUCommandLabel=&Mise ? jour
118
RemediationPage_InstalledSection_AllowInstalledRemoval=Remove items already installed
119
RepositoryTracker_DuplicateLocation=Emplacement en double
120
UpdateManagerCompatibility_UnableToOpenManageConfiguration=Unable to open the Classic Update Manager ''Manage Configuration'' dialog.
121
ProvElementContentProvider_FetchJobTitle=R?cup?ration des ?l?ments
122
ProvUI_ErrorDuringApplyConfig=Error while attempting to apply changes.  You must restart the application for changes to take effect.
123
Policy_RequiresUpdateManagerTitle=Installation non support?e
124
AcceptLicensesWizardPage_ItemsLabel=&Licences\:
125
AvailableIUsPage_ResolveAllCheckbox=&Contact all update sites during install to find required software
126
RepositoryManipulationPage_DisableButton=&D?sactiver
127
RepositoryGroup_URLRequired=Vous devez indiquer un emplacement
128
IUDetailsLabelProvider_Bytes={0} octets
129
QueriedElementWrapper_SiteNotFound=N''a pas pu trouver {0}
130
UpdateManagerCompatibility_UnableToOpenFindAndInstall=Unable to open the Classic Update Manager ''Find and Install'' wizard.
131
RepositoryManipulationPage_EnabledColumnTitle=Activ?
132
RemedyElementBeingInstalledVersion=Version en cours d''installation \: 
133
RepositoryManipulationPage_Title=Sites de logiciels disponibles
134
ApplyProfileChangesDialog_ApplyChanges=&Appliquer les changements tout de suite
135
ResolutionWizardPage_NoSelections=There were no installable units selected when the plan was computed.
136
IUCopyrightPropertyPage_NoCopyright=Aucune information de droits d''auteur n''a ?t? fournie.
137
ProvUI_InformationTitle=Information
138
Policy_RequiresUpdateManagerMessage=A feature that you have selected uses install procedures that are not compatible with the current installation support.  This feature can only be installed by the older Update Manager.  Do you want to launch the older Update Manager?
139
AvailableIUsPage_FilterOnEnvCheckBox=Show only software applicable to target environment
140
ServiceUI_unsigned_message=Avertissement \: Vous installez un logiciel qui contient du contenu non sign?. L''authenticit? ou la validit? de ce logiciel ne peut ?tre ?tablie. Voulez-vous continuer l''installation ?
141
InstallIUOperationTask=Installation de logiciel en cours
142
ProvisioningOperationWizard_Remediation_Operation=Compute remediation operation
143
UpdateActionRemediationJobName=Recherche de solution alternatives...
144
AcceptLicensesWizardPage_RejectSingle=J&e n''accepte pas les termes du contrat de licence
145
IUDetailsLabelProvider_KB={0} Ko
146
ProfileSnapshots_Label=Historique d''installation
147
ProvUI_ProviderColumnTitle=Fournisseur
148
RevertDialog_RevertOperationLabel=Revenir ? une configuration ant?rieure
149
UninstallDialog_UninstallMessage=V?rifiez les ?l?ments que vous souhaitez d?sinstaller.
150
RevertProfilePage_ConfirmDeleteMultipleConfigs=Deleting the selected configurations from the installation history will free up the disk space used to store the configurations.  However, you will no longer be able to revert your installation to these configurations.  Are you sure you want to delete the configurations?
151
ProvUI_InstallDialogError=Erreur lors de l''ouverture des informations d''installation.
152
ServiceUI_warning_title=Avertissement de s?curit?
153
RevertDialog_ConfirmRestartMessage=Cette op?ration requiert la relance du programme. Voulez-vous continuer ?
154
AcceptLicensesWizardPage_SingleLicenseTextLabel=&Texte de la licence (pour {0})\:
155
AcceptLicensesWizardPage_Title=Valider les licenses
156
RevertProfilePage_CompareLabel=Co&mparer
157
RemediationPage_BeingInstalledSection=How do you want to change the software being installed?
158
InstallWizardPage_Title=D?tails de l''installation
159
IULicensePropertyPage_ViewLicenseLabel=Voir la licence compl?te?\:
160
RepositoryManipulationPage_TestConnectionSuccess=Information for "{0}" has been reloaded from the server.
161
RemedyElementNotHighestVersion=This is not the highest version
162
AvailableIUsPage_GotoInstallInfo=Voir ce qui est <a>d?j? install?</a>?
163
AvailableIUsPage_Title=Mise ? jour disponible
164
ProvisioningOperationWizard_UnexpectedFailureToResolve=Erreur inattendue
165
IUGeneralInfoPropertyPage_DocumentationLink=La documentation est disponible \:
166
RepositoryManipulationPage_RemoveConfirmTitle=Supprimer les sites
167
ProfileModificationAction_InvalidSelections=Problem determining user request.  Profile id\: {0}, Selection count\: {1}
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.

Formats disponibles : Unified diff