Révision 822
| tmp/org.txm.progression.rcp/src/org/txm/progression/rcp/editors/ProgressionEditor.java (revision 822) | ||
|---|---|---|
| 51 | 51 |
*/ |
| 52 | 52 |
public class ProgressionEditor extends ChartEditor<Progression> {
|
| 53 | 53 |
|
| 54 |
|
|
| 55 | 54 |
/** The query widgets. */ |
| 56 | 55 |
protected List<QueryField> queryWidgets = new ArrayList<QueryField>(); |
| 57 | 56 |
|
| ... | ... | |
| 200 | 199 |
if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
|
| 201 | 200 |
if (queryWidget.getRawString().length() > 0 && onPlusButtonPressed(null, queryWidget.getRawString())) {
|
| 202 | 201 |
super.keyPressed(e); // recompute only if the query has been added |
| 202 |
queryWidget.setText("");
|
|
| 203 | 203 |
} |
| 204 | 204 |
} |
| 205 | 205 |
} |
| ... | ... | |
| 214 | 214 |
public void widgetSelected(SelectionEvent e) {
|
| 215 | 215 |
if (queryWidget.getRawString().length() > 0 && onPlusButtonPressed(null, queryWidget.getRawString())) {
|
| 216 | 216 |
compute(true); |
| 217 |
queryWidget.setText("");
|
|
| 217 | 218 |
} |
| 218 | 219 |
} |
| 219 | 220 |
|
| tmp/org.txm.information.rcp/src/org/txm/properties/rcp/editors/PropertiesEditor.java (revision 822) | ||
|---|---|---|
| 1 | 1 |
package org.txm.properties.rcp.editors; |
| 2 | 2 |
|
| 3 | 3 |
import java.io.File; |
| 4 |
import java.net.MalformedURLException; |
|
| 4 | 5 |
|
| 5 | 6 |
import org.eclipse.jface.layout.GridDataFactory; |
| 6 | 7 |
import org.eclipse.swt.SWT; |
| ... | ... | |
| 133 | 134 |
} |
| 134 | 135 |
|
| 135 | 136 |
@Override |
| 136 |
public void updateEditorFromResult(boolean update) {
|
|
| 137 |
public void updateEditorFromResult(boolean update) throws Exception {
|
|
| 137 | 138 |
File file = this.getResult().getHTMLFile(); |
| 138 | 139 |
if (file.exists()) {
|
| 139 |
this.browser.setUrl(file.getAbsolutePath());
|
|
| 140 |
this.browser.setUrl(file.toURI().toURL().toString());
|
|
| 140 | 141 |
} |
| 141 | 142 |
else {
|
| 142 | 143 |
Log.severe("Information HTML file doesn't exist."); //$NON-NLS-1$
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java (revision 822) | ||
|---|---|---|
| 517 | 517 |
this.syncExec(new Runnable() {
|
| 518 | 518 |
@Override |
| 519 | 519 |
public void run() {
|
| 520 |
refresh(update); |
|
| 520 |
try {
|
|
| 521 |
refresh(update); |
|
| 522 |
} catch (Exception e) {
|
|
| 523 |
System.out.println("Error while refreshing editor: "+e);
|
|
| 524 |
Log.printStackTrace(e); |
|
| 525 |
} |
|
| 521 | 526 |
} |
| 522 | 527 |
}); |
| 523 | 528 |
|
| ... | ... | |
| 590 | 595 |
* Synchronizes the editor with the result and refreshes the corpus view. |
| 591 | 596 |
* Also fires a dirty property change. |
| 592 | 597 |
* @param update |
| 598 |
* @throws Exception |
|
| 593 | 599 |
*/ |
| 594 |
public final void refresh(boolean update) {
|
|
| 600 |
public final void refresh(boolean update) throws Exception {
|
|
| 595 | 601 |
if (!createPartControlDoneSucessfully) return; // no refresh |
| 596 | 602 |
|
| 597 | 603 |
// FIXME: result should never be null? |
| ... | ... | |
| 640 | 646 |
* Dedicated to dynamically change the editor components from the stored result. |
| 641 | 647 |
* <p> |
| 642 | 648 |
* Use this method if you need to save parameter with Type not managed by the autoUpdateEditorFieldsFromResult method |
| 649 |
* @throws Exception |
|
| 643 | 650 |
*/ |
| 644 |
public abstract void updateEditorFromResult(boolean update); |
|
| 651 |
public abstract void updateEditorFromResult(boolean update) throws Exception;
|
|
| 645 | 652 |
|
| 646 | 653 |
|
| 647 | 654 |
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/PropertiesComboViewer.java (revision 822) | ||
|---|---|---|
| 64 | 64 |
* @param selectedProperty |
| 65 | 65 |
* @param addBlankEntry |
| 66 | 66 |
*/ |
| 67 |
public PropertiesComboViewer(Composite parent, TXMEditor editor, boolean autoCompute, List<? extends Property> properties, Property selectedProperty, boolean addBlankEntry) {
|
|
| 67 |
public PropertiesComboViewer(Composite parent, TXMEditor<? extends TXMResult> editor, boolean autoCompute, List<? extends Property> properties, Property selectedProperty, boolean addBlankEntry) {
|
|
| 68 | 68 |
this(parent, SWT.READ_ONLY, editor, autoCompute, properties, selectedProperty, addBlankEntry); |
| 69 | 69 |
} |
| 70 | 70 |
|
| ... | ... | |
| 88 | 88 |
this.setSelection(new StructuredSelection(selectedProperty), true); |
| 89 | 89 |
} |
| 90 | 90 |
} |
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 | 91 |
} |
| tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/RWorkspace.java (revision 822) | ||
|---|---|---|
| 344 | 344 |
isRServerOk = StartRserve.launchRserve(pathToRExecutable, port, debug, rargs, rServeArgs); |
| 345 | 345 |
// System.out.println("ap launchRserve");
|
| 346 | 346 |
if (!isRServerOk) {
|
| 347 |
System.out.println("Rserve not started with "+pathToRExecutable+". Trying with commons R installation paths (will works if Rserve, textometry and FactoMineR are installed).");
|
|
| 348 |
isRServerOk = StartRserve.checkLocalRserve(port, debug, rargs, rServeArgs); |
|
| 349 |
} |
|
| 350 |
|
|
| 351 |
if (!isRServerOk) {
|
|
| 347 | 352 |
throw new RWorkspaceException(RCoreMessages.bind(RCoreMessages.error_cantFindRServeInPath, pathToRExecutable)); |
| 348 | 353 |
} |
| 349 | 354 |
} |
| tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/StartRserve.java (revision 822) | ||
|---|---|---|
| 224 | 224 |
return true; |
| 225 | 225 |
} |
| 226 | 226 |
|
| 227 |
// R not in the PATH env, try with R common paths |
|
| 227 |
// R not in the PATH env, try with R common installation paths
|
|
| 228 | 228 |
String[] paths = {
|
| 229 |
"/usr/lib/TXM/R/bin/R", //$NON-NLS-1$ |
|
| 230 |
"/Applications/TXM/R/bin/R", //$NON-NLS-1$ |
|
| 231 | 229 |
"/Library/Frameworks/R.framework/Resources/bin/R", //$NON-NLS-1$ |
| 232 | 230 |
"/usr/local/lib/R/bin/R", //$NON-NLS-1$ |
| 233 | 231 |
"/usr/lib/R/bin/R", //$NON-NLS-1$ |
| tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java (revision 822) | ||
|---|---|---|
| 43 | 43 |
import org.eclipse.swt.widgets.Shell; |
| 44 | 44 |
import org.eclipse.ui.handlers.HandlerUtil; |
| 45 | 45 |
import org.txm.Toolbox; |
| 46 |
import org.txm.core.preferences.TBXPreferences; |
|
| 47 | 46 |
import org.txm.rcp.messages.TXMUIMessages; |
| 48 | 47 |
import org.txm.rcp.swt.dialog.LastOpened; |
| 49 | 48 |
import org.txm.rcp.utils.JobHandler; |
| 50 | 49 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
| 51 | 50 |
|
| 52 |
// TODO: Auto-generated Javadoc |
|
| 53 | 51 |
/** |
| 54 |
* Call the function Information on a MainCorpus, a SubCorpus and a Partition |
|
| 55 |
* show basic stats and give some properties values @ author mdecorde. |
|
| 52 |
* Export a corpus to the .txm binary format (Zip) |
|
| 56 | 53 |
*/ |
| 57 | 54 |
public class ExportCorpus extends AbstractHandler {
|
| 58 | 55 |
|
| tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/handlers/MergeLines.java (revision 822) | ||
|---|---|---|
| 119 | 119 |
|
| 120 | 120 |
LTeditor.refreshTable(); |
| 121 | 121 |
lineTableViewer.getTable().deselectAll(); |
| 122 |
LTeditor.refresh(false); |
|
| 122 |
try {
|
|
| 123 |
LTeditor.refresh(false); |
|
| 124 |
} catch (Exception e) {
|
|
| 125 |
// TODO Auto-generated catch block |
|
| 126 |
e.printStackTrace(); |
|
| 127 |
} |
|
| 123 | 128 |
StatusLine.setMessage(""); //$NON-NLS-1$
|
| 124 | 129 |
} |
| 125 | 130 |
} |
| tmp/org.txm.lexicaltable.rcp/src/org/txm/lexicaltable/rcp/handlers/DeleteLines.java (revision 822) | ||
|---|---|---|
| 91 | 91 |
|
| 92 | 92 |
LTeditor.refreshTable(); |
| 93 | 93 |
LTeditor.getlineTableViewer().getTable().deselectAll(); |
| 94 |
LTeditor.refresh(false); |
|
| 94 |
try {
|
|
| 95 |
LTeditor.refresh(false); |
|
| 96 |
} catch (Exception e) {
|
|
| 97 |
// TODO Auto-generated catch block |
|
| 98 |
e.printStackTrace(); |
|
| 99 |
} |
|
| 95 | 100 |
} |
| 96 | 101 |
|
| 97 | 102 |
} |
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/cqp/ListMatchesMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto.cqp |
|
| 3 |
|
|
| 4 |
import org.kohsuke.args4j.* |
|
| 5 |
import groovy.transform.Field |
|
| 6 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 7 |
import org.txm.Toolbox |
|
| 8 |
import org.txm.searchengine.cqp.* |
|
| 9 |
import org.txm.searchengine.cqp.corpus.* |
|
| 10 |
import org.txm.utils.* |
|
| 11 |
|
|
| 12 |
if (!(corpusViewSelection instanceof Corpus)) {
|
|
| 13 |
println "Selection is not a Corpus: $corpusViewSelection" |
|
| 14 |
return false |
|
| 15 |
} |
|
| 16 |
|
|
| 17 |
println corpusViewSelection.getMatches() |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/cqp/ListSubcorpusMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto.cqp |
|
| 3 |
|
|
| 4 |
import org.kohsuke.args4j.* |
|
| 5 |
import groovy.transform.Field |
|
| 6 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 7 |
import org.txm.Toolbox |
|
| 8 |
import org.txm.searchengine.cqp.* |
|
| 9 |
import org.txm.searchengine.cqp.corpus.* |
|
| 10 |
import org.txm.utils.* |
|
| 11 |
|
|
| 12 |
if (!(corpusViewSelection instanceof Corpus)) {
|
|
| 13 |
println "Selection is not a Corpus: $corpusViewSelection" |
|
| 14 |
return false |
|
| 15 |
} |
|
| 16 |
|
|
| 17 |
def CQI = Toolbox.getCqiClient(); |
|
| 18 |
if ((CQI instanceof NetCqiClient)) {
|
|
| 19 |
println "Error: only available in CQP memory mode" |
|
| 20 |
return; |
|
| 21 |
} |
|
| 22 |
|
|
| 23 |
@Field @Option(name="subcorpusname", usage="an example file", widget="String", required=true, def="A") |
|
| 24 |
def subcorpusname |
|
| 25 |
@Field @Option(name="inputFile", usage="an example file", widget="FileOpen", required=true, def="C:/Temp/foo.txt") |
|
| 26 |
def inputFile |
|
| 27 |
@Field @Option(name="replace", usage="an example file", widget="Boolean", required=true, def="true") |
|
| 28 |
def replace |
|
| 29 |
|
|
| 30 |
// Open the parameters input dialog box |
|
| 31 |
if (!ParametersDialog.open(this)) return; |
|
| 32 |
|
|
| 33 |
// END OF PARAMETERS |
|
| 34 |
|
|
| 35 |
println "corpora selection: "+corpusViewSelection |
|
| 36 |
|
|
| 37 |
MainCorpus maincorpus = corpusViewSelection.getMainCorpus() |
|
| 38 |
def existing = CQI.listSubcorpora(maincorpus.getQualifiedCqpId()) |
|
| 39 |
println existing |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/cqp/SaveSubCorpusMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto.cqp |
|
| 3 |
|
|
| 4 |
import org.kohsuke.args4j.* |
|
| 5 |
import groovy.transform.Field |
|
| 6 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 7 |
import org.txm.Toolbox |
|
| 8 |
import org.txm.searchengine.cqp.* |
|
| 9 |
import org.txm.searchengine.cqp.corpus.* |
|
| 10 |
import org.txm.utils.* |
|
| 11 |
|
|
| 12 |
if (!(corpusViewSelection instanceof Subcorpus)) {
|
|
| 13 |
println "Selection is not a Corpus: $corpusViewSelection" |
|
| 14 |
return false |
|
| 15 |
} |
|
| 16 |
|
|
| 17 |
def CQI = Toolbox.getCqiClient(); |
|
| 18 |
if ((CQI instanceof NetCqiClient)) {
|
|
| 19 |
println "Error: only available in CQP memory mode" |
|
| 20 |
return; |
|
| 21 |
} |
|
| 22 |
|
|
| 23 |
@Field @Option(name="outputDir", usage="an example file", widget="Folder", required=true, def="") |
|
| 24 |
def outputDir |
|
| 25 |
|
|
| 26 |
// Open the parameters input dialog box |
|
| 27 |
if (!ParametersDialog.open(this)) return; |
|
| 28 |
|
|
| 29 |
// END OF PARAMETERS |
|
| 30 |
|
|
| 31 |
println "corpora selection: "+corpusViewSelection |
|
| 32 |
|
|
| 33 |
MainCorpus maincorpus = corpusViewSelection.getMainCorpus() |
|
| 34 |
File outputFile = new File(outputDir, corpusViewSelection.getQualifiedCqpId()) |
|
| 35 |
File regFile = new File(maincorpus.getBaseDirectory(), "registry") |
|
| 36 |
if (!regFile.exists()) {
|
|
| 37 |
println "Could not find corpus registry file $regFile" |
|
| 38 |
return |
|
| 39 |
} |
|
| 40 |
|
|
| 41 |
def outputStream = new FileOutputStream(outputFile); |
|
| 42 |
LittleEndianOutputStream outputStreamBin = new LittleEndianOutputStream(outputStream); |
|
| 43 |
|
|
| 44 |
outputStreamBin.writeInt(36193928+1); |
|
| 45 |
outputStreamBin.writeBytes(regFile.getAbsolutePath()+"/"); |
|
| 46 |
outputStreamBin.write(0) |
|
| 47 |
outputStreamBin.writeBytes(maincorpus.getName()); |
|
| 48 |
//outputStreamBin.write(0) |
|
| 49 |
l2 = outputStreamBin.size()-3 |
|
| 50 |
|
|
| 51 |
//for (int i = 0; (i+l2)%4 != 0; i++) |
|
| 52 |
outputStreamBin.writeInt(0); |
|
| 53 |
|
|
| 54 |
def matches = corpusViewSelection.getMatches() |
|
| 55 |
outputStreamBin.writeInt(matches.size()) |
|
| 56 |
|
|
| 57 |
for (def match : matches) {
|
|
| 58 |
outputStreamBin.writeInt(match.getStart()); |
|
| 59 |
outputStreamBin.writeInt(match.getEnd()); |
|
| 60 |
} |
|
| 61 |
|
|
| 62 |
outputStreamBin.writeInt(0) // sortidx |
|
| 63 |
outputStreamBin.writeInt(0) // targets |
|
| 64 |
outputStreamBin.writeInt(0) // keywords |
|
| 65 |
outputStreamBin.close() |
|
| 66 |
|
|
| 67 |
println "Subcorpus saved in "+outputFile.getAbsolutePath() |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/cqp/LittleEndianOutputStream.groovy (revision 822) | ||
|---|---|---|
| 1 |
/* |
|
| 2 |
* @(#)LittleEndianOutputStream.java 1.0.1 99/05/19 |
|
| 3 |
* |
|
| 4 |
* Copyright 1998, 1999 Elliotte Rusty Harold |
|
| 5 |
* |
|
| 6 |
*/ |
|
| 7 |
|
|
| 8 |
package org.txm.macroproto.cqp; |
|
| 9 |
|
|
| 10 |
/** |
|
| 11 |
* A little endian output stream writes primitive Java numbers |
|
| 12 |
* and characters to an output stream in a little endian format. |
|
| 13 |
* The standard java.io.DataOutputStream class which this class |
|
| 14 |
* imitates uses big-endian integers. |
|
| 15 |
* |
|
| 16 |
* @author Elliotte Rusty Harold |
|
| 17 |
* @version 1.0.1, 19 May 1999 |
|
| 18 |
* @see com.macfaq.io.LittleEndianInputStream |
|
| 19 |
* @see java.io.DataOutputStream |
|
| 20 |
*/ |
|
| 21 |
public class LittleEndianOutputStream extends FilterOutputStream {
|
|
| 22 |
|
|
| 23 |
/** |
|
| 24 |
* The number of bytes written so far to the little endian output stream. |
|
| 25 |
*/ |
|
| 26 |
protected int written; |
|
| 27 |
|
|
| 28 |
/** |
|
| 29 |
* Creates a new little endian output stream and chains it to the |
|
| 30 |
* output stream specified by the out argument. |
|
| 31 |
* |
|
| 32 |
* @param out the underlying output stream. |
|
| 33 |
* @see java.io.FilterOutputStream#out |
|
| 34 |
*/ |
|
| 35 |
public LittleEndianOutputStream(OutputStream out) {
|
|
| 36 |
super(out); |
|
| 37 |
} |
|
| 38 |
|
|
| 39 |
/** |
|
| 40 |
* Writes the specified byte value to the underlying output stream. |
|
| 41 |
* |
|
| 42 |
* @param b the <code>byte</code> value to be written. |
|
| 43 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 44 |
*/ |
|
| 45 |
public synchronized void write(int b) throws IOException {
|
|
| 46 |
out.write(b); |
|
| 47 |
written++; |
|
| 48 |
} |
|
| 49 |
|
|
| 50 |
/** |
|
| 51 |
* Writes <code>length</code> bytes from the specified byte array |
|
| 52 |
* starting at <code>offset</code> to the underlying output stream. |
|
| 53 |
* |
|
| 54 |
* @param data the data. |
|
| 55 |
* @param offset the start offset in the data. |
|
| 56 |
* @param length the number of bytes to write. |
|
| 57 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 58 |
*/ |
|
| 59 |
public synchronized void write(byte[] data, int offset, int length) |
|
| 60 |
throws IOException {
|
|
| 61 |
out.write(data, offset, length); |
|
| 62 |
written += length; |
|
| 63 |
} |
|
| 64 |
|
|
| 65 |
|
|
| 66 |
/** |
|
| 67 |
* Writes a <code>boolean</code> to the underlying output stream as |
|
| 68 |
* a single byte. If the argument is true, the byte value 1 is written. |
|
| 69 |
* If the argument is false, the byte value <code>0</code> in written. |
|
| 70 |
* |
|
| 71 |
* @param b the <code>boolean</code> value to be written. |
|
| 72 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 73 |
*/ |
|
| 74 |
public void writeBoolean(boolean b) throws IOException {
|
|
| 75 |
|
|
| 76 |
if (b) this.write(1); |
|
| 77 |
else this.write(0); |
|
| 78 |
|
|
| 79 |
} |
|
| 80 |
|
|
| 81 |
/** |
|
| 82 |
* Writes out a <code>byte</code> to the underlying output stream |
|
| 83 |
* |
|
| 84 |
* @param b the <code>byte</code> value to be written. |
|
| 85 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 86 |
*/ |
|
| 87 |
public void writeByte(int b) throws IOException {
|
|
| 88 |
out.write(b); |
|
| 89 |
written++; |
|
| 90 |
} |
|
| 91 |
|
|
| 92 |
/** |
|
| 93 |
* Writes a two byte <code>short</code> to the underlying output stream in |
|
| 94 |
* little endian order, low byte first. |
|
| 95 |
* |
|
| 96 |
* @param s the <code>short</code> to be written. |
|
| 97 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 98 |
*/ |
|
| 99 |
public void writeShort(int s) throws IOException {
|
|
| 100 |
|
|
| 101 |
out.write(s & 0xFF); |
|
| 102 |
out.write((s >>> 8) & 0xFF); |
|
| 103 |
written += 2; |
|
| 104 |
|
|
| 105 |
} |
|
| 106 |
|
|
| 107 |
/** |
|
| 108 |
* Writes a two byte <code>char</code> to the underlying output stream |
|
| 109 |
* in little endian order, low byte first. |
|
| 110 |
* |
|
| 111 |
* @param c the <code>char</code> value to be written. |
|
| 112 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 113 |
*/ |
|
| 114 |
public void writeChar(int c) throws IOException {
|
|
| 115 |
|
|
| 116 |
out.write(c & 0xFF); |
|
| 117 |
out.write((c >>> 8) & 0xFF); |
|
| 118 |
written += 2; |
|
| 119 |
|
|
| 120 |
} |
|
| 121 |
|
|
| 122 |
/** |
|
| 123 |
* Writes a four-byte <code>int</code> to the underlying output stream |
|
| 124 |
* in little endian order, low byte first, high byte last |
|
| 125 |
* |
|
| 126 |
* @param i the <code>int</code> to be written. |
|
| 127 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 128 |
*/ |
|
| 129 |
public void writeInt(int i) throws IOException {
|
|
| 130 |
|
|
| 131 |
out.write(i & 0xFF); |
|
| 132 |
out.write((i >>> 8) & 0xFF); |
|
| 133 |
out.write((i >>> 16) & 0xFF); |
|
| 134 |
out.write((i >>> 24) & 0xFF); |
|
| 135 |
written += 4; |
|
| 136 |
|
|
| 137 |
} |
|
| 138 |
|
|
| 139 |
/** |
|
| 140 |
* Writes an eight-byte <code>long</code> to the underlying output stream |
|
| 141 |
* in little endian order, low byte first, high byte last |
|
| 142 |
* |
|
| 143 |
* @param l the <code>long</code> to be written. |
|
| 144 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 145 |
*/ |
|
| 146 |
public void writeLong(long l) throws IOException {
|
|
| 147 |
|
|
| 148 |
out.write((int) l & 0xFF); |
|
| 149 |
out.write((int) (l >>> 8) & 0xFF); |
|
| 150 |
out.write((int) (l >>> 16) & 0xFF); |
|
| 151 |
out.write((int) (l >>> 24) & 0xFF); |
|
| 152 |
out.write((int) (l >>> 32) & 0xFF); |
|
| 153 |
out.write((int) (l >>> 40) & 0xFF); |
|
| 154 |
out.write((int) (l >>> 48) & 0xFF); |
|
| 155 |
out.write((int) (l >>> 56) & 0xFF); |
|
| 156 |
written += 8; |
|
| 157 |
|
|
| 158 |
} |
|
| 159 |
|
|
| 160 |
/** |
|
| 161 |
* Writes a 4 byte Java float to the underlying output stream in |
|
| 162 |
* little endian order. |
|
| 163 |
* |
|
| 164 |
* @param f the <code>float</code> value to be written. |
|
| 165 |
* @exception IOException if an I/O error occurs. |
|
| 166 |
*/ |
|
| 167 |
public final void writeFloat(float f) throws IOException {
|
|
| 168 |
|
|
| 169 |
this.writeInt(Float.floatToIntBits(f)); |
|
| 170 |
|
|
| 171 |
} |
|
| 172 |
|
|
| 173 |
/** |
|
| 174 |
* Writes an 8 byte Java double to the underlying output stream in |
|
| 175 |
* little endian order. |
|
| 176 |
* |
|
| 177 |
* @param d the <code>double</code> value to be written. |
|
| 178 |
* @exception IOException if an I/O error occurs. |
|
| 179 |
*/ |
|
| 180 |
public final void writeDouble(double d) throws IOException {
|
|
| 181 |
|
|
| 182 |
this.writeLong(Double.doubleToLongBits(d)); |
|
| 183 |
|
|
| 184 |
} |
|
| 185 |
|
|
| 186 |
/** |
|
| 187 |
* Writes a string to the underlying output stream as a sequence of |
|
| 188 |
* bytes. Each character is written to the data output stream as |
|
| 189 |
* if by the <code>writeByte()</code> method. |
|
| 190 |
* |
|
| 191 |
* @param s the <code>String</code> value to be written. |
|
| 192 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 193 |
* @see java.io.LittleEndianOutputStream#writeByte(int) |
|
| 194 |
* @see java.io.LittleEndianOutputStream#out |
|
| 195 |
*/ |
|
| 196 |
public void writeBytes(String s) throws IOException {
|
|
| 197 |
|
|
| 198 |
int length = s.length(); |
|
| 199 |
for (int i = 0; i < length; i++) {
|
|
| 200 |
out.write((byte) s.charAt(i)); |
|
| 201 |
} |
|
| 202 |
written += length; |
|
| 203 |
} |
|
| 204 |
|
|
| 205 |
/** |
|
| 206 |
* Writes a string to the underlying output stream as a sequence of |
|
| 207 |
* characters. Each character is written to the data output stream as |
|
| 208 |
* if by the <code>writeChar</code> method. |
|
| 209 |
* |
|
| 210 |
* @param s a <code>String</code> value to be written. |
|
| 211 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 212 |
* @see java.io.LittleEndianOutputStream#writeChar(int) |
|
| 213 |
* @see java.io.LittleEndianOutputStream#out |
|
| 214 |
*/ |
|
| 215 |
public void writeChars(String s) throws IOException {
|
|
| 216 |
|
|
| 217 |
int length = s.length(); |
|
| 218 |
for (int i = 0; i < length; i++) {
|
|
| 219 |
int c = s.charAt(i); |
|
| 220 |
out.write(c & 0xFF); |
|
| 221 |
out.write((c >>> 8) & 0xFF); |
|
| 222 |
} |
|
| 223 |
written += length * 2; |
|
| 224 |
|
|
| 225 |
} |
|
| 226 |
|
|
| 227 |
/** |
|
| 228 |
* Writes a string of no more than 65,535 characters |
|
| 229 |
* to the underlying output stream using UTF-8 |
|
| 230 |
* encoding. This method first writes a two byte short |
|
| 231 |
* in <b>big</b> endian order as required by the |
|
| 232 |
* UTF-8 specification. This gives the number of bytes in the |
|
| 233 |
* UTF-8 encoded version of the string, not the number of characters |
|
| 234 |
* in the string. Next each character of the string is written |
|
| 235 |
* using the UTF-8 encoding for the character. |
|
| 236 |
* |
|
| 237 |
* @param s the string to be written. |
|
| 238 |
* @exception UTFDataFormatException if the string is longer than |
|
| 239 |
* 65,535 characters. |
|
| 240 |
* @exception IOException if the underlying stream throws an IOException. |
|
| 241 |
*/ |
|
| 242 |
public void writeUTF(String s) throws IOException {
|
|
| 243 |
|
|
| 244 |
int numchars = s.length(); |
|
| 245 |
int numbytes = 0; |
|
| 246 |
|
|
| 247 |
for (int i = 0 ; i < numchars ; i++) {
|
|
| 248 |
int c = s.charAt(i); |
|
| 249 |
if ((c >= 0x0001) && (c <= 0x007F)) numbytes++; |
|
| 250 |
else if (c > 0x07FF) numbytes += 3; |
|
| 251 |
else numbytes += 2; |
|
| 252 |
} |
|
| 253 |
|
|
| 254 |
if (numbytes > 65535) throw new UTFDataFormatException(); |
|
| 255 |
|
|
| 256 |
out.write((numbytes >>> 8) & 0xFF); |
|
| 257 |
out.write(numbytes & 0xFF); |
|
| 258 |
for (int i = 0 ; i < numchars ; i++) {
|
|
| 259 |
int c = s.charAt(i); |
|
| 260 |
if ((c >= 0x0001) && (c <= 0x007F)) {
|
|
| 261 |
out.write(c); |
|
| 262 |
} |
|
| 263 |
else if (c > 0x07FF) {
|
|
| 264 |
out.write(0xE0 | ((c >> 12) & 0x0F)); |
|
| 265 |
out.write(0x80 | ((c >> 6) & 0x3F)); |
|
| 266 |
out.write(0x80 | (c & 0x3F)); |
|
| 267 |
written += 2; |
|
| 268 |
} |
|
| 269 |
else {
|
|
| 270 |
out.write(0xC0 | ((c >> 6) & 0x1F)); |
|
| 271 |
out.write(0x80 | (c & 0x3F)); |
|
| 272 |
written += 1; |
|
| 273 |
} |
|
| 274 |
} |
|
| 275 |
|
|
| 276 |
written += numchars + 2; |
|
| 277 |
|
|
| 278 |
} |
|
| 279 |
|
|
| 280 |
/** |
|
| 281 |
* Returns the number of bytes written to this little endian output stream. |
|
| 282 |
* (This class is not thread-safe with respect to this method. It is |
|
| 283 |
* possible that this number is temporarily less than the actual |
|
| 284 |
* number of bytes written.) |
|
| 285 |
* @return the value of the <code>written</code> field. |
|
| 286 |
* @see java.io.LittleEndianOutputStream#written |
|
| 287 |
*/ |
|
| 288 |
public int size() {
|
|
| 289 |
return this.written; |
|
| 290 |
} |
|
| 291 |
|
|
| 292 |
} |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/PlotEllipsesMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto |
|
| 3 |
|
|
| 4 |
import org.kohsuke.args4j.* |
|
| 5 |
|
|
| 6 |
import groovy.transform.Field |
|
| 7 |
|
|
| 8 |
import org.txm.ca.core.functions.CA |
|
| 9 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 10 |
import org.txm.statsengine.r.core.RWorkspace |
|
| 11 |
|
|
| 12 |
// BEGINNING OF PARAMETERS |
|
| 13 |
|
|
| 14 |
if (!(corpusViewSelection instanceof CA)) {
|
|
| 15 |
println "Selection is not a CA. Please select a CA result in the Corpus view" |
|
| 16 |
return; |
|
| 17 |
} |
|
| 18 |
|
|
| 19 |
@Field @Option(name="outputFile", usage="an example file", widget="FileSave", required=true, def="file.svg") |
|
| 20 |
def outputFile |
|
| 21 |
|
|
| 22 |
@Field @Option(name="draw", usage="'row' or 'col'", widget="String", required=true, def="row") |
|
| 23 |
def draw |
|
| 24 |
// Open the parameters input dialog box |
|
| 25 |
if (!ParametersDialog.open(this)) return; |
|
| 26 |
|
|
| 27 |
// END OF PARAMETERS |
|
| 28 |
def ca = corpusViewSelection |
|
| 29 |
def s = ca.getSymbol() |
|
| 30 |
def RW = RWorkspace.getRWorkspaceInstance() |
|
| 31 |
|
|
| 32 |
def script = """ |
|
| 33 |
plot($s); |
|
| 34 |
ellipseCA($s, ellipse=c("$draw"));
|
|
| 35 |
""" |
|
| 36 |
|
|
| 37 |
RW.plot(outputFile, script); |
|
| 38 |
|
|
| 39 |
println "Done: "+outputFile.getAbsolutePath() |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/ZoneConcordancesMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto |
|
| 3 |
|
|
| 4 |
import org.kohsuke.args4j.* |
|
| 5 |
import groovy.transform.Field |
|
| 6 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 7 |
import org.txm.Toolbox |
|
| 8 |
import org.txm.searchengine.cqp.corpus.* |
|
| 9 |
import org.txm.searchengine.cqp.corpus.query.* |
|
| 10 |
import org.apache.commons.lang.StringUtils |
|
| 11 |
|
|
| 12 |
// BEGINNING OF PARAMETERS |
|
| 13 |
|
|
| 14 |
if (!(corpusViewSelection instanceof Corpus)) {
|
|
| 15 |
println "please select a corpus: $corpusViewSelection" |
|
| 16 |
return |
|
| 17 |
} |
|
| 18 |
|
|
| 19 |
def CQI = Toolbox.getCqiClient(); |
|
| 20 |
|
|
| 21 |
@Field @Option(name="query", usage="an example query", widget="Query", required=true, def='[pos="V.*"]') |
|
| 22 |
def query |
|
| 23 |
|
|
| 24 |
@Field @Option(name="property", usage="an example query", widget="String", required=true, def='word') |
|
| 25 |
def property |
|
| 26 |
|
|
| 27 |
@Field @Option(name="outputFile", usage="an example file", widget="FileSave", required=true, def="C:/Temp/foo.txt") |
|
| 28 |
def outputFile |
|
| 29 |
|
|
| 30 |
// Open the parameters input dialog box |
|
| 31 |
if (!ParametersDialog.open(this)) return; |
|
| 32 |
|
|
| 33 |
def writer = outputFile.newWriter("UTF-8")
|
|
| 34 |
|
|
| 35 |
// END OF PARAMETERS |
|
| 36 |
|
|
| 37 |
String query_string = query.toString(); |
|
| 38 |
if (query_string.startsWith("@")) query_string = query_string.substring(1)
|
|
| 39 |
|
|
| 40 |
def split = query_string.split("@")
|
|
| 41 |
def queries = [] |
|
| 42 |
// @ A @ B @ C @ D |
|
| 43 |
println "requête de zones: "+query_string |
|
| 44 |
//println split |
|
| 45 |
String current_q = "" |
|
| 46 |
for (int i = 0 ; i < split.length ;i++) {
|
|
| 47 |
def reconstructed_query = "" |
|
| 48 |
def q = split[i] |
|
| 49 |
|
|
| 50 |
//println "q=$q" |
|
| 51 |
|
|
| 52 |
//println "current_q=$current_q" |
|
| 53 |
|
|
| 54 |
if (i > 0 && q.length() > 0) {
|
|
| 55 |
reconstructed_query = current_q+"@"+q |
|
| 56 |
if (i < (split.length-1)) reconstructed_query += split[i+1..split.length-1].join("")
|
|
| 57 |
queries << reconstructed_query |
|
| 58 |
} |
|
| 59 |
|
|
| 60 |
current_q += q |
|
| 61 |
//println "Q="+current_q |
|
| 62 |
} |
|
| 63 |
|
|
| 64 |
if (queries.size() == 0) {
|
|
| 65 |
println "no target @ found in query: $query" |
|
| 66 |
return |
|
| 67 |
} |
|
| 68 |
|
|
| 69 |
def corpus = corpusViewSelection |
|
| 70 |
def wordProperty = corpus.getProperty(property) |
|
| 71 |
def qrs = [] |
|
| 72 |
for (def q : queries) {
|
|
| 73 |
qrs << corpus.query(new Query(q), "TMP", false).getMatches() |
|
| 74 |
} |
|
| 75 |
def qr = qrs[0] |
|
| 76 |
println ""+qr.size()+" matches pour "+(queries.size()+1)+" zones" |
|
| 77 |
|
|
| 78 |
writer.print "N\tposition\t" |
|
| 79 |
for (int j = 0 ; j < queries.size()+1 ; j++) {
|
|
| 80 |
writer.print "\t" |
|
| 81 |
writer.print "Z"+(j+1) |
|
| 82 |
} |
|
| 83 |
writer.println "" |
|
| 84 |
|
|
| 85 |
for (int i = 0 ; i < qr.size() ; i++) {
|
|
| 86 |
int[] positions = qr[i].getStart() .. qr[i].getEnd() |
|
| 87 |
def forms = CQI.cpos2Str(wordProperty.getQualifiedName(), positions) |
|
| 88 |
|
|
| 89 |
def targets = [] |
|
| 90 |
for (int j = 0 ; j < queries.size() ; j++) {
|
|
| 91 |
targets << (qrs[j][i]).getTarget() |
|
| 92 |
} |
|
| 93 |
|
|
| 94 |
writer.print ""+(i+1)+"\t"+positions[0]+"\t" |
|
| 95 |
boolean first = true |
|
| 96 |
for (int j = 0 ; j < forms.size() ; j++) {
|
|
| 97 |
if (targets.contains(positions[j])) {
|
|
| 98 |
writer.print "\t" |
|
| 99 |
first = true |
|
| 100 |
} |
|
| 101 |
|
|
| 102 |
if (!first) { writer.print " "}
|
|
| 103 |
writer.print forms[j] |
|
| 104 |
first=false |
|
| 105 |
} |
|
| 106 |
writer.println "" |
|
| 107 |
|
|
| 108 |
} |
|
| 109 |
|
|
| 110 |
writer.close() |
|
| 111 |
println "Result written in "+outputFile.getAbsolutePath() |
|
| tmp/org.txm.groovy.core/src/groovy/org/txm/macroproto/ApplyXQueryMacro.groovy (revision 822) | ||
|---|---|---|
| 1 |
// STANDARD DECLARATIONS |
|
| 2 |
package org.txm.macroproto |
|
| 3 |
|
|
| 4 |
|
|
| 5 |
import org.kohsuke.args4j.* |
|
| 6 |
import groovy.transform.Field |
|
| 7 |
import org.txm.rcpapplication.swt.widget.parameters.* |
|
| 8 |
import org.txm.searchengine.cqp.corpus.* |
|
| 9 |
import net.sf.saxon.* |
|
| 10 |
import net.sf.saxon.query.* |
|
| 11 |
import net.sf.saxon.om.* |
|
| 12 |
import javax.xml.transform.* |
|
| 13 |
import javax.xml.transform.sax.* |
|
| 14 |
import javax.xml.transform.stream.* |
|
| 15 |
import org.xml.sax.* |
|
| 16 |
import javax.xml.xpath.* |
|
| 17 |
import net.sf.saxon.event.* |
|
| 18 |
import org.w3c.dom.* |
|
| 19 |
import net.sf.saxon.s9api.* |
|
| 20 |
import javax.xml.parsers.* |
|
| 21 |
|
|
| 22 |
// BEGINNING OF PARAMETERS |
|
| 23 |
|
|
| 24 |
if (!(corpusViewSelection instanceof Corpus)) {
|
|
| 25 |
println "Error: Selection must be a corpus" |
|
| 26 |
return false; |
|
| 27 |
} |
|
| 28 |
|
|
| 29 |
@Field @Option(name="xqFile", usage="a Xquery file", widget="FileOpen", required=true, def="C:/Temp/foo.xq") |
|
| 30 |
def xqFile |
|
| 31 |
@Field @Option(name="outFile", usage="optional output file", widget="File", required=false, def="") |
|
| 32 |
def outFile |
|
| 33 |
@Field @Option(name="debug", usage="an example file", widget="Boolean", required=true, def="false") |
|
| 34 |
def debug |
|
| 35 |
|
|
| 36 |
// Open the parameters input dialog box |
|
| 37 |
if (!ParametersDialog.open(this)) return; |
|
| 38 |
|
|
| 39 |
// END OF PARAMETERS |
|
| 40 |
|
|
| 41 |
println "corpora selection: "+corpusViewSelection |
|
| 42 |
if (!xqFile.getName().endsWith(".xq")) {
|
|
| 43 |
println "Error: Xquery selected file is not a '.xd' file: $xdFile" |
|
| 44 |
return false; |
|
| 45 |
} |
|
| 46 |
|
|
| 47 |
MainCorpus mainCorpus = ((Corpus)corpusViewSelection).getMainCorpus(); |
|
| 48 |
File binDir = mainCorpus.getBaseDirectory(); |
|
| 49 |
File txmDir = new File(binDir, "txm/"+mainCorpus.getName()); |
|
| 50 |
|
|
| 51 |
if (!txmDir.exists()) {
|
|
| 52 |
println "Error: the 'txm' directory does not exist: $txmDir" |
|
| 53 |
return false; |
|
| 54 |
} |
|
| 55 |
|
|
| 56 |
def xmlFiles = txmDir.listFiles(); |
|
| 57 |
if (xmlFiles == null || xmlFiles.size() == 0) {
|
|
| 58 |
println "Error: no file found in $txmDir" |
|
| 59 |
return false; |
|
| 60 |
} |
|
| 61 |
|
|
| 62 |
String query = """<matches> |
|
| 63 |
{
|
|
| 64 |
for \$t in fn:collection('$txmDir')
|
|
| 65 |
for \$w in \$t//tei:w |
|
| 66 |
let \$pos := \$w/txm:ana[@type="#frpos"]/text() |
|
| 67 |
return <match>{\$w/@id}</match>
|
|
| 68 |
} |
|
| 69 |
</matches> |
|
| 70 |
""" |
|
| 71 |
|
|
| 72 |
Processor processor = new Processor(false) |
|
| 73 |
XQueryCompiler xqc = processor.newXQueryCompiler() |
|
| 74 |
xqc.declareNamespace("tei", "http://www.tei-c.org/ns/1.0")
|
|
| 75 |
xqc.declareNamespace("txm", "http://textometrie.org/1.0")
|
|
| 76 |
xqc.declareNamespace("fn", "http://www.w3.org/2005/xpath-functions")
|
|
| 77 |
XQueryExecutable exp = xqc.compile(query) |
|
| 78 |
|
|
| 79 |
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance(); |
|
| 80 |
dfactory.setNamespaceAware(true); |
|
| 81 |
Document dom = dfactory.newDocumentBuilder().newDocument(); |
|
| 82 |
exp.load().run(new DOMDestination(dom)); |
|
| 83 |
if (outFile instanceof File && outFile.getName().length() > 0) {
|
|
| 84 |
def writer = outFile.newWriter("UTF-8")
|
|
| 85 |
writer.println dom.getDocumentElement() |
|
| 86 |
writer.close() |
|
| 87 |
println "Result written in "+outFile.getAbsolutePath() |
|
| 88 |
} else {
|
|
| 89 |
println dom.getDocumentElement() |
|
| 90 |
} |
|
| tmp/org.txm.setups/shared/debian/DEBIAN/control (revision 822) | ||
|---|---|---|
| 4 | 4 |
Priority: optional |
| 5 | 5 |
Architecture: all |
| 6 | 6 |
Installed-Size: 250000 |
| 7 |
Depends: zenity, po-debconf, libwebkitgtk-1.0-0, debconf, libc6 (>= 2.15), libgtk2-perl, libblas3, libbz2-1.0, libcairo2, libgfortran3, libglib2.0-0, libgomp1, libjpeg8, liblapack3, liblzma5, libpango-1.0-0, libpangocairo-1.0-0, libpaper-utils, libpcre3, libpng12-0|libpng16, libreadline6, libtiff5, libx11-6, libxt6, tcl8.5, tk8.5, ucf, unzip, xdg-utils, zip, zlib1g
|
|
| 7 |
Depends: zenity, po-debconf, libwebkitgtk-1.0-0, debconf, libc6 (>= 2.15), libgtk2-perl, libblas3, libbz2-1.0, libcairo2, libgfortran3, libglib2.0-0, libgomp1, libjpeg8, liblapack3, liblzma5, libpango-1.0-0, libpangocairo-1.0-0, libpaper-utils, libpcre3, libpng12-0|libpng16-16, libreadline6|libreadline7, libtiff5, libx11-6, libxt6, tcl8.5, tk8.5, ucf, unzip, xdg-utils, zip, zlib1g
|
|
| 8 | 8 |
Maintainer: TXM team <textometrie@ens-lyon.fr> |
| 9 | 9 |
Source: txm-src |
| 10 | 10 |
License: GPL-2+ |
Formats disponibles : Unified diff