Révision 626
| tmp/org.txm.chartsengine.jfreechart.core/src/org/txm/chartsengine/jfreechart/core/themes/highcharts/defaulttheme/renderers/ItemSelectionXYStepRenderer.java (revision 626) | ||
|---|---|---|
| 462 | 462 |
super.drawItem(g2, state, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState, pass); |
| 463 | 463 |
|
| 464 | 464 |
// force shape rendering because the XYStepRenderer doesn't manage it by default |
| 465 |
EntityCollection entities = null; |
|
| 466 |
if(info != null) {
|
|
| 467 |
entities = info.getOwner().getEntityCollection(); |
|
| 468 |
} |
|
| 469 |
|
|
| 470 |
drawSecondaryPass(g2, plot, dataset, pass, series, item, domainAxis, dataArea, rangeAxis, crosshairState, entities); |
|
| 465 |
// EntityCollection entities = null;
|
|
| 466 |
// if(info != null) {
|
|
| 467 |
// entities = info.getOwner().getEntityCollection();
|
|
| 468 |
// }
|
|
| 469 |
// |
|
| 470 |
// drawSecondaryPass(g2, plot, dataset, pass, series, item, domainAxis, dataArea, rangeAxis, crosshairState, entities);
|
|
| 471 | 471 |
} |
| 472 | 472 |
|
| 473 | 473 |
} |
| tmp/org.txm.index.rcp/src/org/txm/index/rcp/adapters/IndexAdapterFactory.java (revision 626) | ||
|---|---|---|
| 22 | 22 |
public static final ImageDescriptor ICON = |
| 23 | 23 |
AbstractUIPlugin.imageDescriptorFromPlugin(FrameworkUtil.getBundle(IndexAdapterFactory.class).getSymbolicName(), |
| 24 | 24 |
"platform:/plugin/"+ FrameworkUtil.getBundle(IndexAdapterFactory.class).getSymbolicName() + "/icons/index.png"); //$NON-NLS-1$ //$NON-NLS-2$ |
| 25 |
|
|
| 25 | 26 |
public static final ImageDescriptor LEXICON_ICON = |
| 26 | 27 |
AbstractUIPlugin.imageDescriptorFromPlugin(FrameworkUtil.getBundle(IndexAdapterFactory.class).getSymbolicName(), |
| 27 | 28 |
"platform:/plugin/"+ FrameworkUtil.getBundle(IndexAdapterFactory.class).getSymbolicName() + "/icons/lexicon.png"); //$NON-NLS-1$ //$NON-NLS-2$ |
| tmp/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java (revision 626) | ||
|---|---|---|
| 675 | 675 |
paramArea.pack(); |
| 676 | 676 |
initializeFields(); |
| 677 | 677 |
|
| 678 |
createContextMenu(viewer); |
|
| 678 |
// Register the context menu |
|
| 679 |
TXMEditorPart.initContextMenu(this.viewer.getTable(), "IndexEditorContextMenu", this.getSite(), this.viewer); // $NON-NLS-1$ |
|
| 680 |
|
|
| 679 | 681 |
viewer.getTable().pack(); |
| 680 | 682 |
parent.layout(true); |
| 681 | 683 |
} |
| ... | ... | |
| 703 | 705 |
return 2; |
| 704 | 706 |
} |
| 705 | 707 |
|
| 706 |
/** |
|
| 707 |
* Creates the context menu. |
|
| 708 |
* |
|
| 709 |
* @param tableViewer the table viewer |
|
| 710 |
*/ |
|
| 711 |
private void createContextMenu(TableViewer tableViewer) {
|
|
| 712 |
MenuManager menuManager = new MenuManager(); |
|
| 713 |
Menu menu = menuManager.createContextMenu(tableViewer.getTable()); |
|
| 714 |
tableViewer.getTable().setMenu(menu); |
|
| 715 |
getSite().registerContextMenu(menuManager, tableViewer); |
|
| 716 |
getSite().setSelectionProvider(tableViewer); |
|
| 717 |
} |
|
| 718 | 708 |
|
| 709 |
|
|
| 719 | 710 |
boolean initializing = false; // prevent properties widget listener to activate when adding new properties (and refresh the result) |
| 720 | 711 |
/** |
| 721 | 712 |
* Initialize fields. |
| tmp/org.txm.index.rcp/plugin.xml (revision 626) | ||
|---|---|---|
| 96 | 96 |
</visibleWhen> |
| 97 | 97 |
</command> |
| 98 | 98 |
</menuContribution> |
| 99 |
<menuContribution |
|
| 100 |
locationURI="popup:IndexEditorContextMenu"> |
|
| 101 |
<command |
|
| 102 |
commandId="org.txm.rcp.commands.link.ToConcordance" |
|
| 103 |
style="push"> |
|
| 104 |
</command> |
|
| 105 |
<command |
|
| 106 |
commandId="org.txm.rcp.commands.link.IndexToCooccurrence" |
|
| 107 |
style="push"> |
|
| 108 |
</command> |
|
| 109 |
<command |
|
| 110 |
commandId="org.txm.rcp.commands.link.ToProgression" |
|
| 111 |
style="push"> |
|
| 112 |
</command> |
|
| 113 |
</menuContribution> |
|
| 114 |
|
|
| 99 | 115 |
</extension> |
| 100 | 116 |
<extension |
| 101 | 117 |
point="org.eclipse.ui.editors"> |
| tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/editor/DiagnosticEditor.java (revision 626) | ||
|---|---|---|
| 28 | 28 |
@Override |
| 29 | 29 |
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
|
| 30 | 30 |
super.init(site, input); |
| 31 |
if (getResultData() instanceof Diagnostic)
|
|
| 32 |
this.diag = (Diagnostic) getResultData();
|
|
| 31 |
if (getResult() instanceof Diagnostic) |
|
| 32 |
this.diag = (Diagnostic) getResult(); |
|
| 33 | 33 |
} |
| 34 | 34 |
|
| 35 | 35 |
@Override |
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Corpus.java (revision 626) | ||
|---|---|---|
| 624 | 624 |
subcorpus.dropAllSubcorpora(); |
| 625 | 625 |
subcorpus.dropAllPartitions(); |
| 626 | 626 |
try {
|
| 627 |
CorpusManager.getCorpusManager().getCqiClient().dropSubCorpus( |
|
| 628 |
subcorpus.getQualifiedCqpId()); |
|
| 627 |
CorpusManager.getCorpusManager().getCqiClient().dropSubCorpus(subcorpus.getQualifiedCqpId()); |
|
| 629 | 628 |
} catch (Exception e) {
|
| 630 | 629 |
throw new CqiClientException(e); |
| 631 | 630 |
} |
| ... | ... | |
| 899 | 898 |
* @return the structural unit properties |
| 900 | 899 |
* @throws CqiClientException the cqi client exception |
| 901 | 900 |
*/ |
| 902 |
public List<StructuralUnitProperty> getStructuralUnitProperties() |
|
| 903 |
throws CqiClientException {
|
|
| 901 |
public List<StructuralUnitProperty> getStructuralUnitProperties() throws CqiClientException {
|
|
| 904 | 902 |
if (this.structuralUnits == null) |
| 905 | 903 |
getStructuralUnits(); |
| 906 | 904 |
|
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/StructuralUnitProperty.java (revision 626) | ||
|---|---|---|
| 50 | 50 |
/** The values for this property corpus */ |
| 51 | 51 |
List<String> values; |
| 52 | 52 |
|
| 53 |
/** The strucutral unit. */
|
|
| 53 |
/** The structural unit. */
|
|
| 54 | 54 |
private StructuralUnit structuralUnit; |
| 55 | 55 |
|
| 56 | 56 |
public static List<StructuralUnitProperty> stringToStructuralUnitProperties(Corpus corpus, String v) {
|
| ... | ... | |
| 78 | 78 |
return structs; |
| 79 | 79 |
} |
| 80 | 80 |
|
| 81 |
|
|
| 81 | 82 |
/** |
| 83 |
* |
|
| 84 |
* @param corpus |
|
| 85 |
* @param s the String to 'deserialize'. Each property is separated with 1 tabulation. Then calls fromString on each token |
|
| 86 |
* @return a list of StructuralUnitProperty if the s param is well formed |
|
| 87 |
* @throws CqiClientException |
|
| 88 |
*/ |
|
| 89 |
public static List<StructuralUnitProperty> fromStringToList(Corpus corpus, String s) {
|
|
| 90 |
ArrayList<StructuralUnitProperty> properties = new ArrayList<StructuralUnitProperty>(); |
|
| 91 |
if (s == null) return properties; |
|
| 92 |
|
|
| 93 |
String[] split = s.split("\t");
|
|
| 94 |
for (String s2 : split) {
|
|
| 95 |
try {
|
|
| 96 |
StructuralUnitProperty sup = fromString(corpus, s2); |
|
| 97 |
if (sup != null) {
|
|
| 98 |
properties.add(sup); |
|
| 99 |
} |
|
| 100 |
} catch (Exception e) {
|
|
| 101 |
e.printStackTrace(); |
|
| 102 |
} |
|
| 103 |
} |
|
| 104 |
return properties; |
|
| 105 |
} |
|
| 106 |
|
|
| 107 |
|
|
| 108 |
/** |
|
| 82 | 109 |
* Instantiates a new structural unit property. |
| 83 | 110 |
* |
| 84 | 111 |
* Not intended to be used directly. See |
| ... | ... | |
| 88 | 115 |
* @param corpus the corpus |
| 89 | 116 |
* {@link StructuralUnit#getProperty(String)}
|
| 90 | 117 |
*/ |
| 91 |
public StructuralUnitProperty(StructuralUnit structuralUnit, |
|
| 92 |
String name, Corpus corpus) {
|
|
| 118 |
public StructuralUnitProperty(StructuralUnit structuralUnit, String name, Corpus corpus) {
|
|
| 93 | 119 |
super(name, corpus); |
| 94 | 120 |
this.structuralUnit = structuralUnit; |
| 95 | 121 |
} |
| ... | ... | |
| 251 | 277 |
return null; |
| 252 | 278 |
} |
| 253 | 279 |
|
| 254 |
/** |
|
| 255 |
* |
|
| 256 |
* @param corpus |
|
| 257 |
* @param s the String to 'deserialize'. Each property is separated with 1 tabulation. Then calls fromString on each token |
|
| 258 |
* @return a list of StructuralUnitProperty if the s param is well formed |
|
| 259 |
* @throws CqiClientException |
|
| 260 |
*/ |
|
| 261 |
public static List<StructuralUnitProperty> fromStringToList(Corpus corpus, String s) {
|
|
| 262 |
ArrayList<StructuralUnitProperty> properties = new ArrayList<StructuralUnitProperty>(); |
|
| 263 |
if (s == null) return properties; |
|
| 264 | 280 |
|
| 265 |
String[] split = s.split("\t");
|
|
| 266 |
for (String s2 : split) {
|
|
| 267 |
try {
|
|
| 268 |
StructuralUnitProperty sup = fromString(corpus, s2); |
|
| 269 |
if (sup != null) {
|
|
| 270 |
properties.add(sup); |
|
| 271 |
} |
|
| 272 |
} catch (Exception e) {
|
|
| 273 |
e.printStackTrace(); |
|
| 274 |
} |
|
| 275 |
} |
|
| 276 |
return properties; |
|
| 277 |
} |
|
| 278 | 281 |
} |
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Property.java (revision 626) | ||
|---|---|---|
| 114 | 114 |
*/ |
| 115 | 115 |
@Override |
| 116 | 116 |
public int compareTo(Property p) {
|
| 117 |
return (this.getQualifiedName().compareTo( |
|
| 118 |
(p).getQualifiedName())); |
|
| 117 |
return (this.getQualifiedName().compareTo((p).getQualifiedName())); |
|
| 119 | 118 |
} |
| 120 | 119 |
} |
| tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/messages/CAUIMessages.java (revision 626) | ||
|---|---|---|
| 5 | 5 |
|
| 6 | 6 |
public class CAUIMessages extends Utf8NLS {
|
| 7 | 7 |
|
| 8 |
|
|
| 9 |
private static final String BUNDLE_NAME = "org.txm.ca.rcp.messages.messages"; //$NON-NLS-1$ |
|
| 10 |
|
|
| 8 | 11 |
static {
|
| 9 | 12 |
Utf8NLS.initializeMessages(CAUIMessages.class); |
| 10 | 13 |
} |
| tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java (revision 626) | ||
|---|---|---|
| 175 | 175 |
((ToolItem) e.getSource()).setSelection(true); |
| 176 | 176 |
return; |
| 177 | 177 |
} |
| 178 |
getResultData().setShowIndividuals(((ToolItem) e.getSource()).getSelection());
|
|
| 178 |
getResult().setShowIndividuals(((ToolItem) e.getSource()).getSelection()); |
|
| 179 | 179 |
} |
| 180 | 180 |
//Show/hide rows |
| 181 | 181 |
else if(e.getSource() == showVariables) {
|
| ... | ... | |
| 186 | 186 |
return; |
| 187 | 187 |
} |
| 188 | 188 |
|
| 189 |
getResultData().setShowVariables(((ToolItem) e.getSource()).getSelection());
|
|
| 189 |
getResult().setShowVariables(((ToolItem) e.getSource()).getSelection()); |
|
| 190 | 190 |
} |
| 191 | 191 |
//Show/hide rows |
| 192 | 192 |
else if(e.getSource() == showPointShapes) {
|
| 193 |
getResultData().setShowPointShapes(((ToolItem) e.getSource()).getSelection());
|
|
| 193 |
getResult().setShowPointShapes(((ToolItem) e.getSource()).getSelection()); |
|
| 194 | 194 |
} |
| 195 | 195 |
// Change factors |
| 196 | 196 |
else if(e.getSource() == plansCombo) {
|
| ... | ... | |
| 212 | 212 |
dimension2 = Integer.parseInt(split[1]); |
| 213 | 213 |
|
| 214 | 214 |
// FIXME: persistence |
| 215 |
getResultData().setFirstDimension(dimension1);
|
|
| 216 |
getResultData().setSecondDimension(dimension2);
|
|
| 215 |
getResult().setFirstDimension(dimension1); |
|
| 216 |
getResult().setSecondDimension(dimension2); |
|
| 217 | 217 |
|
| 218 | 218 |
resetView = true; |
| 219 | 219 |
} |
| 220 |
getResultData().setChartDirty();
|
|
| 221 |
getResultData().setNeedsToResetView(resetView);
|
|
| 220 |
getResult().setChartDirty(); |
|
| 221 |
getResult().setNeedsToResetView(resetView); |
|
| 222 | 222 |
compute(true); |
| 223 | 223 |
// synchronize the part names |
| 224 |
((CAEditor)getParentMultiPagesEditor()).setName(getResultData().getName());
|
|
| 224 |
((CAEditor)getParentMultiPagesEditor()).setName(getResult().getName()); |
|
| 225 | 225 |
forceFocus(); |
| 226 | 226 |
} |
| 227 | 227 |
|
| tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/handlers/ComputeCA.java (revision 626) | ||
|---|---|---|
| 38 | 38 |
import org.txm.ca.core.functions.CA; |
| 39 | 39 |
import org.txm.ca.rcp.editors.CAEditor; |
| 40 | 40 |
import org.txm.ca.rcp.messages.CAUIMessages; |
| 41 |
import org.txm.chartsengine.rcp.editors.ChartEditorPart; |
|
| 42 |
import org.txm.core.results.TXMResult; |
|
| 43 | 41 |
import org.txm.lexicaltable.core.functions.LexicalTable; |
| 44 |
import org.txm.lexicaltable.core.functions.___LexicalTableFactory; |
|
| 45 | 42 |
import org.txm.lexicaltable.rcp.editors.LexicalTableDialog; |
| 46 | 43 |
import org.txm.rcp.RCPMessages; |
| 47 | 44 |
import org.txm.rcp.StatusLine; |
| ... | ... | |
| 112 | 109 |
|
| 113 | 110 |
Log.info(NLS.bind(CAUIMessages.ComputeCorrespondanceAnalysis_0, partition, property)); |
| 114 | 111 |
|
| 115 |
//LexicalTable lexicalTable = LexicalTableFactory.getLexicalTable(partition, property, fMin); |
|
| 116 | 112 |
LexicalTable lexicalTable = new LexicalTable(partition, property, fMin, vMax); |
| 117 | 113 |
ca = new CA(lexicalTable); |
| 118 | 114 |
} |
| tmp/org.txm.statsengine.r.rcp/src/org/txm/statsengine/r/rcp/views/RVariablesView.java (revision 626) | ||
|---|---|---|
| 64 | 64 |
import org.txm.concordance.core.functions.Concordance; |
| 65 | 65 |
import org.txm.cooccurrence.core.functions.Cooccurrence; |
| 66 | 66 |
import org.txm.core.results.TXMResult; |
| 67 |
import org.txm.functions.referencer.Referencer; |
|
| 68 | 67 |
import org.txm.index.core.functions.Index; |
| 69 | 68 |
import org.txm.lexicaltable.core.functions.LexicalTable; |
| 70 | 69 |
import org.txm.lexicon.core.functions.Lexicon; |
| ... | ... | |
| 74 | 73 |
import org.txm.rcp.RCPMessages; |
| 75 | 74 |
import org.txm.rcp.commands.EditFile; |
| 76 | 75 |
import org.txm.rcp.commands.R.CopySelection; |
| 76 |
import org.txm.referencer.core.functions.Referencer; |
|
| 77 | 77 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
| 78 | 78 |
import org.txm.searchengine.cqp.corpus.Corpus; |
| 79 | 79 |
import org.txm.searchengine.cqp.corpus.CorpusManager; |
| tmp/org.txm.statsengine.r.rcp/src/org/txm/statsengine/r/rcp/preferences/RPreferencePage.java (revision 626) | ||
|---|---|---|
| 143 | 143 |
changeFieldStates(TXMPreferences.getBoolean(RPreferences.REMOTE, RPreferences.PREFERENCES_NODE)); |
| 144 | 144 |
|
| 145 | 145 |
|
| 146 |
addField(new BooleanFieldEditor(RPreferences.SHOW_EVAL_LOGS, "Log the R eval command lines.", getFieldEditorParent()));
|
|
| 146 |
addField(new BooleanFieldEditor(RPreferences.SHOW_EVAL_LOGS, "Log the R eval command lines", getFieldEditorParent())); |
|
| 147 | 147 |
|
| 148 | 148 |
} |
| 149 | 149 |
|
| tmp/org.txm.referencer.core/plugin.xml (revision 626) | ||
|---|---|---|
| 4 | 4 |
<extension |
| 5 | 5 |
point="org.eclipse.core.runtime.preferences"> |
| 6 | 6 |
<initializer |
| 7 |
class="org.txm.functions.referencer.ReferencerPreferences">
|
|
| 7 |
class="org.txm.referencer.core.preferences.ReferencerPreferences">
|
|
| 8 | 8 |
</initializer> |
| 9 | 9 |
</extension> |
| 10 | 10 |
|
| tmp/org.txm.referencer.core/META-INF/MANIFEST.MF (revision 626) | ||
|---|---|---|
| 9 | 9 |
org.txm.core;bundle-version="0.7.0", |
| 10 | 10 |
org.txm.searchengine.core;bundle-version="1.0.0", |
| 11 | 11 |
org.txm.searchengine.cqp.core;bundle-version="1.1.0" |
| 12 |
Export-Package: org.txm.functions.referencer |
|
| 12 |
Export-Package: org.txm.referencer.core.functions, |
|
| 13 |
org.txm.referencer.core.preferences |
|
| tmp/org.txm.referencer.core/src/org/txm/referencer/core/preferences/ReferencerPreferences.java (revision 626) | ||
|---|---|---|
| 1 |
package org.txm.referencer.core.preferences; |
|
| 2 |
|
|
| 3 |
import org.eclipse.core.runtime.preferences.DefaultScope; |
|
| 4 |
import org.osgi.framework.FrameworkUtil; |
|
| 5 |
import org.osgi.service.prefs.Preferences; |
|
| 6 |
import org.txm.core.preferences.TXMPreferences; |
|
| 7 |
|
|
| 8 |
public class ReferencerPreferences extends TXMPreferences {
|
|
| 9 |
|
|
| 10 |
public static final String PREFERENCES_NODE = FrameworkUtil.getBundle(ReferencerPreferences.class).getSymbolicName(); |
|
| 11 |
|
|
| 12 |
/** The Constant SORTBYFREQ. */ |
|
| 13 |
//FIXME: to extract to referencer plug-in |
|
| 14 |
public static final String SORT_BY_FREQ = "sorttype"; //$NON-NLS-1$ |
|
| 15 |
|
|
| 16 |
public static final String QUERY = "query"; //$NON-NLS-1$ |
|
| 17 |
public static final String PROPERTY = "property"; //$NON-NLS-1$ |
|
| 18 |
public static final String PATTERN = "pattern"; //$NON-NLS-1$ |
|
| 19 |
|
|
| 20 |
@Override |
|
| 21 |
public void initializeDefaultPreferences() {
|
|
| 22 |
Preferences preferences = DefaultScope.INSTANCE.getNode(PREFERENCES_NODE); |
|
| 23 |
|
|
| 24 |
preferences.putBoolean(SORT_BY_FREQ, false); //$NON-NLS-1$ |
|
| 25 |
|
|
| 26 |
preferences.put(QUERY, ""); //$NON-NLS-1$ |
|
| 27 |
preferences.put(PROPERTY, "word"); //$NON-NLS-1$ |
|
| 28 |
preferences.put(PATTERN, "text_id"); //$NON-NLS-1$ |
|
| 29 |
} |
|
| 30 |
} |
|
| 0 | 31 | |
| tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java (revision 626) | ||
|---|---|---|
| 1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
| 2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
| 3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
| 4 |
// Sophia Antipolis, University of Paris 3. |
|
| 5 |
// |
|
| 6 |
// The TXM platform is free software: you can redistribute it |
|
| 7 |
// and/or modify it under the terms of the GNU General Public |
|
| 8 |
// License as published by the Free Software Foundation, |
|
| 9 |
// either version 2 of the License, or (at your option) any |
|
| 10 |
// later version. |
|
| 11 |
// |
|
| 12 |
// The TXM platform is distributed in the hope that it will be |
|
| 13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
| 14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
| 15 |
// PURPOSE. See the GNU General Public License for more |
|
| 16 |
// details. |
|
| 17 |
// |
|
| 18 |
// You should have received a copy of the GNU General |
|
| 19 |
// Public License along with the TXM platform. If not, see |
|
| 20 |
// http://www.gnu.org/licenses. |
|
| 21 |
|
|
| 22 |
// |
|
| 23 |
// This file is part of the TXM platform. |
|
| 24 |
// |
|
| 25 |
// The TXM platform is free software: you can redistribute it and/or modif y |
|
| 26 |
// it under the terms of the GNU General Public License as published by |
|
| 27 |
// the Free Software Foundation, either version 3 of the License, or |
|
| 28 |
// (at your option) any later version. |
|
| 29 |
// |
|
| 30 |
// The TXM platform is distributed in the hope that it will be useful, |
|
| 31 |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 32 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 33 |
// GNU General Public License for more details. |
|
| 34 |
// |
|
| 35 |
// You should have received a copy of the GNU General Public License |
|
| 36 |
// along with the TXM platform. If not, see <http://www.gnu.org/licenses/>. |
|
| 37 |
// |
|
| 38 |
// |
|
| 39 |
// |
|
| 40 |
// $LastChangedDate: 2016-11-29 16:47:07 +0100 (Tue, 29 Nov 2016) $ |
|
| 41 |
// $LastChangedRevision: 3349 $ |
|
| 42 |
// $LastChangedBy: mdecorde $ |
|
| 43 |
// |
|
| 44 |
package org.txm.referencer.core.functions; |
|
| 45 |
|
|
| 46 |
import java.io.BufferedWriter; |
|
| 47 |
import java.io.File; |
|
| 48 |
import java.io.FileOutputStream; |
|
| 49 |
import java.io.IOException; |
|
| 50 |
import java.io.OutputStreamWriter; |
|
| 51 |
import java.io.Writer; |
|
| 52 |
import java.util.ArrayList; |
|
| 53 |
import java.util.Collections; |
|
| 54 |
import java.util.Comparator; |
|
| 55 |
import java.util.HashMap; |
|
| 56 |
import java.util.List; |
|
| 57 |
import java.util.Map; |
|
| 58 |
|
|
| 59 |
import org.txm.core.messages.TXMCoreMessages; |
|
| 60 |
import org.txm.core.results.Parameter; |
|
| 61 |
import org.txm.core.results.TXMParameters; |
|
| 62 |
import org.txm.core.results.TXMResult; |
|
| 63 |
import org.txm.referencer.core.preferences.ReferencerPreferences; |
|
| 64 |
import org.txm.searchengine.cqp.AbstractCqiClient; |
|
| 65 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
|
| 66 |
import org.txm.searchengine.cqp.corpus.Corpus; |
|
| 67 |
import org.txm.searchengine.cqp.corpus.CorpusManager; |
|
| 68 |
import org.txm.searchengine.cqp.corpus.Property; |
|
| 69 |
import org.txm.searchengine.cqp.corpus.QueryResult; |
|
| 70 |
import org.txm.searchengine.cqp.corpus.StructuralUnitProperty; |
|
| 71 |
import org.txm.searchengine.cqp.corpus.query.Match; |
|
| 72 |
import org.txm.searchengine.cqp.corpus.query.Query; |
|
| 73 |
import org.txm.searchengine.cqp.serverException.CqiServerError; |
|
| 74 |
import org.txm.statsengine.r.core.RWorkspace; |
|
| 75 |
import org.txm.statsengine.r.core.exceptions.RWorkspaceException; |
|
| 76 |
import org.txm.utils.logger.Log; |
|
| 77 |
|
|
| 78 |
/** |
|
| 79 |
* The Class Referencer computes the references of a query |
|
| 80 |
*/ |
|
| 81 |
public class Referencer extends TXMResult {
|
|
| 82 |
|
|
| 83 |
/** The noref. */ |
|
| 84 |
protected static int noref = 1; |
|
| 85 |
|
|
| 86 |
/** The prefix r. */ |
|
| 87 |
protected static String prefixR = "Referencer"; //$NON-NLS-1$ |
|
| 88 |
|
|
| 89 |
/** The indexes. */ |
|
| 90 |
int[] indexes; |
|
| 91 |
|
|
| 92 |
/** The lines. */ |
|
| 93 |
List<Line> lines; |
|
| 94 |
|
|
| 95 |
/** The cache. */ |
|
| 96 |
//private Map<Property, CqpDataProxy> cache; |
|
| 97 |
|
|
| 98 |
/** The matches. */ |
|
| 99 |
List<Match> matches; |
|
| 100 |
|
|
| 101 |
/** The positions. */ |
|
| 102 |
int[] positions; |
|
| 103 |
|
|
| 104 |
/** The nlines. */ |
|
| 105 |
int nlines; |
|
| 106 |
|
|
| 107 |
/** The processed idx. */ |
|
| 108 |
HashMap<Integer, Line> processedIdx; |
|
| 109 |
|
|
| 110 |
/** The result. */ |
|
| 111 |
QueryResult result; |
|
| 112 |
|
|
| 113 |
/** The symbol. */ |
|
| 114 |
private String symbol; |
|
| 115 |
|
|
| 116 |
/** The writer. */ |
|
| 117 |
private BufferedWriter writer; |
|
| 118 |
|
|
| 119 |
|
|
| 120 |
|
|
| 121 |
|
|
| 122 |
|
|
| 123 |
/** The hierarchic sort. */ |
|
| 124 |
@Parameter(key=ReferencerPreferences.SORT_BY_FREQ) |
|
| 125 |
private boolean pHierarchicSort; |
|
| 126 |
|
|
| 127 |
@Parameter |
|
| 128 |
List<StructuralUnitProperty> pPattern; |
|
| 129 |
|
|
| 130 |
/** The prop. */ |
|
| 131 |
@Parameter |
|
| 132 |
Property pProperty; |
|
| 133 |
|
|
| 134 |
/** The query. */ |
|
| 135 |
@Parameter |
|
| 136 |
Query pQuery; |
|
| 137 |
|
|
| 138 |
|
|
| 139 |
|
|
| 140 |
|
|
| 141 |
|
|
| 142 |
/** |
|
| 143 |
* Instantiates a new referencer. |
|
| 144 |
* |
|
| 145 |
* @param corpus the corpus |
|
| 146 |
* @param pQuery the query |
|
| 147 |
* @param pProperty the prop |
|
| 148 |
* @param pPattern the pattern |
|
| 149 |
* @param pHierarchicSort the hierarchic sort |
|
| 150 |
*/ |
|
| 151 |
public Referencer(Corpus corpus) {
|
|
| 152 |
super(corpus); |
|
| 153 |
} |
|
| 154 |
|
|
| 155 |
/** |
|
| 156 |
* As r matrix. |
|
| 157 |
* |
|
| 158 |
* @return the string |
|
| 159 |
* @throws RWorkspaceException the r workspace exception |
|
| 160 |
*/ |
|
| 161 |
public String asRMatrix() throws RWorkspaceException {
|
|
| 162 |
|
|
| 163 |
String keywords[] = new String[lines.size()]; |
|
| 164 |
for(int i = 0 ; i < lines.size() ; i++) |
|
| 165 |
keywords[i] = lines.get(i).getPropValue(); |
|
| 166 |
//System.out.println(Arrays.toString(keywords)); |
|
| 167 |
|
|
| 168 |
String symbol = prefixR+noref; |
|
| 169 |
|
|
| 170 |
RWorkspace rw = RWorkspace.getRWorkspaceInstance(); |
|
| 171 |
rw.eval(symbol+" <- list()"); //$NON-NLS-1$ |
|
| 172 |
rw.addVectorToWorkspace("refkeywords", keywords); //$NON-NLS-1$
|
|
| 173 |
rw.eval(symbol+"$keywords <- refkeywords"); //$NON-NLS-1$ |
|
| 174 |
//rw.eval(symbol+"$query <- \""+this.query.getQueryString()+"\")"); |
|
| 175 |
rw.eval(symbol+"$refs <- list()"); //$NON-NLS-1$ |
|
| 176 |
int i = 1; |
|
| 177 |
for (Line line : this.lines) {
|
|
| 178 |
String refs[] = line.getReferences().toArray(new String[line.getReferences().size()]); |
|
| 179 |
//System.out.println(line.getPropValue()+": "+Arrays.toString(refs)); |
|
| 180 |
rw.addVectorToWorkspace("reflinerefs", refs); //$NON-NLS-1$
|
|
| 181 |
rw.eval(symbol+"$refs[["+i+"]] <- reflinerefs"); //$NON-NLS-1$ //$NON-NLS-2$ |
|
| 182 |
i++; |
|
| 183 |
} |
|
| 184 |
|
|
| 185 |
noref++; |
|
| 186 |
this.symbol = symbol; |
|
| 187 |
return symbol; |
|
| 188 |
} |
|
| 189 |
|
|
| 190 |
@Override |
|
| 191 |
public void clean() {
|
|
| 192 |
try {
|
|
| 193 |
if (this.writer != null) {
|
|
| 194 |
this.writer.flush(); |
|
| 195 |
this.writer.close(); |
|
| 196 |
} |
|
| 197 |
} catch (IOException e) {
|
|
| 198 |
// TODO Auto-generated catch block |
|
| 199 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
| 200 |
} |
|
| 201 |
} |
|
| 202 |
|
|
| 203 |
/** |
|
| 204 |
* Clear all lines. |
|
| 205 |
*/ |
|
| 206 |
public void clearAllLines() |
|
| 207 |
{
|
|
| 208 |
for(Line line : lines) { // we need to recompute lines' references
|
|
| 209 |
line.clear(); |
|
| 210 |
} |
|
| 211 |
} |
|
| 212 |
|
|
| 213 |
/** |
|
| 214 |
* Call in order all stages to compute the referencer. |
|
| 215 |
* |
|
| 216 |
* @return true, if successful |
|
| 217 |
*/ |
|
| 218 |
protected boolean _compute() {
|
|
| 219 |
try {
|
|
| 220 |
if (!getQueryMatches()) |
|
| 221 |
return false; |
|
| 222 |
|
|
| 223 |
if (!getQueryindexes()) |
|
| 224 |
return false; |
|
| 225 |
|
|
| 226 |
if (!groupPositionsbyId()) |
|
| 227 |
return false; |
|
| 228 |
} |
|
| 229 |
catch(CqiClientException e) {
|
|
| 230 |
e.printStackTrace(); |
|
| 231 |
return false; |
|
| 232 |
} |
|
| 233 |
|
|
| 234 |
return true; |
|
| 235 |
} |
|
| 236 |
|
|
| 237 |
/** |
|
| 238 |
* Gets the parent corpus. |
|
| 239 |
* |
|
| 240 |
* @return the corpus |
|
| 241 |
*/ |
|
| 242 |
public Corpus getCorpus() {
|
|
| 243 |
return (Corpus) this.parent; |
|
| 244 |
} |
|
| 245 |
|
|
| 246 |
@Override |
|
| 247 |
public String getDetails() {
|
|
| 248 |
return getCorpus().getName(); |
|
| 249 |
} |
|
| 250 |
|
|
| 251 |
/** |
|
| 252 |
* Gets the lines. |
|
| 253 |
* |
|
| 254 |
* @return the lines |
|
| 255 |
* @throws CqiClientException the cqi client exception |
|
| 256 |
* @throws IOException Signals that an I/O exception has occurred. |
|
| 257 |
* @throws CqiServerError the cqi server error |
|
| 258 |
*/ |
|
| 259 |
public List<Line> getLines() throws CqiClientException, IOException, CqiServerError |
|
| 260 |
{
|
|
| 261 |
return getLines(0,lines.size()); |
|
| 262 |
} |
|
| 263 |
|
|
| 264 |
/** |
|
| 265 |
* Gets the lines. |
|
| 266 |
* |
|
| 267 |
* @param from the from |
|
| 268 |
* @param to the to |
|
| 269 |
* @return the lines |
|
| 270 |
* @throws CqiClientException the cqi client exception |
|
| 271 |
* @throws IOException Signals that an I/O exception has occurred. |
|
| 272 |
* @throws CqiServerError the cqi server error |
|
| 273 |
*/ |
|
| 274 |
public List<Line> getLines(int from, int to) throws CqiClientException, IOException, CqiServerError |
|
| 275 |
{
|
|
| 276 |
if (from < 0) |
|
| 277 |
from = 0; |
|
| 278 |
if (to > lines.size()) |
|
| 279 |
to = lines.size(); |
|
| 280 |
|
|
| 281 |
HashMap<Integer, Line> lineswithoutpropvalue = new HashMap<Integer, Line>(); |
|
| 282 |
|
|
| 283 |
AbstractCqiClient cqiClient = CorpusManager.getCorpusManager().getCqiClient(); |
|
| 284 |
//build Missing lines |
|
| 285 |
for(int i = from ; i < to ; i++)// for each position group |
|
| 286 |
{
|
|
| 287 |
Line l = lines.get(i); |
|
| 288 |
if (l.notcomputed) {
|
|
| 289 |
lineswithoutpropvalue.put(l.id, l); |
|
| 290 |
|
|
| 291 |
// get all reference values of all position of the line |
|
| 292 |
Map<Property, List<List<String>>> refValues = new HashMap<Property, List<List<String>>>(); |
|
| 293 |
for (Property property : pPattern) {
|
|
| 294 |
refValues.put(property, cqiClient.getData(property, |
|
| 295 |
l.positions, Collections.nCopies(l.positions.size(), 1))); |
|
| 296 |
} |
|
| 297 |
|
|
| 298 |
for (int j = 0 ; j < l.positions.size() ; j++)// build the Reference object |
|
| 299 |
{
|
|
| 300 |
String propvalue = ""; //$NON-NLS-1$ |
|
| 301 |
for (Property property : pPattern) {
|
|
| 302 |
propvalue += refValues.get(property).get(j).get(0)+", "; //$NON-NLS-1$ |
|
| 303 |
} |
|
| 304 |
|
|
| 305 |
l.addReference(propvalue.substring(0, propvalue.length()-2)); |
|
| 306 |
} |
|
| 307 |
if (pHierarchicSort) |
|
| 308 |
l.sortRef(true); |
|
| 309 |
else |
|
| 310 |
l.sortAlpha(); |
|
| 311 |
l.notcomputed = false; |
|
| 312 |
} |
|
| 313 |
} |
|
| 314 |
|
|
| 315 |
// get idx String value |
|
| 316 |
int[] idxwithoutvalues = new int[lineswithoutpropvalue.keySet().size()]; |
|
| 317 |
int count = 0; |
|
| 318 |
for(int i : lineswithoutpropvalue.keySet()) {
|
|
| 319 |
idxwithoutvalues[count++] = i; |
|
| 320 |
} |
|
| 321 |
|
|
| 322 |
String[] values = CorpusManager.getCorpusManager().getCqiClient().id2Str(pProperty.getQualifiedName(), idxwithoutvalues); |
|
| 323 |
for(int i = 0 ; i < values.length ; i++) {
|
|
| 324 |
int id = idxwithoutvalues[i]; |
|
| 325 |
lineswithoutpropvalue.get(id).linepropvalue = values[i]; |
|
| 326 |
} |
|
| 327 |
return lines.subList(from, to); |
|
| 328 |
} |
|
| 329 |
|
|
| 330 |
/** |
|
| 331 |
* Gets the name. |
|
| 332 |
* |
|
| 333 |
* @return the name |
|
| 334 |
*/ |
|
| 335 |
public String getName() {
|
|
| 336 |
return getCorpus().getName() + ": " + pQuery; //$NON-NLS-1$ |
|
| 337 |
} |
|
| 338 |
|
|
| 339 |
/** |
|
| 340 |
* Gets the n lines. |
|
| 341 |
* |
|
| 342 |
* @return the n lines |
|
| 343 |
*/ |
|
| 344 |
public int getNLines() {
|
|
| 345 |
return nlines; |
|
| 346 |
} |
|
| 347 |
|
|
| 348 |
/** |
|
| 349 |
* Gets the pattern. |
|
| 350 |
* |
|
| 351 |
* @return the pattern |
|
| 352 |
*/ |
|
| 353 |
public List<StructuralUnitProperty> getPattern() {
|
|
| 354 |
return pPattern; |
|
| 355 |
} |
|
| 356 |
|
|
| 357 |
/** |
|
| 358 |
* Gets the property. |
|
| 359 |
* |
|
| 360 |
* @return the property |
|
| 361 |
*/ |
|
| 362 |
public Property getProperty() {
|
|
| 363 |
return pProperty; |
|
| 364 |
} |
|
| 365 |
|
|
| 366 |
/** |
|
| 367 |
* Gets the query. |
|
| 368 |
* |
|
| 369 |
* @return the query |
|
| 370 |
*/ |
|
| 371 |
public Query getQuery() {
|
|
| 372 |
return pQuery; |
|
| 373 |
} |
|
| 374 |
|
|
| 375 |
/** |
|
| 376 |
* 2nd step. |
|
| 377 |
* |
|
| 378 |
* @return the queryindexes |
|
| 379 |
*/ |
|
| 380 |
public boolean getQueryindexes(){
|
|
| 381 |
try {
|
|
| 382 |
positions = new int[matches.size()]; |
|
| 383 |
int i = 0; |
|
| 384 |
for (Match m : matches) {
|
|
| 385 |
positions[i++] = m.getStart(); |
|
| 386 |
} |
|
| 387 |
|
|
| 388 |
indexes = CorpusManager.getCorpusManager().getCqiClient().cpos2Id(pProperty.getQualifiedName(),positions); |
|
| 389 |
} catch (Exception e) {
|
|
| 390 |
// TODO Auto-generated catch block |
|
| 391 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
| 392 |
return false; |
|
| 393 |
} |
|
| 394 |
return true; |
|
| 395 |
} |
|
| 396 |
|
|
| 397 |
/** |
|
| 398 |
* 1st step. |
|
| 399 |
* |
|
| 400 |
* @return the query matches |
|
| 401 |
* @throws CqiClientException |
|
| 402 |
*/ |
|
| 403 |
public boolean getQueryMatches() throws CqiClientException{
|
|
| 404 |
|
|
| 405 |
result = this.getCorpus().query(pQuery, TXMCoreMessages.Referencer_1, false); |
|
| 406 |
if (result.getNMatch() == 0) |
|
| 407 |
return false; |
|
| 408 |
matches = result.getMatches(); |
|
| 409 |
result.drop(); |
|
| 410 |
return true; |
|
| 411 |
} |
|
| 412 |
|
|
| 413 |
@Override |
|
| 414 |
public String getSimpleName() {
|
|
| 415 |
if (pQuery != null) {
|
|
| 416 |
return pQuery.toString(); |
|
| 417 |
} |
|
| 418 |
else {
|
|
| 419 |
return getName(); |
|
| 420 |
} |
|
| 421 |
} |
|
| 422 |
|
|
| 423 |
/** |
|
| 424 |
* Gets the symbol. |
|
| 425 |
* |
|
| 426 |
* @return the symbol |
|
| 427 |
*/ |
|
| 428 |
public String getSymbol() {
|
|
| 429 |
return symbol; |
|
| 430 |
} |
|
| 431 |
|
|
| 432 |
public int getV() {
|
|
| 433 |
if (matches == null) {
|
|
| 434 |
return 0; |
|
| 435 |
} |
|
| 436 |
return matches.size(); |
|
| 437 |
} |
|
| 438 |
|
|
| 439 |
/** |
|
| 440 |
* 3rd stage. |
|
| 441 |
* |
|
| 442 |
* @return true, if successful |
|
| 443 |
*/ |
|
| 444 |
public boolean groupPositionsbyId() {
|
|
| 445 |
processedIdx = new HashMap<Integer, Line>(); |
|
| 446 |
|
|
| 447 |
lines = new ArrayList<Line>(); |
|
| 448 |
//System.out.println("indexes ");
|
|
| 449 |
for (int i = 0 ; i < indexes.length ; i++) {
|
|
| 450 |
int id = indexes[i]; |
|
| 451 |
//System.out.print(" "+id);
|
|
| 452 |
if (!processedIdx.containsKey(id)) {
|
|
| 453 |
//System.out.println("add idx "+id);
|
|
| 454 |
Line l = new Line(id); |
|
| 455 |
processedIdx.put(id, l); |
|
| 456 |
|
|
| 457 |
lines.add(l); |
|
| 458 |
} |
|
| 459 |
processedIdx.get(id).addPosition(positions[i]); |
|
| 460 |
} |
|
| 461 |
|
|
| 462 |
nlines = processedIdx.keySet().size(); |
|
| 463 |
return true; |
|
| 464 |
} |
|
| 465 |
|
|
| 466 |
public void setParameters(Query query, Property prop, List<StructuralUnitProperty> pattern, Boolean hierarchicSort) {
|
|
| 467 |
if (query != null) this.pQuery = query; |
|
| 468 |
if (pattern != null) this.pPattern = pattern; |
|
| 469 |
if (prop != null) this.pProperty = prop; |
|
| 470 |
if (hierarchicSort != null) this.pHierarchicSort = hierarchicSort; |
|
| 471 |
dirty = true; |
|
| 472 |
} |
|
| 473 |
|
|
| 474 |
@Override |
|
| 475 |
public boolean setParameters(TXMParameters parameters) {
|
|
| 476 |
return false; |
|
| 477 |
} |
|
| 478 |
|
|
| 479 |
/** |
|
| 480 |
* Write all the lines in a file. |
|
| 481 |
* |
|
| 482 |
* @param outfile the outfile |
|
| 483 |
* @param encoding the encoding |
|
| 484 |
* @return true, if successful |
|
| 485 |
*/ |
|
| 486 |
public boolean toTxt(File outfile, String encoding) {
|
|
| 487 |
|
|
| 488 |
return toTxt(outfile, encoding, "\t", ""); //$NON-NLS-1$ //$NON-NLS-2$ |
|
| 489 |
} |
|
| 490 |
|
|
| 491 |
/** |
|
| 492 |
* Write all the lines in a file. |
|
| 493 |
* |
|
| 494 |
* @param outfile the outfile |
|
| 495 |
* @param encoding the encoding |
|
| 496 |
* @param colseparator the colseparator |
|
| 497 |
* @param txtseparator the txtseparator |
|
| 498 |
* @return true, if successful |
|
| 499 |
*/ |
|
| 500 |
public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
|
|
| 501 |
try {
|
|
| 502 |
// NK: writer declared as class attribute to perform a clean if the operation is interrupted |
|
| 503 |
this.writer = new BufferedWriter(new OutputStreamWriter( |
|
| 504 |
new FileOutputStream(outfile), encoding)); |
|
| 505 |
// if ("UTF-8".equals(encoding)) writer.write('\ufeff'); // UTF-8 BOM
|
|
| 506 |
toTxt(writer, 0, lines.size() - 1, colseparator, txtseparator); |
|
| 507 |
} catch (Exception e) {
|
|
| 508 |
System.err.println(TXMCoreMessages.Referencer_2 + Log.toString(e)); |
|
| 509 |
return false; |
|
| 510 |
} |
|
| 511 |
return true; |
|
| 512 |
} |
|
| 513 |
|
|
| 514 |
/** |
|
| 515 |
* Write the lines between from and to in a writer. |
|
| 516 |
* |
|
| 517 |
* @param writer Where to write the lines |
|
| 518 |
* @param from The first line to be written |
|
| 519 |
* @param to The last line to be writen |
|
| 520 |
* @param colseparator the colseparator |
|
| 521 |
* @param txtseparator the txtseparator |
|
| 522 |
* @throws CqiClientException the cqi client exception |
|
| 523 |
* @throws IOException Signals that an I/O exception has occurred. |
|
| 524 |
*/ |
|
| 525 |
public void toTxt(Writer writer, int from, int to, String colseparator, String txtseparator) |
|
| 526 |
throws CqiClientException, IOException {
|
|
| 527 |
try {
|
|
| 528 |
getLines(0, 9999999); |
|
| 529 |
writer.write(pProperty.getName()+colseparator+this.pPattern+"\n"); //$NON-NLS-1$ |
|
| 530 |
for (Line line : lines) {
|
|
| 531 |
writer.write(txtseparator+line.getPropValue().replace(txtseparator, txtseparator+txtseparator)+txtseparator+ colseparator + txtseparator+ line.getReferences().toString().replace(txtseparator, txtseparator+txtseparator)+txtseparator+"\n"); //$NON-NLS-1$ |
|
| 532 |
writer.flush(); |
|
| 533 |
} |
|
| 534 |
|
|
| 535 |
writer.close(); |
|
| 536 |
} catch (CqiServerError e) {
|
|
| 537 |
// TODO Auto-generated catch block |
|
| 538 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
| 539 |
} |
|
| 540 |
} |
|
| 541 |
|
|
| 542 |
@Override |
|
| 543 |
public boolean canCompute() {
|
|
| 544 |
|
|
| 545 |
if (pQuery == null |
|
| 546 |
|| pQuery.isEmpty()) {
|
|
| 547 |
System.out.println("Empty query");
|
|
| 548 |
return false; |
|
| 549 |
} |
|
| 550 |
if (pPattern == null |
|
| 551 |
|| pPattern.size() == 0) {
|
|
| 552 |
System.out.println("No reference pattern");
|
|
| 553 |
return false; |
|
| 554 |
} |
|
| 555 |
if (pProperty == null) {
|
|
| 556 |
System.out.println("No property");
|
|
| 557 |
return false; |
|
| 558 |
} |
|
| 559 |
|
|
| 560 |
return true; |
|
| 561 |
} |
|
| 562 |
|
|
| 563 |
@Override |
|
| 564 |
public boolean loadParameters() throws CqiClientException {
|
|
| 565 |
this.pQuery = new Query(this.getStringParameterValue(ReferencerPreferences.QUERY)); |
|
| 566 |
|
|
| 567 |
String s = this.getStringParameterValue(ReferencerPreferences.PATTERN); |
|
| 568 |
this.pPattern = StructuralUnitProperty.fromStringToList(getCorpus(), s); |
|
| 569 |
|
|
| 570 |
s = this.getStringParameterValue(ReferencerPreferences.PROPERTY); |
|
| 571 |
this.pProperty = getCorpus().getProperty(s); |
|
| 572 |
return true; |
|
| 573 |
} |
|
| 574 |
|
|
| 575 |
@Override |
|
| 576 |
public boolean saveParameters() {
|
|
| 577 |
// TODO Auto-generated method stub |
|
| 578 |
System.err.println("Referencer.saveParameters(): not yet implemented.");
|
|
| 579 |
return true; |
|
| 580 |
} |
|
| 581 |
|
|
| 582 |
|
|
| 583 |
|
|
| 584 |
|
|
| 585 |
/** |
|
| 586 |
* The Class Line. |
|
| 587 |
*/ |
|
| 588 |
public class Line {
|
|
| 589 |
|
|
| 590 |
/** The id. */ |
|
| 591 |
int id; |
|
| 592 |
|
|
| 593 |
/** The propvalue. */ |
|
| 594 |
String linepropvalue; |
|
| 595 |
|
|
| 596 |
/** The notcomputed. */ |
|
| 597 |
boolean notcomputed=true; |
|
| 598 |
|
|
| 599 |
/** The positions. */ |
|
| 600 |
ArrayList<Integer> positions; |
|
| 601 |
|
|
| 602 |
/** The references. */ |
|
| 603 |
ArrayList<String> references; |
|
| 604 |
|
|
| 605 |
/** The references counts. */ |
|
| 606 |
HashMap<String, Integer> referencesCounts = new HashMap<String, Integer>(); |
|
| 607 |
|
|
| 608 |
/** |
|
| 609 |
* Instantiates a new line. |
|
| 610 |
* |
|
| 611 |
* @param i the i |
|
| 612 |
*/ |
|
| 613 |
public Line(int i) {
|
|
| 614 |
id = i; |
|
| 615 |
positions = new ArrayList<Integer>(); |
|
| 616 |
references = new ArrayList<String>(); |
|
| 617 |
} |
|
| 618 |
|
|
| 619 |
/** |
|
| 620 |
* Adds the position. |
|
| 621 |
* |
|
| 622 |
* @param i the i |
|
| 623 |
*/ |
|
| 624 |
public void addPosition(int i) {
|
|
| 625 |
positions.add(i); |
|
| 626 |
} |
|
| 627 |
|
|
| 628 |
/** |
|
| 629 |
* Adds the reference. |
|
| 630 |
* |
|
| 631 |
* @param string the string |
|
| 632 |
*/ |
|
| 633 |
public void addReference(String string) {
|
|
| 634 |
if (!referencesCounts.containsKey(string)) {
|
|
| 635 |
references.add(string); |
|
| 636 |
referencesCounts.put(string, 1); |
|
| 637 |
} else {
|
|
| 638 |
referencesCounts.put(string, referencesCounts.get(string)+1); |
|
| 639 |
} |
|
| 640 |
} |
|
| 641 |
|
|
| 642 |
/** |
|
| 643 |
* Clear. |
|
| 644 |
*/ |
|
| 645 |
public void clear() {
|
|
| 646 |
notcomputed = false; |
|
| 647 |
references = new ArrayList<String>(); |
|
| 648 |
} |
|
| 649 |
|
|
| 650 |
/** |
|
| 651 |
* Gets the count. |
|
| 652 |
* |
|
| 653 |
* @param ref the ref |
|
| 654 |
* @return the count |
|
| 655 |
*/ |
|
| 656 |
public int getCount(String ref) {
|
|
| 657 |
return referencesCounts.get(ref); |
|
| 658 |
} |
|
| 659 |
|
|
| 660 |
public HashMap<String, Integer> getCounts() {
|
|
| 661 |
return referencesCounts; |
|
| 662 |
} |
|
| 663 |
|
|
| 664 |
/** |
|
| 665 |
* Gets the prop value. |
|
| 666 |
* |
|
| 667 |
* @return the prop value |
|
| 668 |
*/ |
|
| 669 |
public String getPropValue() {
|
|
| 670 |
return linepropvalue; |
|
| 671 |
} |
|
| 672 |
|
|
| 673 |
/** |
|
| 674 |
* Gets the references. |
|
| 675 |
* |
|
| 676 |
* @return the references |
|
| 677 |
*/ |
|
| 678 |
public List<String> getReferences() {
|
|
| 679 |
return references; |
|
| 680 |
} |
|
| 681 |
|
|
| 682 |
/** |
|
| 683 |
* Sort alpha. |
|
| 684 |
*/ |
|
| 685 |
public void sortAlpha() {
|
|
| 686 |
Collections.sort(references); |
|
| 687 |
} |
|
| 688 |
|
|
| 689 |
/** |
|
| 690 |
* Sort ref. |
|
| 691 |
* |
|
| 692 |
* @param reverse the reverse |
|
| 693 |
*/ |
|
| 694 |
public void sortRef(final boolean reverse) {
|
|
| 695 |
Collections.sort(references, new Comparator<String>() {
|
|
| 696 |
|
|
| 697 |
@Override |
|
| 698 |
public int compare(String arg0, String arg1) {
|
|
| 699 |
if (reverse) |
|
| 700 |
return getCount(arg1) - getCount(arg0); |
|
| 701 |
else |
|
| 702 |
return getCount(arg0) - getCount(arg1); |
|
| 703 |
} |
|
| 704 |
}); |
|
| 705 |
} |
|
| 706 |
|
|
| 707 |
/* (non-Javadoc) |
|
| 708 |
* @see java.lang.Object#toString() |
|
| 709 |
*/ |
|
| 710 |
@Override |
|
| 711 |
public String toString() {
|
|
| 712 |
return linepropvalue+" : <"+id+","+pProperty+"> : "+references.toString(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ |
|
| 713 |
} |
|
| 714 |
} |
|
| 715 |
|
|
| 716 |
public void setQuery(Query query) {
|
|
| 717 |
this.pQuery = query; |
|
| 718 |
} |
|
| 719 |
|
|
| 720 |
public void setProperty(Property property) {
|
|
| 721 |
this.pProperty = property; |
|
| 722 |
} |
|
| 723 |
|
|
| 724 |
public void setPattern(List<StructuralUnitProperty> properties) {
|
|
| 725 |
this.pPattern = properties; |
|
| 726 |
} |
|
| 727 |
} |
|
| 0 | 728 | |
| tmp/org.txm.referencer.core/src/org/txm/referencer/core/package.html (revision 626) | ||
|---|---|---|
| 1 |
<html> |
|
| 2 |
<body> |
|
| 3 |
<p>Compute an index such as those in books</p> |
|
| 4 |
</body> |
|
| 5 |
</html> |
|
| 0 | 6 | |
| tmp/org.txm.groovy.core/src/groovy/org/txm/test/References.groovy (revision 626) | ||
|---|---|---|
| 50 | 50 |
|
| 51 | 51 |
//we import the packages containing the functions we are going to use |
| 52 | 52 |
import org.txm.Toolbox |
| 53 |
import org.txm.referencer.core.functions.Referencer; |
|
| 53 | 54 |
import org.txm.searchengine.cqp.corpus.* |
| 54 | 55 |
import org.txm.searchengine.cqp.corpus.query.* |
| 55 | 56 |
import org.txm.functions.referencer.* |
| tmp/org.txm.groovy.core/src/groovy/org/txm/test/CQPBenchmark.groovy (revision 626) | ||
|---|---|---|
| 49 | 49 |
import org.txm.functions.diagnostic.*; |
| 50 | 50 |
import org.txm.functions.ca.*; |
| 51 | 51 |
import org.txm.functions.index.*; |
| 52 |
import org.txm.functions.referencer.Referencer; |
|
| 53 | 52 |
import org.txm.functions.specificities.*; |
| 54 | 53 |
import org.txm.functions.concordances.*; |
| 55 | 54 |
import org.txm.functions.concordances.comparators.*; |
| 55 |
import org.txm.referencer.core.functions.Referencer; |
|
| 56 | 56 |
import org.txm.searchengine.cqp.ReferencePattern |
| 57 | 57 |
import org.txm.searchengine.cqp.corpus.*; |
| 58 | 58 |
import org.txm.searchengine.cqp.corpus.query.*; |
| tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/editors/LexicalTableEditor.java (revision 626) | ||
|---|---|---|
| 141 | 141 |
|
| 142 | 142 |
// super.createPartControl(parent); |
| 143 | 143 |
|
| 144 |
lexicalTable = (LexicalTable) this.getResultData();
|
|
| 144 |
lexicalTable = (LexicalTable) this.getResult(); |
|
| 145 | 145 |
//iTable = lexicalTable.getData(); |
| 146 | 146 |
|
| 147 | 147 |
|
| ... | ... | |
| 408 | 408 |
|
| 409 | 409 |
this.updateEditorFromResult(false); |
| 410 | 410 |
|
| 411 |
this.createContextMenu(viewer); |
|
| 411 |
// Register the context menu |
|
| 412 |
TXMEditorPart.initContextMenu(this.viewer.getTable(), "LexicalTableEditorContextMenu", this.getSite(), this.viewer); // $NON-NLS-1$ |
|
| 413 |
|
|
| 412 | 414 |
|
| 413 | 415 |
//this.commandParametersGroup.pack(); |
| 414 | 416 |
} |
| ... | ... | |
| 462 | 464 |
this.viewer.getTable().setFocus(); |
| 463 | 465 |
} |
| 464 | 466 |
|
| 465 |
/** |
|
| 466 |
* Creates the context menu. |
|
| 467 |
* |
|
| 468 |
* @param tableViewer the table viewer |
|
| 469 |
*/ |
|
| 470 |
private void createContextMenu(TableViewer tableViewer) {
|
|
| 471 |
|
|
| 472 |
MenuManager menuManager = new MenuManager(); |
|
| 473 |
Menu menu = menuManager.createContextMenu(tableViewer.getTable()); |
|
| 474 |
tableViewer.getTable().setMenu(menu); |
|
| 475 |
getSite().registerContextMenu(menuManager, tableViewer); |
|
| 476 |
getSite().setSelectionProvider(tableViewer); |
|
| 477 |
} |
|
| 478 |
|
|
| 479 | 467 |
|
| 480 | 468 |
/** |
| 481 | 469 |
* Sets the col comparator. |
| tmp/org.txm.lexicaltable.rcp/plugin.xml (revision 626) | ||
|---|---|---|
| 81 | 81 |
</command> |
| 82 | 82 |
</menuContribution> |
| 83 | 83 |
<menuContribution |
| 84 |
locationURI="popup:LexicalTableEditor"> |
|
| 84 |
locationURI="popup:LexicalTableEditorContextMenu">
|
|
| 85 | 85 |
<command |
| 86 | 86 |
commandId="org.txm.lexicaltable.rcp.handlers.DeleteLines" |
| 87 | 87 |
style="push"> |
| tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/___LexicalTableFactory.java (revision 626) | ||
|---|---|---|
| 1 |
package org.txm.lexicaltable.core.functions; |
|
| 2 |
|
|
| 3 |
import java.util.ArrayList; |
|
| 4 |
import java.util.HashMap; |
|
| 5 |
import java.util.List; |
|
| 6 |
import java.util.Map; |
|
| 7 |
|
|
| 8 |
import org.txm.lexicaltable.core.statsengine.r.data.LexicalTableImpl; |
|
| 9 |
import org.txm.lexicon.core.functions.Lexicon; |
|
| 10 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
|
| 11 |
import org.txm.searchengine.cqp.corpus.Corpus; |
|
| 12 |
import org.txm.searchengine.cqp.corpus.Partition; |
|
| 13 |
import org.txm.searchengine.cqp.corpus.Property; |
|
| 14 |
import org.txm.searchengine.cqp.corpus.Subcorpus; |
|
| 15 |
import org.txm.statsengine.r.core.exceptions.RWorkspaceException; |
|
| 16 |
|
|
| 17 |
// FIXME: became useless? |
|
| 18 |
@Deprecated |
|
| 19 |
public class ___LexicalTableFactory {
|
|
| 20 |
|
|
| 21 |
/** |
|
| 22 |
* Create a Complete Lexical Table according to a Partition and a Property. |
|
| 23 |
* |
|
| 24 |
* @param partition the partition |
|
| 25 |
* @param analysisProperty the analysis property |
|
| 26 |
* @param fMin the fmin |
|
| 27 |
* @param vmax |
|
| 28 |
* @return the lexical table |
|
| 29 |
* @throws CqiClientException the cqi client exception |
|
| 30 |
* @throws RWorkspaceException the r workspace exception |
|
| 31 |
*/ |
|
| 32 |
public static final LexicalTable getLexicalTable(Partition partition, Property analysisProperty, int fMin, int vMax) throws Exception {
|
|
| 33 |
//long time = System.currentTimeMillis(); |
|
| 34 |
List<Lexicon> lexicons = new ArrayList<Lexicon>(); |
|
| 35 |
// Set<String> allLexiconEntry = new HashSet<String>(); |
|
| 36 |
for (int i = 0; i < partition.getNPart(); i++) {
|
|
| 37 |
Lexicon l = new Lexicon(partition.getParts().get(i)); |
|
| 38 |
l.setProperty(analysisProperty); |
|
| 39 |
l.compute(null); |
|
| 40 |
lexicons.add(l); |
|
| 41 |
} |
|
| 42 |
//System.out.println("time lexicon build "+(System.currentTimeMillis()-time));
|
|
| 43 |
//time = System.currentTimeMillis(); |
|
| 44 |
// String[] entries = allLexiconEntry.toArray(new String[]{});
|
|
| 45 |
Corpus c = partition.getCorpus(); |
|
| 46 |
Lexicon ll = new Lexicon(c); |
|
| 47 |
ll.setProperty(analysisProperty); |
|
| 48 |
ll.compute(null); |
|
| 49 |
|
|
| 50 |
ArrayList<String> filteredForms = new ArrayList<String>(); |
|
| 51 |
//create a copy and filter line with Fmin; |
|
| 52 |
for (int i = 0 ; i < ll.getFreq().length ; i++) {
|
|
| 53 |
if (ll.getFreq()[i] >= fMin) {
|
|
| 54 |
filteredForms.add(ll.getForms()[i]); |
|
| 55 |
} |
|
| 56 |
} |
|
| 57 |
//System.out.println("remove freq too low "+(System.currentTimeMillis()-time));
|
|
| 58 |
//time = System.currentTimeMillis(); |
|
| 59 |
Map<String, Integer> entries2index = new HashMap<String, Integer>(); |
|
| 60 |
for (int i = 0; i < filteredForms.size(); i++) {
|
|
| 61 |
entries2index.put(filteredForms.get(i), i); |
|
| 62 |
} |
|
| 63 |
|
|
| 64 |
//System.out.println("entries2index "+(System.currentTimeMillis()-time));
|
|
| 65 |
//time = System.currentTimeMillis(); |
|
| 66 |
int[][] mat = new int[filteredForms.size()][lexicons.size()];//DoubleFactory2D.sparse.make(filteredForms.size(), lexicons.size(), 0); |
|
| 67 |
|
|
| 68 |
|
|
| 69 |
Integer id= null; |
|
| 70 |
for (int i = 0; i < lexicons.size(); i++) {
|
|
| 71 |
Lexicon l = lexicons.get(i); |
|
| 72 |
String[] ents = l.getForms(); |
|
| 73 |
int[] freqs = l.getFreq(); |
|
| 74 |
for (int j = 0; j < freqs.length; j++) {
|
|
| 75 |
id = entries2index.get(ents[j]); |
|
| 76 |
// if (entriesFreqs[id] >= 2) |
|
| 77 |
if (id != null) {
|
|
| 78 |
mat[id][i] = freqs[j]; //mat.setQuick(id, i, freqs[j]); |
|
| 79 |
} |
|
| 80 |
} |
|
| 81 |
} |
|
| 82 |
//System.out.println("time build matrix "+(System.currentTimeMillis()-time));
|
|
| 83 |
//time = System.currentTimeMillis(); |
|
| 84 |
//System.out.println("Entries size " + filteredForms.size());
|
|
| 85 |
//System.out.println("mat size " + mat.rows());
|
|
| 86 |
//System.out.println("mat columns " + mat.columns());
|
|
| 87 |
|
|
| 88 |
LexicalTableImpl iTable = new LexicalTableImpl(mat, filteredForms.toArray(new String[]{}), partition.getPartShortNames().toArray(new String[] {}));
|
|
| 89 |
|
|
| 90 |
LexicalTable table = new LexicalTable(partition, analysisProperty, fMin, vMax, iTable); |
|
| 91 |
//System.out.println("time build table lexical "+(System.currentTimeMillis()-time));
|
|
| 92 |
return table; |
|
| 93 |
} |
|
| 94 |
|
|
| 95 |
/** |
|
| 96 |
* |
|
| 97 |
* @param subcorpus |
|
| 98 |
* @param property |
|
| 99 |
* @return |
|
| 100 |
* @throws Exception |
|
| 101 |
*/ |
|
| 102 |
public static LexicalTable getLexicalTable(Subcorpus subcorpus, Property property) throws Exception {
|
|
| 103 |
return new LexicalTable(subcorpus, property); |
|
| 104 |
} |
|
| 105 |
} |
|
| tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java (revision 626) | ||
|---|---|---|
| 149 | 149 |
this.statsData = iTable; |
| 150 | 150 |
} |
| 151 | 151 |
|
| 152 |
/** |
|
| 153 |
* Creates the lexical table. |
|
| 154 |
* |
|
| 155 |
* @param partindex the partindex |
|
| 156 |
* @return the lexical table |
|
| 157 |
* @throws RWorkspaceException the r workspace exception |
|
| 158 |
*/ |
|
| 159 |
// FIXME: not used? |
|
| 160 |
public LexicalTable(Index partIndex) throws RWorkspaceException {
|
|
| 161 |
super(partIndex); |
|
| 162 |
this.pProperty = partIndex.getProperties().get(0); |
|
| 163 |
} |
|
| 164 |
|
|
| 165 | 152 |
|
| 166 | 153 |
@Override |
| 167 | 154 |
public boolean loadParameters() {
|
| tmp/org.txm.internalview.rcp/.settings/org.eclipse.core.resources.prefs (revision 626) | ||
|---|---|---|
| 1 | 1 |
eclipse.preferences.version=1 |
| 2 |
encoding//src/org/txm/internalview/rcp/messages.properties=UTF-8 |
|
| 3 |
encoding//src/org/txm/internalview/rcp/messages_fr.properties=UTF-8 |
|
| 4 |
encoding//src/org/txm/internalview/rcp/messages_ru.properties=UTF-8 |
|
| 2 |
encoding//src/org/txm/internalview/rcp/messages/messages.properties=UTF-8 |
|
| 3 |
encoding//src/org/txm/internalview/rcp/messages/messages_fr.properties=UTF-8 |
|
| 4 |
encoding//src/org/txm/internalview/rcp/messages/messages_ru.properties=UTF-8 |
|
| tmp/org.txm.internalview.rcp/META-INF/MANIFEST.MF (revision 626) | ||
|---|---|---|
| 8 | 8 |
org.txm.rcp;bundle-version="0.8.0";visibility:=reexport, |
| 9 | 9 |
org.txm.concordance.core;bundle-version="1.0.0";visibility:=reexport, |
| 10 | 10 |
org.eclipse.osgi;visibility:=reexport |
| 11 |
Export-Package: org.txm.internal.rcp.editors, |
|
| 12 |
org.txm.internalview.rcp, |
|
| 13 |
org.txm.rcp.internal.rcp.handler |
|
| 11 |
Export-Package: org.txm.internalview.rcp.adapters, |
|
| 12 |
org.txm.internalview.rcp.editors, |
|
| 13 |
org.txm.internalview.rcp.handlers, |
|
| 14 |
org.txm.internalview.rcp.messages |
|
| tmp/org.txm.internalview.rcp/src/org/txm/internalview/rcp/messages_fr.properties (revision 626) | ||
|---|---|---|
| 1 |
InternalViewEditor_1 = Calcul de la vue interne... |
|
| 2 |
InternalViewEditor_10 = InternalView: erreur d'initialisation : |
|
| 3 |
InternalViewEditor_11 = OK |
|
| 4 |
InternalViewEditor_16 = Erreur |
|
| 5 |
InternalViewEditor_2 = Récupération du prochain résultat... |
|
| 6 |
InternalViewEditor_25 = requête générée : |
|
| 7 |
InternalViewEditor_3 = Rechargement de l'interface |
|
| 8 |
InternalViewEditor_4 = Structure : |
|
| 9 |
InternalViewEditor_5 = Propriété de structure : |
|
| tmp/org.txm.internalview.rcp/src/org/txm/internalview/rcp/messages.properties (revision 626) | ||
|---|---|---|
| 1 |
|
|
| 2 |
ComputeInternalView_0 = Selection is not structured |
|
| 3 |
ComputeInternalView_1 = Error: selection is not a Corpus |
|
| 4 |
|
|
| 5 |
InternalViewEditor_1 = Computing Internal view |
|
| 6 |
InternalViewEditor_10 = InternalView: failed to initialize form |
|
| 7 |
InternalViewEditor_11 = OK |
|
| 8 |
InternalViewEditor_16 = error |
|
| 9 |
InternalViewEditor_2 = Getting next result |
|
| 10 |
InternalViewEditor_25 = QUERY: |
|
| 11 |
InternalViewEditor_3 = Refreshing interface |
|
| 12 |
InternalViewEditor_4 = Structure: |
|
| 13 |
InternalViewEditor_5 = Structural properties: |
|
| tmp/org.txm.internalview.rcp/src/org/txm/internalview/rcp/Messages.java (revision 626) | ||
|---|---|---|
| 1 |
package org.txm.internalview.rcp; |
|
| 2 |
|
|
| 3 |
import org.eclipse.osgi.util.NLS; |
|
| 4 |
import org.txm.utils.messages.Utf8NLS; |
|
| 5 |
|
|
| 6 |
public class Messages extends NLS {
|
|
| 7 |
|
|
| 8 |
private static final String BUNDLE_NAME = Messages.class.getPackage().getName()+".messages"; //$NON-NLS-1$ |
|
| 9 |
|
|
| 10 |
public static String ComputeInternalView_0; |
|
| 11 |
public static String ComputeInternalView_1; |
|
| 12 |
|
|
| 13 |
public static String InternalViewEditor_1; |
|
| 14 |
public static String InternalViewEditor_10; |
|
| 15 |
public static String InternalViewEditor_11; |
|
| 16 |
public static String InternalViewEditor_16; |
|
| 17 |
public static String InternalViewEditor_2; |
|
| 18 |
public static String InternalViewEditor_25; |
|
| 19 |
public static String InternalViewEditor_3; |
|
| 20 |
public static String InternalViewEditor_4; |
|
| 21 |
public static String InternalViewEditor_5; |
|
| 22 |
|
|
| 23 |
static {
|
|
| 24 |
// initialize resource bundle |
|
| 25 |
Utf8NLS.initializeMessages(BUNDLE_NAME, Messages.class); |
|
| 26 |
} |
|
| 27 |
} |
|
| tmp/org.txm.internalview.rcp/src/org/txm/internalview/rcp/AdapterFactory.java (revision 626) | ||
|---|---|---|
| 1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
| 2 |
package org.txm.internalview.rcp; |
|
| 3 |
|
|
| 4 |
import org.eclipse.jface.resource.ImageDescriptor; |
|
| 5 |
import org.eclipse.ui.model.IWorkbenchAdapter; |
|
| 6 |
import org.eclipse.ui.plugin.AbstractUIPlugin; |
|
| 7 |
import org.txm.functions.internal.InternalView; |
|
| 8 |
import org.txm.internal.rcp.editors.InternalViewEditor; |
|
Formats disponibles : Unified diff