Révision 1171
| tmp/org.txm.searchengine.core/src/org/txm/searchengine/core/SearchEngine.java (revision 1171) | ||
|---|---|---|
| 2 | 2 |
|
| 3 | 3 |
import org.txm.core.engines.Engine; |
| 4 | 4 |
import org.txm.objects.CorpusBuild; |
| 5 |
import org.txm.stat.utils.LogMonitor; |
|
| 5 | 6 |
|
| 6 | 7 |
// FIXME: useless class |
| 7 | 8 |
public abstract class SearchEngine implements Engine {
|
| ... | ... | |
| 11 | 12 |
@Override |
| 12 | 13 |
public abstract String getName(); |
| 13 | 14 |
|
| 15 |
public boolean start() throws Exception {
|
|
| 16 |
return start(new LogMonitor("Starting "+getName()));
|
|
| 17 |
} |
|
| 18 |
|
|
| 14 | 19 |
public abstract Selection query(CorpusBuild corpus, Query query, String name, boolean saveQuery) throws Exception; |
| 15 | 20 |
|
| 16 | 21 |
public abstract Query newQuery(); |
| tmp/org.txm.utils/src/org/txm/utils/zip/Zip.java (revision 1171) | ||
|---|---|---|
| 301 | 301 |
while (null != (ze = zis.getNextEntry())) {
|
| 302 | 302 |
nEntries++; |
| 303 | 303 |
} |
| 304 |
} catch(Exception e) { } finally {
|
|
| 304 |
} catch(Exception e) { e.printStackTrace(); } finally {
|
|
| 305 | 305 |
if (zis != null) zis.close(); |
| 306 | 306 |
} |
| 307 | 307 |
//System.out.println("count entries result: "+nEntries);
|
| ... | ... | |
| 347 | 347 |
} |
| 348 | 348 |
} finally {
|
| 349 | 349 |
zis.close(); |
| 350 |
if (monitor != null) monitor.done(); |
|
| 350 |
//if (monitor != null) monitor.done();
|
|
| 351 | 351 |
} |
| 352 | 352 |
|
| 353 | 353 |
if (deleteZipAfter) |
| ... | ... | |
| 619 | 619 |
// Parcours tous les fichiers |
| 620 | 620 |
while (null != (ze = zis.getNextEntry())) {
|
| 621 | 621 |
String currentpath = ze.getName(); |
| 622 |
String filename = currentpath; |
|
| 623 |
if (filename.endsWith("/")) {
|
|
| 624 |
filename = filename.substring(0, filename.length()-1); |
|
| 625 |
} |
|
| 626 |
if (filename.lastIndexOf("/") > 0) {
|
|
| 627 |
filename = filename.substring(filename.lastIndexOf("/")+1);
|
|
| 628 |
} |
|
| 629 |
if (toFind.contains(filename)) {
|
|
| 630 |
toFind.remove(filename);
|
|
| 622 |
// String filename = currentpath;
|
|
| 623 |
// if (filename.endsWith("/")) {
|
|
| 624 |
// filename = filename.substring(0, filename.length()-1);
|
|
| 625 |
// }
|
|
| 626 |
// if (filename.lastIndexOf("/") > 0) {
|
|
| 627 |
// filename = filename.substring(filename.lastIndexOf("/")+1);
|
|
| 628 |
// }
|
|
| 629 |
if (toFind.contains(currentpath)) {
|
|
| 630 |
toFind.remove(currentpath);
|
|
| 631 | 631 |
if (toFind.size() == 0) {
|
| 632 | 632 |
try {
|
| 633 | 633 |
zis.close(); |
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java (revision 1171) | ||
|---|---|---|
| 823 | 823 |
try {
|
| 824 | 824 |
Subcorpus subcorp = this.createSubcorpus(subcorpusElem); |
| 825 | 825 |
subcorp._load(subcorpusElem); |
| 826 |
subcorp.compute(); |
|
| 826 | 827 |
} catch (CqiClientException ex) {
|
| 827 | 828 |
Log.warning(this.pID + TXMCoreMessages.Corpus_12 + pID |
| 828 | 829 |
+ " : " + ex); //$NON-NLS-1$ |
| ... | ... | |
| 850 | 851 |
|
| 851 | 852 |
// partition.setSelfElement(partitionElem); |
| 852 | 853 |
// partition.load(); |
| 854 |
partition.compute(); |
|
| 853 | 855 |
} catch (Exception ex) {
|
| 854 | 856 |
Log.warning(this.pID + TXMCoreMessages.Corpus_19 + name |
| 855 | 857 |
+ " : " + ex); //$NON-NLS-1$ |
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java (revision 1171) | ||
|---|---|---|
| 108 | 108 |
*/ |
| 109 | 109 |
public MainCorpus(String parametersNodePath) throws InvalidCqpIdException, CqiClientException {
|
| 110 | 110 |
super(parametersNodePath); |
| 111 |
|
|
| 112 |
this.internalPersistable = true; |
|
| 113 |
|
|
| 114 |
this.dataDirectory = new File(getProjectDirectory(), "data/"+getID()); |
|
| 115 |
this.registryFile = new File(getProjectDirectory(), "registry/"+getID().toLowerCase()); |
|
| 111 | 116 |
} |
| 112 | 117 |
|
| 113 | 118 |
|
| ... | ... | |
| 143 | 148 |
@Override |
| 144 | 149 |
public boolean export(File exportzip, IProgressMonitor monitor) |
| 145 | 150 |
{
|
| 146 |
if (this.getProject() != null) |
|
| 147 |
return this.getProject().export(exportzip, monitor); |
|
| 151 |
if (this.getProject() != null) {
|
|
| 152 |
try {
|
|
| 153 |
this.getProject().saveParameters(true); // write parameters in preferences |
|
| 154 |
this.getProject().persist(true); // save preferences |
|
| 155 |
return this.getProject().export(exportzip, monitor); |
|
| 156 |
} catch (Exception e) {
|
|
| 157 |
// TODO Auto-generated catch block |
|
| 158 |
e.printStackTrace(); |
|
| 159 |
} |
|
| 160 |
} |
|
| 148 | 161 |
return false; |
| 149 | 162 |
} |
| 150 | 163 |
|
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java (revision 1171) | ||
|---|---|---|
| 39 | 39 |
import org.txm.core.results.Parameter; |
| 40 | 40 |
import org.txm.core.results.TXMParameters; |
| 41 | 41 |
import org.txm.searchengine.cqp.AbstractCqiClient; |
| 42 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
| 42 | 43 |
import org.txm.searchengine.cqp.NetCqiClient; |
| 43 | 44 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
| 44 | 45 |
import org.txm.searchengine.cqp.clientExceptions.InvalidCqpIdException; |
| ... | ... | |
| 498 | 499 |
@Override |
| 499 | 500 |
public void clean() {
|
| 500 | 501 |
try {
|
| 501 |
CorpusManager.getCorpusManager().getCqiClient().dropSubCorpus(this.getQualifiedCqpId()); |
|
| 502 |
if (CQPSearchEngine.isInitialized()) {
|
|
| 503 |
CorpusManager.getCorpusManager().getCqiClient().dropSubCorpus(this.getQualifiedCqpId()); |
|
| 504 |
} |
|
| 502 | 505 |
} catch (Exception e) {
|
| 503 | 506 |
e.printStackTrace(); |
| 504 | 507 |
} |
| tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/CQPSearchEngine.java (revision 1171) | ||
|---|---|---|
| 312 | 312 |
((MemCqiClient)cqiClient).dropCorpus(name); |
| 313 | 313 |
} |
| 314 | 314 |
} |
| 315 |
|
|
| 315 | 316 |
cqiClient.disconnect(); |
| 316 | 317 |
cqiServer.stop(); |
| 317 | 318 |
|
| tmp/org.txm.groovy.core/src/java/org/txm/groovy/core/GroovyScriptedImportEngine.java (revision 1171) | ||
|---|---|---|
| 18 | 18 |
import org.txm.objects.Edition; |
| 19 | 19 |
import org.txm.objects.Project; |
| 20 | 20 |
import org.txm.objects.Text; |
| 21 |
import org.txm.objects.Workspace; |
|
| 21 | 22 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
| 22 | 23 |
import org.txm.tokenizer.TokenizerClasses; |
| 23 | 24 |
import org.txm.utils.ExecTimer; |
| ... | ... | |
| 42 | 43 |
|
| 43 | 44 |
try {
|
| 44 | 45 |
// check if TreeTagger is ready |
| 46 |
Workspace w = Toolbox.workspace; |
|
| 45 | 47 |
boolean annotate = project.getAnnotate(); |
| 46 | 48 |
if (annotate) {
|
| 47 | 49 |
Engine e = Toolbox.getEngineManager(EngineType.ANNOTATION).getEngine("TreeTagger");
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/ApplicationWorkbenchAdvisor.java (revision 1171) | ||
|---|---|---|
| 85 | 85 |
import org.txm.core.preferences.TBXPreferences; |
| 86 | 86 |
import org.txm.core.preferences.TXMPreferences; |
| 87 | 87 |
import org.txm.objects.Project; |
| 88 |
import org.txm.objects.Project; |
|
| 89 | 88 |
import org.txm.rcp.commands.OpenWelcomePage; |
| 90 | 89 |
import org.txm.rcp.commands.RestartTXM; |
| 91 | 90 |
import org.txm.rcp.commands.workspace.LoadBinaryCorpus; |
| ... | ... | |
| 101 | 100 |
import org.txm.searchengine.core.SearchEnginesManager; |
| 102 | 101 |
import org.txm.utils.BundleUtils; |
| 103 | 102 |
import org.txm.utils.DeleteDir; |
| 103 |
import org.txm.utils.io.FileCopy; |
|
| 104 | 104 |
import org.txm.utils.logger.Log; |
| 105 | 105 |
import org.txm.utils.zip.Zip; |
| 106 | 106 |
|
| ... | ... | |
| 256 | 256 |
// restore corpora if TXMHOME has been created |
| 257 | 257 |
if (txmHomeRestored) {
|
| 258 | 258 |
//createBackUpDirectory(monitor); |
| 259 |
reloadCorporaFromBackUpDirectory(monitor);
|
|
| 259 |
installCorporaFromSamplesDirectory(monitor);
|
|
| 260 | 260 |
this.syncExec(new Runnable() {
|
| 261 | 261 |
@Override |
| 262 | 262 |
public void run() {
|
| 263 | 263 |
try {
|
| 264 |
// Toolbox.restartWorkspace(monitor); |
|
| 264 | 265 |
SearchEnginesManager.getCQPSearchEngine().stop(); |
| 265 | 266 |
SearchEnginesManager.getCQPSearchEngine().start(monitor); |
| 266 | 267 |
CorporaView.refresh(); |
| ... | ... | |
| 793 | 794 |
} |
| 794 | 795 |
} |
| 795 | 796 |
|
| 796 |
private void reloadCorporaFromBackUpDirectory(IProgressMonitor monitor) {
|
|
| 797 |
ArrayList<String> basenames = new ArrayList<String>(); |
|
| 798 |
ArrayList<String> sampleCorpusLoaded = new ArrayList<String>(); |
|
| 797 |
/** |
|
| 798 |
* Copy sample corpora in TXM corpora directory |
|
| 799 |
* @param monitor |
|
| 800 |
*/ |
|
| 801 |
private void installCorporaFromSamplesDirectory(IProgressMonitor monitor) {
|
|
| 799 | 802 |
|
| 800 | 803 |
String installdirpath = Toolbox.getInstallDirectory(); |
| 801 | 804 |
File sampleCorporaDirectory = new File(installdirpath, "samples"); |
| 805 |
|
|
| 806 |
if (txmhomedir == null) {
|
|
| 807 |
txmhomedir = new File(Toolbox.getTxmHomePath().trim()); |
|
| 808 |
} |
|
| 809 |
corporaDir = new File(txmhomedir, "corpora"); //$NON-NLS-1$ |
|
| 810 |
corporaDir.mkdir(); |
|
| 811 |
|
|
| 802 | 812 |
// load corpora from the install directory |
| 803 | 813 |
if (sampleCorporaDirectory.exists()) { //$NON-NLS-1$
|
| 804 | 814 |
Log.info(TXMUIMessages.ApplicationWorkbenchAdvisor_11); |
| 805 | 815 |
monitor.setTaskName(TXMUIMessages.ApplicationWorkbenchAdvisor_11); |
| 806 | 816 |
//File corporaDir = new File(txmhomedir.getAbsolutePath(), "corpora"); //$NON-NLS-1$ |
| 807 |
if (txmhomedir == null) {
|
|
| 808 |
txmhomedir = new File(Toolbox.getTxmHomePath().trim()); |
|
| 809 |
} |
|
| 810 |
corporaDir = new File(txmhomedir, "corpora"); //$NON-NLS-1$ |
|
| 811 |
corporaDir.mkdir(); |
|
| 817 |
|
|
| 812 | 818 |
|
| 813 | 819 |
File[] sampleCorpusFiles = sampleCorporaDirectory.listFiles(); //$NON-NLS-1$ |
| 814 | 820 |
|
| ... | ... | |
| 833 | 839 |
System.out.println(NLS.bind(TXMUIMessages.AddBase_31, e)); |
| 834 | 840 |
} |
| 835 | 841 |
} else if (zipFile.isDirectory()) {
|
| 836 |
basedir = zipFile; |
|
| 842 |
//basedir = zipFile; |
|
| 843 |
// basedir = new File(corporaDir, zipFile.getName().toUpperCase()); |
|
| 844 |
// if (basedir.exists()) {
|
|
| 845 |
// System.out.println("Updating "+basedir.getName()+" corpus from TXM sample directory corpus.");
|
|
| 846 |
// DeleteDir.deleteDirectory(basedir); |
|
| 847 |
// } |
|
| 848 |
// FileCopy.copyFiles(zipFile, basedir); // copy the sample corpus to load |
|
| 837 | 849 |
} else {
|
| 838 | 850 |
System.out.println(NLS.bind(TXMUIMessages.AddBase_22, zipFile)); |
| 839 | 851 |
System.out.println(TXMUIMessages.AddBase_25); |
| 840 | 852 |
continue; |
| 841 | 853 |
} |
| 842 |
|
|
| 843 |
Project base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(basedir); |
|
| 844 |
if (base != null) {
|
|
| 845 |
basenames.add(base.getName()); |
|
| 846 |
sampleCorpusLoaded.add(base.getName()); |
|
| 847 |
} |
|
| 854 |
|
|
| 855 |
// Project project = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(basedir, monitor); |
|
| 856 |
// if (project != null) {
|
|
| 857 |
// basenames.add(project.getName()); |
|
| 858 |
// sampleCorpusLoaded.add(project.getName()); |
|
| 859 |
// } |
|
| 860 |
|
|
| 848 | 861 |
} catch (Exception e) {
|
| 849 | 862 |
System.out.println(TXMUIMessages.ApplicationWorkbenchAdvisor_51+zipFile); |
| 850 | 863 |
org.txm.rcp.utils.Logger.printStackTrace(e); |
| 851 | 864 |
} |
| 852 | 865 |
} |
| 853 | 866 |
} |
| 867 |
|
|
| 868 |
// for (File projectDir : corporaDir.listFiles()) { // load sample corpus and previous corpus as well
|
|
| 869 |
// if (projectDir.isDirectory()) {
|
|
| 870 |
// Project project; |
|
| 871 |
// try {
|
|
| 872 |
// |
|
| 873 |
// } catch (Exception e) {
|
|
| 874 |
// // TODO Auto-generated catch block |
|
| 875 |
// e.printStackTrace(); |
|
| 876 |
// } |
|
| 877 |
// } |
|
| 878 |
// } |
|
| 854 | 879 |
|
| 855 | 880 |
// after loading sample corpora, restore older corpus |
| 856 | 881 |
// if (backup.exists()) {
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/corpuswizard/ImportWizard.java (revision 1171) | ||
|---|---|---|
| 89 | 89 |
//project._load(params); |
| 90 | 90 |
} |
| 91 | 91 |
|
| 92 |
project.save(); |
|
| 92 |
project.saveParameters();
|
|
| 93 | 93 |
return true; |
| 94 | 94 |
} catch (Exception e) {
|
| 95 | 95 |
e.printStackTrace(); |
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorporaView.java (revision 1171) | ||
|---|---|---|
| 172 | 172 |
|
| 173 | 173 |
Workspace w = Toolbox.workspace; |
| 174 | 174 |
if (w == null) return; |
| 175 |
treeViewer.setInput(w); |
|
| 176 |
treeViewer.refresh(); |
|
| 175 |
treeViewer.setInput(w); treeViewer.refresh(); |
|
| 177 | 176 |
} |
| 178 | 177 |
} |
| 179 | 178 |
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/results/DeleteObject.java (revision 1171) | ||
|---|---|---|
| 184 | 184 |
if (allObjectDeleted.size() > 0) {
|
| 185 | 185 |
|
| 186 | 186 |
if (shouldRestartToolbox) {
|
| 187 |
org.txm.Toolbox.restartWorkspace(null); |
|
| 187 |
// org.txm.Toolbox.restartWorkspace(null);
|
|
| 188 | 188 |
Toolbox.getEngineManager(EngineType.SEARCH).restartEngines(); |
| 189 | 189 |
|
| 190 | 190 |
Log.info(TXMUIMessages.info_txmIsReady); |
| ... | ... | |
| 216 | 216 |
|
| 217 | 217 |
/** |
| 218 | 218 |
* Deletes the specified object. |
| 219 |
* |
|
| 220 |
* Warning: if the object is a MainCorpus then the MainCorpus' project is deleted |
|
| 219 | 221 |
* |
| 220 | 222 |
* @param o the o |
| 221 | 223 |
* @return the list |
| ... | ... | |
| 257 | 259 |
// } |
| 258 | 260 |
// // FIXME: when TXMResult will be implemented, only this code must be left |
| 259 | 261 |
if (o instanceof TXMResult) {
|
| 260 |
((TXMResult) o).delete(); |
|
| 262 |
if (o instanceof MainCorpus) {
|
|
| 263 |
((MainCorpus)o).getProject().delete(); |
|
| 264 |
} else {
|
|
| 265 |
((TXMResult) o).delete(); |
|
| 266 |
} |
|
| 261 | 267 |
Log.info(NLS.bind(TXMUIMessages.DeleteObject_10, ((TXMResult) o))); |
| 262 | 268 |
deleted.add(o); |
| 263 | 269 |
} else {
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/imports/CorpusPage.java (revision 1171) | ||
|---|---|---|
| 974 | 974 |
|
| 975 | 975 |
if (successfulSave) {
|
| 976 | 976 |
try {
|
| 977 |
project.save(); |
|
| 977 |
project.saveParameters();
|
|
| 978 | 978 |
// DomUtils.save(params.root.getOwnerDocument(), paramFile); |
| 979 | 979 |
} catch (Exception e1) {
|
| 980 | 980 |
org.txm.rcp.utils.Logger.printStackTrace(e1); |
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/Load080BinaryCorpus.java (revision 1171) | ||
|---|---|---|
| 59 | 59 |
|
| 60 | 60 |
String basedirname = Zip.getRoot(zipFile); |
| 61 | 61 |
|
| 62 |
if (!Zip.hasEntries(zipFile, ".settings/", ".project")) {
|
|
| 62 |
if (!Zip.hasEntries(zipFile, basedirname+"/.settings/", basedirname+"/.project", basedirname+"/data/", basedirname+"/txm/", basedirname+"/HTML/", basedirname+"/registry/")) {
|
|
| 63 |
System.out.println("Binary corpus is not a TXM 0.8.0 corpus (no .settings nor .project file)");
|
|
| 63 | 64 |
return null; |
| 64 | 65 |
} |
| 65 | 66 |
|
| ... | ... | |
| 106 | 107 |
return null; |
| 107 | 108 |
} |
| 108 | 109 |
|
| 109 |
Toolbox.workspace.save(); |
|
| 110 |
Toolbox.workspace.saveParameters();
|
|
| 110 | 111 |
return base; |
| 111 | 112 |
} |
| 112 | 113 |
} |
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/ConvertCorpus.java (revision 1171) | ||
|---|---|---|
| 53 | 53 |
converter.start(); |
| 54 | 54 |
this.releaseSemaphore(); |
| 55 | 55 |
|
| 56 |
Project base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(outdir); |
|
| 56 |
Project base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(outdir, monitor);
|
|
| 57 | 57 |
if (base == null) {
|
| 58 | 58 |
System.out.println(TXMUIMessages.ConvertCorpus_0); |
| 59 | 59 |
return Status.CANCEL_STATUS; |
| 60 | 60 |
} |
| 61 | 61 |
|
| 62 | 62 |
this.acquireSemaphore(); |
| 63 |
org.txm.Toolbox.restartWorkspace(monitor); |
|
| 63 |
// org.txm.Toolbox.restartWorkspace(monitor);
|
|
| 64 | 64 |
Toolbox.getEngineManager(EngineType.SEARCH).restartEngines(); |
| 65 | 65 |
this.releaseSemaphore(); |
| 66 | 66 |
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/LoadBinaryCorporaDirectory.java (revision 1171) | ||
|---|---|---|
| 28 | 28 |
package org.txm.rcp.commands.workspace; |
| 29 | 29 |
|
| 30 | 30 |
import java.io.File; |
| 31 |
import java.util.ArrayList; |
|
| 32 | 31 |
|
| 33 | 32 |
import org.eclipse.core.commands.AbstractHandler; |
| 34 | 33 |
import org.eclipse.core.commands.ExecutionEvent; |
| ... | ... | |
| 36 | 35 |
import org.eclipse.core.runtime.IProgressMonitor; |
| 37 | 36 |
import org.eclipse.core.runtime.IStatus; |
| 38 | 37 |
import org.eclipse.core.runtime.Status; |
| 39 |
import org.eclipse.jface.dialogs.MessageDialog; |
|
| 40 |
import org.eclipse.osgi.util.NLS; |
|
| 41 | 38 |
import org.eclipse.swt.SWT; |
| 42 | 39 |
import org.eclipse.swt.widgets.DirectoryDialog; |
| 43 |
import org.eclipse.swt.widgets.Display; |
|
| 44 |
import org.eclipse.swt.widgets.FileDialog; |
|
| 45 | 40 |
import org.eclipse.swt.widgets.Shell; |
| 46 | 41 |
import org.eclipse.ui.handlers.HandlerUtil; |
| 47 | 42 |
import org.txm.Toolbox; |
| 48 |
import org.txm.Toolbox; |
|
| 49 | 43 |
import org.txm.core.engines.EngineType; |
| 50 |
import org.txm.core.preferences.TBXPreferences; |
|
| 51 | 44 |
import org.txm.objects.Project; |
| 52 |
import org.txm.objects.Project; |
|
| 53 |
import org.txm.objects.Workspace; |
|
| 54 | 45 |
import org.txm.rcp.StatusLine; |
| 55 | 46 |
import org.txm.rcp.commands.RestartTXM; |
| 56 | 47 |
import org.txm.rcp.messages.TXMUIMessages; |
| 57 | 48 |
import org.txm.rcp.swt.dialog.LastOpened; |
| 58 | 49 |
import org.txm.rcp.utils.JobHandler; |
| 59 |
import org.txm.rcp.views.corpora.CorporaView; |
|
| 60 |
import org.txm.searchengine.cqp.corpus.CQPCorpus; |
|
| 61 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
|
| 62 |
import org.txm.utils.DeleteDir; |
|
| 63 |
import org.txm.utils.io.FileCopy; |
|
| 64 |
import org.txm.utils.logger.Log; |
|
| 65 |
import org.txm.utils.zip.Zip; |
|
| 50 |
import org.txm.searchengine.core.SearchEngine; |
|
| 51 |
import org.txm.searchengine.core.SearchEnginesManager; |
|
| 66 | 52 |
|
| 67 |
// TODO: Auto-generated Javadoc |
|
| 68 | 53 |
/** |
| 69 |
* Create a base from binary files of a base. |
|
| 54 |
* Create projects from one binary corpus directory |
|
| 55 |
* |
|
| 56 |
* calls LoadBinaryCorpus methods |
|
| 70 | 57 |
* |
| 71 | 58 |
* @author mdecorde |
| 72 | 59 |
*/ |
| ... | ... | |
| 94 | 81 |
if (directory.exists()) {
|
| 95 | 82 |
|
| 96 | 83 |
LastOpened.set(ID, directory); |
| 97 |
return loadBinaryCorporaDirectory(directory); |
|
| 84 |
return loadBinaryCorpusFromCorporaDirectory(directory);
|
|
| 98 | 85 |
} |
| 99 | 86 |
} |
| 100 | 87 |
return null; |
| ... | ... | |
| 106 | 93 |
* @param directory |
| 107 | 94 |
* @return |
| 108 | 95 |
*/ |
| 109 |
public static JobHandler loadBinaryCorporaDirectory(final File directory) {
|
|
| 110 |
|
|
| 96 |
public static JobHandler loadBinaryCorpusFromCorporaDirectory(final File directory) {
|
|
| 97 |
|
|
| 111 | 98 |
JobHandler jobhandler = new JobHandler("Scanning "+directory+"...", true) {
|
| 112 | 99 |
@Override |
| 113 | 100 |
protected IStatus run(IProgressMonitor monitor) {
|
| 114 | 101 |
this.runInit(monitor); |
| 115 | 102 |
|
| 103 |
try {
|
|
| 104 |
SearchEnginesManager.getCQPSearchEngine().stop(); |
|
| 105 |
} catch (Exception e1) {
|
|
| 106 |
// TODO Auto-generated catch block |
|
| 107 |
e1.printStackTrace(); |
|
| 108 |
} |
|
| 109 |
|
|
| 116 | 110 |
File corporaDirectory = new File(Toolbox.getTxmHomePath(), "corpora"); |
| 117 | 111 |
if (!corporaDirectory.exists()) {
|
| 118 | 112 |
System.out.println("Corpora directory not found. Aborting.");
|
| 113 |
try {
|
|
| 114 |
SearchEnginesManager.getCQPSearchEngine().start(null); |
|
| 115 |
} catch (Exception e) {
|
|
| 116 |
// TODO Auto-generated catch block |
|
| 117 |
e.printStackTrace(); |
|
| 118 |
} |
|
| 119 | 119 |
return Status.CANCEL_STATUS; |
| 120 | 120 |
} |
| 121 |
|
|
| 122 |
final Project newProject2 = loadBinaryCorpusFromCorporaDirectory(corporaDirectory, this, monitor); |
|
| 123 |
|
|
| 124 |
this.acquireSemaphore(); |
|
| 121 | 125 |
try {
|
| 122 |
monitor.beginTask(TXMUIMessages.AddBase_27, 100); |
|
| 123 |
this.acquireSemaphore(); |
|
| 124 |
Toolbox.getEngineManager(EngineType.SEARCH).stopEngines(); |
|
| 125 |
this.releaseSemaphore(); |
|
| 126 |
SearchEnginesManager.getCQPSearchEngine().start(null); |
|
| 127 |
} catch (Exception e) {
|
|
| 128 |
// TODO Auto-generated catch block |
|
| 129 |
e.printStackTrace(); |
|
| 130 |
} |
|
| 131 |
this.releaseSemaphore(); |
|
| 126 | 132 |
|
| 127 |
monitor.subTask(TXMUIMessages.AddBase_32); |
|
| 128 |
for (File corpusDirectory : directory.listFiles()) {
|
|
| 129 |
|
|
| 130 |
if (corpusDirectory.isDirectory() && new File(corpusDirectory, "import.xml").exists()) {
|
|
| 131 |
// seems like a binary corpus directory |
|
| 132 |
// copy files in the new current corpora directory |
|
| 133 |
File destDir = new File(corporaDirectory, corpusDirectory.getName()); |
|
| 134 |
if (destDir.exists()) {
|
|
| 135 |
System.out.println("Le répertoire "+destDir+" existe déjà. Chargement du corpus de répertoire "+corpusDirectory.getName()+" ignoré.");
|
|
| 136 |
continue; |
|
| 137 |
} |
|
| 138 |
|
|
| 139 |
FileCopy.copyFiles(corpusDirectory, destDir); |
|
| 140 |
|
|
| 141 |
corpusDirectory = destDir; |
|
| 142 |
} else if (corpusDirectory.getName().endsWith(".txm")) {
|
|
| 143 |
// corpusDirectory is a TXM archive |
|
| 144 |
String basedirname = Zip.getRoot(corpusDirectory); |
|
| 145 |
File destDir = new File(corporaDirectory, basedirname); |
|
| 146 |
if (destDir.exists()) {
|
|
| 147 |
System.out.println("Le répertoire "+destDir+" existe déjà. Chargement du corpus "+corpusDirectory.getName()+" ignoré.");
|
|
| 148 |
continue; |
|
| 149 |
} |
|
| 150 |
Zip.decompress(corpusDirectory.getAbsolutePath(), corporaDirectory.getAbsolutePath(), false, this); |
|
| 151 |
corpusDirectory = destDir; |
|
| 152 |
} else {
|
|
| 153 |
continue; // not a corpus |
|
| 133 |
this.syncExec(new Runnable() {
|
|
| 134 |
@Override |
|
| 135 |
public void run() {
|
|
| 136 |
|
|
| 137 |
if (newProject2 != null) {
|
|
| 138 |
Project.loadTXMResultsFromProjectScope(newProject2.getRCPProject()); |
|
| 154 | 139 |
} |
| 155 |
|
|
| 156 |
if (!corpusDirectory.exists()) {
|
|
| 157 |
continue; |
|
| 158 |
} |
|
| 159 |
|
|
| 160 |
Project base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(corpusDirectory); |
|
| 161 |
if (base == null) {
|
|
| 162 |
System.out.println("Fail to load binary corpus: "+corpusDirectory);
|
|
| 163 |
} |
|
| 140 |
|
|
| 141 |
RestartTXM.reloadViews(); |
|
| 142 |
System.err.println(TXMUIMessages.info_txmIsReady); |
|
| 143 |
StatusLine.setMessage(TXMUIMessages.info_txmIsReady); |
|
| 164 | 144 |
} |
| 145 |
}); |
|
| 146 |
|
|
| 147 |
return Status.OK_STATUS; |
|
| 148 |
} |
|
| 149 |
}; |
|
| 165 | 150 |
|
| 166 |
monitor.subTask(TXMUIMessages.AddBase_33); |
|
| 151 |
jobhandler.schedule(); |
|
| 152 |
return jobhandler; |
|
| 153 |
} |
|
| 167 | 154 |
|
| 168 |
this.acquireSemaphore(); |
|
| 169 |
org.txm.Toolbox.restartWorkspace(monitor); |
|
| 170 |
Toolbox.getEngineManager(EngineType.SEARCH).startEngines(monitor); |
|
| 171 |
this.releaseSemaphore(); |
|
| 155 |
/** |
|
| 156 |
* dont manage SearchEngine state |
|
| 157 |
* |
|
| 158 |
* @param corporaDirectory |
|
| 159 |
* @param job |
|
| 160 |
* @param monitor |
|
| 161 |
* @return |
|
| 162 |
*/ |
|
| 163 |
protected static Project loadBinaryCorpusFromCorporaDirectory(File corporaDirectory, JobHandler job, IProgressMonitor monitor) {
|
|
| 164 |
Project project = null; |
|
| 165 |
|
|
| 166 |
try {
|
|
| 167 |
|
|
| 168 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 169 |
if (engine.isRunning()) {
|
|
| 170 |
engine.stop(); |
|
| 171 |
} |
|
| 172 |
|
|
| 173 |
monitor.beginTask(TXMUIMessages.AddBase_27, 100); |
|
| 174 |
job.acquireSemaphore(); |
|
| 175 |
Toolbox.getEngineManager(EngineType.SEARCH).stopEngines(); |
|
| 176 |
job.releaseSemaphore(); |
|
| 172 | 177 |
|
| 178 |
monitor.subTask(TXMUIMessages.AddBase_32); |
|
| 179 |
for (File corpusDirectory : corporaDirectory.listFiles()) {
|
|
| 173 | 180 |
|
| 174 |
syncExec(new Runnable() {
|
|
| 175 |
@Override |
|
| 176 |
public void run() {
|
|
| 177 |
RestartTXM.reloadViews(); |
|
| 178 |
System.err.println(TXMUIMessages.info_txmIsReady); |
|
| 179 |
StatusLine.setMessage(TXMUIMessages.info_txmIsReady); |
|
| 180 |
} |
|
| 181 |
}); |
|
| 182 |
} catch (ThreadDeath td) {
|
|
| 183 |
return Status.CANCEL_STATUS; |
|
| 184 |
} catch (Exception e2) {
|
|
| 185 |
org.txm.rcp.utils.Logger.printStackTrace(e2); |
|
| 186 |
return Status.CANCEL_STATUS; |
|
| 187 |
} finally {
|
|
| 188 |
monitor.done(); |
|
| 181 |
if (corpusDirectory.isDirectory()) {
|
|
| 182 |
project = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(corpusDirectory, monitor); |
|
| 183 |
} else if (corpusDirectory.getName().endsWith(".txm")) {
|
|
| 184 |
project = LoadBinaryCorpus.loadBinaryCorpusArchive(corpusDirectory, job, monitor); |
|
| 185 |
} else {
|
|
| 186 |
continue; // not a corpus |
|
| 189 | 187 |
} |
| 190 | 188 |
|
| 191 |
return Status.OK_STATUS; |
|
| 189 |
// Project base = LoadBinaryCorpus.loadBinaryCorpusAsDirectory(corpusDirectory); |
|
| 190 |
// if (base == null) {
|
|
| 191 |
// System.out.println("Fail to load binary corpus: "+corpusDirectory);
|
|
| 192 |
// } |
|
| 192 | 193 |
} |
| 193 |
}; |
|
| 194 | 194 |
|
| 195 |
jobhandler.schedule(); |
|
| 196 |
return jobhandler; |
|
| 195 |
monitor.subTask(TXMUIMessages.AddBase_33); |
|
| 196 |
|
|
| 197 |
} catch (ThreadDeath td) {
|
|
| 198 |
return null; |
|
| 199 |
} catch (Exception e2) {
|
|
| 200 |
org.txm.rcp.utils.Logger.printStackTrace(e2); |
|
| 201 |
return null; |
|
| 202 |
} finally {
|
|
| 203 |
monitor.done(); |
|
| 204 |
} |
|
| 205 |
|
|
| 206 |
return project; |
|
| 197 | 207 |
} |
| 198 | 208 |
} |
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/Load079BinaryCorpus.java (revision 1171) | ||
|---|---|---|
| 64 | 64 |
|
| 65 | 65 |
String basedirname = Zip.getRoot(zipFile); |
| 66 | 66 |
|
| 67 |
if (!Zip.hasEntries(zipFile, "import.xml", "data")) {
|
|
| 67 |
if (!Zip.hasEntries(zipFile, basedirname+"/import.xml", basedirname+"/data/", basedirname+"/txm/", basedirname+"/HTML/", basedirname+"/registry/")) {
|
|
| 68 |
System.out.println("Binary corpus is not a TXM 0.7.9 corpus (no import.xml file)");
|
|
| 68 | 69 |
return null; |
| 69 | 70 |
} |
| 70 | 71 |
|
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/LoadBinaryCorpus.java (revision 1171) | ||
|---|---|---|
| 55 | 55 |
import org.txm.searchengine.core.SearchEnginesManager; |
| 56 | 56 |
import org.txm.searchengine.cqp.corpus.MainCorpus; |
| 57 | 57 |
import org.txm.utils.DeleteDir; |
| 58 |
import org.txm.utils.io.FileCopy; |
|
| 58 | 59 |
import org.txm.utils.logger.Log; |
| 59 | 60 |
import org.txm.utils.zip.Zip; |
| 60 | 61 |
|
| 61 |
// TODO: Auto-generated Javadoc |
|
| 62 | 62 |
/** |
| 63 |
* Create a base from binary files of a base.
|
|
| 63 |
* Create a project from one binary file (zip or directory)
|
|
| 64 | 64 |
* |
| 65 | 65 |
* @author mdecorde |
| 66 | 66 |
*/ |
| ... | ... | |
| 100 | 100 |
return null; |
| 101 | 101 |
} |
| 102 | 102 |
|
| 103 |
private void restoreCorpus(File backup, File basedir) {
|
|
| 104 |
System.out.println(TXMUIMessages.LoadBinaryCorpus_10+basedir.getName()+TXMUIMessages.LoadBinaryCorpus_11); |
|
| 105 |
if (backup.exists()) {
|
|
| 106 |
System.out.println(TXMUIMessages.LoadBinaryCorpus_12); |
|
| 107 |
DeleteDir.deleteDirectory(basedir); |
|
| 108 |
if (basedir.exists()) {
|
|
| 109 |
System.out.println(TXMUIMessages.LoadBinaryCorpus_13+basedir+TXMUIMessages.LoadBinaryCorpus_14+backup); |
|
| 110 |
return; |
|
| 111 |
} |
|
| 112 |
if (!backup.renameTo(basedir)) {
|
|
| 113 |
System.out.println(TXMUIMessages.LoadBinaryCorpus_15+backup); |
|
| 114 |
return; |
|
| 115 |
} |
|
| 116 |
org.txm.Toolbox.restartWorkspace(null); |
|
| 117 |
Toolbox.getEngineManager(EngineType.SEARCH).restartEngines(); |
|
| 118 |
} |
|
| 119 |
} |
|
| 120 |
|
|
| 121 | 103 |
/** |
| 122 | 104 |
* Load a binary corpus archive: |
| 123 | 105 |
* |
| ... | ... | |
| 127 | 109 |
* 4- load the binary corpus directory |
| 128 | 110 |
* 5- restart TXM engines |
| 129 | 111 |
*/ |
| 130 |
public boolean loadBinaryCorpusArchive(final File zipFile) throws ExecutionException {
|
|
| 112 |
public static boolean loadBinaryCorpusArchive(final File zipFile) throws ExecutionException {
|
|
| 131 | 113 |
|
| 132 | 114 |
String filename = zipFile.getName(); |
| 133 | 115 |
final File corporaDir = Toolbox.workspace.getLocation(); |
| ... | ... | |
| 144 | 126 |
return false; |
| 145 | 127 |
} |
| 146 | 128 |
|
| 147 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 148 |
if (engine.isRunning()) {
|
|
| 149 |
try {
|
|
| 150 |
engine.stop(); |
|
| 151 |
} catch (Exception e) {
|
|
| 152 |
// TODO Auto-generated catch block |
|
| 153 |
e.printStackTrace(); |
|
| 154 |
} |
|
| 129 |
try {
|
|
| 130 |
SearchEnginesManager.getCQPSearchEngine().stop(); |
|
| 131 |
} catch (Exception e1) {
|
|
| 132 |
// TODO Auto-generated catch block |
|
| 133 |
e1.printStackTrace(); |
|
| 155 | 134 |
} |
| 156 | 135 |
|
| 157 | 136 |
//build binary dir path |
| 158 |
basedirname = Zip.getRoot(zipFile); |
|
| 137 |
String basedirname = Zip.getRoot(zipFile);
|
|
| 159 | 138 |
|
| 160 |
corpusdir = new File(corporaDir, basedirname); |
|
| 139 |
File corpusdir = new File(corporaDir, basedirname);
|
|
| 161 | 140 |
|
| 162 | 141 |
if (corpusdir.exists()) {
|
| 163 | 142 |
boolean b = MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), TXMUIMessages.AddBase_19, NLS.bind(TXMUIMessages.AddBase_20, corpusdir.getName().toUpperCase())); |
| ... | ... | |
| 176 | 155 |
|
| 177 | 156 |
Project p = Toolbox.workspace.getProject(basedirname); |
| 178 | 157 |
if (p != null) {
|
| 179 |
p.clean();
|
|
| 158 |
p.delete();
|
|
| 180 | 159 |
} else {
|
| 181 | 160 |
DeleteDir.deleteDirectory(corpusdir); |
| 182 | 161 |
} |
| 183 | 162 |
|
| 184 | 163 |
if (corpusdir.exists()) {
|
| 185 | 164 |
System.out.println("Error: previous binary corpus directory was not deleted: "+corpusdir);
|
| 165 |
try {
|
|
| 166 |
SearchEnginesManager.getCQPSearchEngine().start(null); |
|
| 167 |
} catch (Exception e) {
|
|
| 168 |
// TODO Auto-generated catch block |
|
| 169 |
e.printStackTrace(); |
|
| 170 |
} |
|
| 186 | 171 |
return false; |
| 187 | 172 |
} |
| 188 | 173 |
} else {
|
| 174 |
try {
|
|
| 175 |
SearchEnginesManager.getCQPSearchEngine().start(null); |
|
| 176 |
} catch (Exception e) {
|
|
| 177 |
// TODO Auto-generated catch block |
|
| 178 |
e.printStackTrace(); |
|
| 179 |
} |
|
| 189 | 180 |
return false; // abandon |
| 190 | 181 |
} |
| 191 | 182 |
} |
| ... | ... | |
| 196 | 187 |
@Override |
| 197 | 188 |
protected IStatus run(final IProgressMonitor monitor) {
|
| 198 | 189 |
this.runInit(monitor); |
| 199 |
try {
|
|
| 200 |
//CHECK ZIPPED FILE |
|
| 201 |
Project newProject = Load080BinaryCorpus.loadBinaryCorpus(zipFile, monitor); |
|
| 202 |
if (newProject == null) {
|
|
| 203 |
newProject = Load079BinaryCorpus.loadBinaryCorpusArchive(zipFile, monitor); |
|
| 204 |
} |
|
| 205 |
if (newProject == null) {
|
|
| 206 |
System.out.println("Error: cant load corpus from file="+zipFile);
|
|
| 207 |
return Status.CANCEL_STATUS; |
|
| 208 |
} |
|
| 209 |
|
|
| 210 |
final Project newProject2 = newProject; |
|
| 211 |
syncExec(new Runnable() {
|
|
| 212 |
@Override |
|
| 213 |
public void run() {
|
|
| 214 |
|
|
| 215 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 216 |
if (!engine.isRunning()) {
|
|
| 217 |
try {
|
|
| 218 |
engine.start(monitor); |
|
| 219 |
} catch (Exception e) {
|
|
| 220 |
// TODO Auto-generated catch block |
|
| 221 |
e.printStackTrace(); |
|
| 222 |
} |
|
| 223 |
} |
|
| 224 |
|
|
| 190 |
final Project newProject2 = loadBinaryCorpusArchive(zipFile, this, monitor); |
|
| 191 |
|
|
| 192 |
this.syncExec(new Runnable() {
|
|
| 193 |
@Override |
|
| 194 |
public void run() {
|
|
| 195 |
|
|
| 196 |
try {
|
|
| 197 |
SearchEnginesManager.getCQPSearchEngine().start(); |
|
| 198 |
} catch (Exception e) {
|
|
| 199 |
e.printStackTrace(); |
|
| 200 |
} |
|
| 201 |
|
|
| 202 |
if (newProject2 != null) {
|
|
| 203 |
Project.loadTXMResultsFromProjectScope(newProject2.getRCPProject()); |
|
| 225 | 204 |
RestartTXM.reloadViews(); |
| 226 | 205 |
//System.out.println("Select newly loaded corpus: "+base2.getCorpora().values());
|
| 227 | 206 |
CorporaView.select(newProject2.getChildren(MainCorpus.class)); |
| 228 | 207 |
System.err.println(TXMUIMessages.info_txmIsReady); |
| 229 | 208 |
StatusLine.setMessage(TXMUIMessages.info_txmIsReady); |
| 209 |
} else {
|
|
| 210 |
System.out.println("Error: no project loaded.");
|
|
| 230 | 211 |
} |
| 231 |
}); |
|
| 232 |
} catch (ThreadDeath td) {
|
|
| 233 |
return Status.CANCEL_STATUS; |
|
| 234 |
} catch (Exception e2) {
|
|
| 235 |
org.txm.rcp.utils.Logger.printStackTrace(e2); |
|
| 236 |
} finally {
|
|
| 237 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 238 |
if (!engine.isRunning()) {
|
|
| 239 |
try {
|
|
| 240 |
engine.start(monitor); |
|
| 241 |
} catch (Exception e) {
|
|
| 242 |
// TODO Auto-generated catch block |
|
| 243 |
e.printStackTrace(); |
|
| 244 |
} |
|
| 245 | 212 |
} |
| 246 |
monitor.done(); |
|
| 247 |
} |
|
| 213 |
}); |
|
| 248 | 214 |
return Status.OK_STATUS; |
| 249 | 215 |
//return Status.CANCEL_STATUS; |
| 250 | 216 |
} |
| ... | ... | |
| 258 | 224 |
|
| 259 | 225 |
return true; |
| 260 | 226 |
} |
| 227 |
|
|
| 228 |
/** |
|
| 229 |
* don't manage the SearchEngine restart |
|
| 230 |
* |
|
| 231 |
* @param zipFile |
|
| 232 |
* @param jobhandler |
|
| 233 |
* @param monitor |
|
| 234 |
* @return |
|
| 235 |
*/ |
|
| 236 |
public static Project loadBinaryCorpusArchive(File zipFile, JobHandler jobhandler, final IProgressMonitor monitor) {
|
|
| 237 |
Project project = null; |
|
| 238 |
try {
|
|
| 239 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 240 |
if (engine.isRunning()) {
|
|
| 241 |
engine.stop(); |
|
| 242 |
} |
|
| 243 |
|
|
| 244 |
//CHECK ZIPPED FILE |
|
| 245 |
project = Load080BinaryCorpus.loadBinaryCorpus(zipFile, monitor); |
|
| 246 |
if (project == null) {
|
|
| 247 |
project = Load079BinaryCorpus.loadBinaryCorpusArchive(zipFile, monitor); |
|
| 248 |
} |
|
| 249 |
if (project == null) {
|
|
| 250 |
System.out.println("Error: cant load corpus from file="+zipFile);
|
|
| 251 |
return null; |
|
| 252 |
} |
|
| 253 |
|
|
| 254 |
// final Project newProject2 = project; |
|
| 255 |
// jobhandler.syncExec(new Runnable() {
|
|
| 256 |
// @Override |
|
| 257 |
// public void run() {
|
|
| 258 |
// |
|
| 259 |
// SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 260 |
// if (!engine.isRunning()) {
|
|
| 261 |
// try {
|
|
| 262 |
// engine.start(monitor); |
|
| 263 |
// } catch (Exception e) {
|
|
| 264 |
// // TODO Auto-generated catch block |
|
| 265 |
// e.printStackTrace(); |
|
| 266 |
// } |
|
| 267 |
// } |
|
| 268 |
// |
|
| 269 |
// RestartTXM.reloadViews(); |
|
| 270 |
// //System.out.println("Select newly loaded corpus: "+base2.getCorpora().values());
|
|
| 271 |
// CorporaView.select(newProject2.getChildren(MainCorpus.class)); |
|
| 272 |
// System.err.println(TXMUIMessages.info_txmIsReady); |
|
| 273 |
// StatusLine.setMessage(TXMUIMessages.info_txmIsReady); |
|
| 274 |
// } |
|
| 275 |
// }); |
|
| 276 |
} catch (ThreadDeath td) {
|
|
| 277 |
return null; |
|
| 278 |
} catch (Exception e2) {
|
|
| 279 |
org.txm.rcp.utils.Logger.printStackTrace(e2); |
|
| 280 |
return null; |
|
| 281 |
} finally {
|
|
| 282 |
|
|
| 283 |
} |
|
| 284 |
return project; |
|
| 285 |
} |
|
| 261 | 286 |
|
| 262 | 287 |
/** |
| 263 | 288 |
* load the content of the file if its a directory containing at least the sub folders : |
| ... | ... | |
| 267 | 292 |
* @return the base |
| 268 | 293 |
* @throws Exception the exception |
| 269 | 294 |
*/ |
| 270 |
public static Project loadBinaryCorpusAsDirectory(File binCorpusDirectory) throws Exception {
|
|
| 271 |
if (!(binCorpusDirectory.exists() && binCorpusDirectory.isDirectory())) {
|
|
| 272 |
Log.severe(NLS.bind(TXMUIMessages.AddBase_24, binCorpusDirectory.getAbsolutePath()));
|
|
| 273 |
System.out.println(NLS.bind(TXMUIMessages.AddBase_24, binCorpusDirectory.getAbsolutePath()));
|
|
| 295 |
public static Project loadBinaryCorpusAsDirectory(File corpusDirectory, IProgressMonitor monitor) throws Exception {
|
|
| 296 |
if (!(corpusDirectory.exists() && corpusDirectory.isDirectory())) {
|
|
| 297 |
Log.severe(NLS.bind(TXMUIMessages.AddBase_24, corpusDirectory.getAbsolutePath()));
|
|
| 298 |
System.out.println(NLS.bind(TXMUIMessages.AddBase_24, corpusDirectory.getAbsolutePath()));
|
|
| 274 | 299 |
return null; |
| 275 | 300 |
} |
| 276 | 301 |
|
| 277 |
//File txmregistry = new File(Toolbox.getTxmHomePath(), "registry"); //$NON-NLS-1$ |
|
| 278 |
//txmregistry.mkdir(); |
|
| 279 |
File txmcorpora = new File(Toolbox.getTxmHomePath(), "corpora"); //$NON-NLS-1$ |
|
| 280 |
txmcorpora.mkdir(); |
|
| 281 |
Project base = Toolbox.workspace.scanDirectory(binCorpusDirectory); |
|
| 282 |
if (base == null) {
|
|
| 283 |
Log.severe(NLS.bind(TXMUIMessages.AddBase_2, binCorpusDirectory)); |
|
| 284 |
return null; |
|
| 302 |
SearchEngine engine = SearchEnginesManager.getCQPSearchEngine(); |
|
| 303 |
if (engine.isRunning()) {
|
|
| 304 |
engine.stop(); |
|
| 285 | 305 |
} |
| 286 |
|
|
| 287 |
Toolbox.workspace.save(); |
|
| 288 |
return base; |
|
| 306 |
|
|
| 307 |
// //File txmregistry = new File(Toolbox.getTxmHomePath(), "registry"); //$NON-NLS-1$ |
|
| 308 |
// //txmregistry.mkdir(); |
|
| 309 |
// File txmcorpora = new File(Toolbox.getTxmHomePath(), "corpora"); //$NON-NLS-1$ |
|
| 310 |
// txmcorpora.mkdir(); |
|
| 311 |
// Project base = Toolbox.workspace.scanDirectory(binCorpusDirectory); |
|
| 312 |
// if (base == null) {
|
|
| 313 |
// Log.severe(NLS.bind(TXMUIMessages.AddBase_2, binCorpusDirectory)); |
|
| 314 |
// return null; |
|
| 315 |
// } |
|
| 316 |
// |
|
| 317 |
// Toolbox.workspace.save(); |
|
| 318 |
|
|
| 319 |
// seems like a binary corpus directory |
|
| 320 |
// copy files in the new current corpora directory |
|
| 321 |
File destDir = new File(Toolbox.workspace.getLocation(), corpusDirectory.getName().toUpperCase()); |
|
| 322 |
if (!destDir.equals(corpusDirectory) && !destDir.exists()) {
|
|
| 323 |
FileCopy.copyFiles(corpusDirectory, destDir); // the corpus directory is not in the corpora directory |
|
| 324 |
} |
|
| 325 |
|
|
| 326 |
Project project = null; |
|
| 327 |
File paramFile = new File(destDir, ".settings"); |
|
| 328 |
if (paramFile.exists() && paramFile.isDirectory()) {
|
|
| 329 |
project = Load080BinaryCorpus.loadBinaryCorpusAsDirectory(destDir); |
|
| 330 |
// continue; |
|
| 331 |
} |
|
| 332 |
|
|
| 333 |
paramFile = new File(destDir, "import.xml"); |
|
| 334 |
if (paramFile.exists()) {
|
|
| 335 |
project = Load079BinaryCorpus.loadBinaryCorpusAsDirectory(destDir, null); |
|
| 336 |
// continue; |
|
| 337 |
} |
|
| 338 |
|
|
| 339 |
return project; |
|
| 289 | 340 |
} |
| 290 | 341 |
} |
| tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/ImportSelectedText.java (revision 1171) | ||
|---|---|---|
| 43 | 43 |
import org.txm.Toolbox; |
| 44 | 44 |
import org.txm.core.preferences.TBXPreferences; |
| 45 | 45 |
import org.txm.objects.Project; |
| 46 |
import org.txm.objects.Workspace; |
|
| 46 | 47 |
import org.txm.rcp.handlers.scripts.ExecuteImportScript; |
| 47 | 48 |
import org.txm.rcp.messages.TXMUIMessages; |
| 48 | 49 |
import org.txm.searchengine.cqp.corpus.CorpusManager; |
| ... | ... | |
| 127 | 128 |
|
| 128 | 129 |
|
| 129 | 130 |
// configure project |
| 130 |
Project project = Toolbox.workspace.getProject(clipboardDirectory.getName()); |
|
| 131 |
Workspace w = Toolbox.workspace; |
|
| 132 |
Project project = w.getProject(clipboardDirectory.getName()); |
|
| 131 | 133 |
if (project == null) {
|
| 132 |
project = new Project(Toolbox.workspace, clipboardDirectory.getName());
|
|
| 134 |
project = new Project(w, clipboardDirectory.getName());
|
|
| 133 | 135 |
} |
| 134 | 136 |
project.setSourceDirectory(clipboardDirectory.getAbsolutePath()); |
| 135 | 137 |
project.setImportModuleName("txt");
|
| tmp/org.txm.rcp/plugin.xml (revision 1171) | ||
|---|---|---|
| 29 | 29 |
<product |
| 30 | 30 |
application="org.txm.rcp.Application" |
| 31 | 31 |
description="%product.description" |
| 32 |
name="%product.name.3">
|
|
| 32 |
name="TXM">
|
|
| 33 | 33 |
<property |
| 34 | 34 |
name="appName" |
| 35 | 35 |
value="TXM"> |
| ... | ... | |
| 2074 | 2074 |
</command> |
| 2075 | 2075 |
<command |
| 2076 | 2076 |
commandId="org.txm.rcp.handlers.results.SetTXMResultPersistentState" |
| 2077 |
icon="icons/decorators/bullet_green.png" |
|
| 2078 | 2077 |
mode="FORCE_TEXT" |
| 2079 | 2078 |
style="toggle"> |
| 2080 | 2079 |
<visibleWhen |
| tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java (revision 1171) | ||
|---|---|---|
| 106 | 106 |
* Parameters node path. Concatenation of the Project scope path + the result uuid |
| 107 | 107 |
*/ |
| 108 | 108 |
protected String parametersNodePath; |
| 109 |
|
|
| 109 |
|
|
| 110 | 110 |
/** |
| 111 | 111 |
* If set, allows the command to notify its progress. |
| 112 | 112 |
*/ |
| ... | ... | |
| 124 | 124 |
// The problem is since the result is already computing, the parameters are already updated and the method hasParameterChanged() will always return false. Using this stack fix the problem. |
| 125 | 125 |
// But this stack is also the start for an UNDO command on TXMResult. |
| 126 | 126 |
protected ArrayList<HashMap<String, Object>> parametersHistory = new ArrayList<HashMap<String, Object>>(); |
| 127 |
|
|
| 128 | 127 |
|
| 128 |
|
|
| 129 | 129 |
/** |
| 130 | 130 |
* Internal persistable state. |
| 131 | 131 |
*/ |
| ... | ... | |
| 136 | 136 |
*/ |
| 137 | 137 |
protected boolean userPersistable; |
| 138 | 138 |
|
| 139 |
|
|
| 140 |
|
|
| 139 |
|
|
| 140 |
|
|
| 141 | 141 |
/** |
| 142 | 142 |
* The visibility state. |
| 143 | 143 |
*/ |
| ... | ... | |
| 159 | 159 |
|
| 160 | 160 |
|
| 161 | 161 |
|
| 162 |
|
|
| 163 | 162 |
|
| 163 |
|
|
| 164 | 164 |
/** |
| 165 | 165 |
* Creates a new TXMResult, child of the specified parent. |
| 166 | 166 |
* @param parent |
| ... | ... | |
| 177 | 177 |
public TXMResult(String parametersNodePath) {
|
| 178 | 178 |
this(parametersNodePath, null); |
| 179 | 179 |
} |
| 180 |
|
|
| 180 |
|
|
| 181 | 181 |
/** |
| 182 | 182 |
* Creates a new TXMResult, child of the specified parent. |
| 183 | 183 |
* If the parameters node path is null, a new path is generated from the project root path ending by a new generated UUID. |
| ... | ... | |
| 192 | 192 |
if (parent != null) {
|
| 193 | 193 |
parent.addChild(this); |
| 194 | 194 |
} |
| 195 |
|
|
| 195 |
|
|
| 196 | 196 |
if (parametersNodePath == null) {
|
| 197 | 197 |
this.uniqueID = createUUID() + "_" + this.getClass().getSimpleName(); //$NON-NLS-1$ |
| 198 | 198 |
if (this.getProject() != null) {
|
| ... | ... | |
| 213 | 213 |
|
| 214 | 214 |
Log.finest("TXMResult.TXMResult(): parameters node path: " + this.parametersNodePath);
|
| 215 | 215 |
|
| 216 |
|
|
| 216 |
|
|
| 217 | 217 |
this.weight = 0; |
| 218 | 218 |
|
| 219 | 219 |
this.children = new ArrayList<TXMResult>(1); |
| ... | ... | |
| 222 | 222 |
this.commandPreferencesNodePath = FrameworkUtil.getBundle(getClass()).getSymbolicName(); //$NON-NLS-1$ |
| 223 | 223 |
Log.finest("TXMResult.TXMResult(): command preferences node path: " + this.commandPreferencesNodePath);
|
| 224 | 224 |
|
| 225 |
|
|
| 225 |
|
|
| 226 | 226 |
this.visible = true; |
| 227 | 227 |
this.dirty = true; |
| 228 | 228 |
this.internalPersistable = false; |
| ... | ... | |
| 231 | 231 |
|
| 232 | 232 |
// retrieving parent from UUID |
| 233 | 233 |
String parentUUID = this.getStringParameterValue(TXMPreferences.PARENT_UUID); |
| 234 |
|
|
| 234 |
|
|
| 235 | 235 |
//System.out.println("TXMResult.TXMResult(): parent UUID = " + parentUUID);
|
| 236 |
|
|
| 236 |
|
|
| 237 | 237 |
if (!("ROOT".equals(this.uniqueID)) && // search for parent only if UUID != "ROOT"
|
| 238 | 238 |
parent == null && |
| 239 | 239 |
this.uniqueID != null && |
| ... | ... | |
| 260 | 260 |
Log.severe("Fail to load " + uniqueID + "result: " + e);
|
| 261 | 261 |
Log.printStackTrace(e); |
| 262 | 262 |
} |
| 263 |
|
|
| 263 |
|
|
| 264 | 264 |
// Log |
| 265 | 265 |
if (this.parent == null) {
|
| 266 | 266 |
Log.warning("Warning: the TXMResult of " + this.getClass() + " is attached to no parent. (uuid = " + this.getUUID() + ")");
|
| 267 | 267 |
} |
| 268 |
|
|
| 268 |
|
|
| 269 | 269 |
try {
|
| 270 | 270 |
this.parametersHistory.add(new HashMap<String, Object>()); |
| 271 | 271 |
//this.updateLastParameters(); |
| ... | ... | |
| 294 | 294 |
//this.uniqueID = this.getClass().getName() + '@' + ID_TIME_FORMAT.format(new Date(System.currentTimeMillis())) + "_" + UUID.randomUUID(); |
| 295 | 295 |
return UUID_PREFIX + ID_TIME_FORMAT.format(new Date(System.currentTimeMillis())) + "_" + UUID.randomUUID(); |
| 296 | 296 |
} |
| 297 |
|
|
| 297 |
|
|
| 298 | 298 |
/** |
| 299 | 299 |
* Checks if the result at least one child. |
| 300 | 300 |
* @return |
| ... | ... | |
| 303 | 303 |
return this.children.size() > 0; |
| 304 | 304 |
} |
| 305 | 305 |
|
| 306 |
|
|
| 306 |
|
|
| 307 | 307 |
/** |
| 308 | 308 |
* Gets the preferences node path of the result command. |
| 309 | 309 |
* |
| ... | ... | |
| 313 | 313 |
return this.commandPreferencesNodePath; |
| 314 | 314 |
} |
| 315 | 315 |
|
| 316 |
|
|
| 316 |
|
|
| 317 | 317 |
public String[] getCommandPreferencesKeys() throws BackingStoreException {
|
| 318 | 318 |
return TXMPreferences.getCommandScopeKeys(this.commandPreferencesNodePath); |
| 319 | 319 |
} |
| ... | ... | |
| 331 | 331 |
public Object getParameter(String key) {
|
| 332 | 332 |
return getParameter(key, false); |
| 333 | 333 |
} |
| 334 |
|
|
| 334 |
|
|
| 335 | 335 |
/** |
| 336 | 336 |
* Gets a current parameter specified by its annotation "key" attribute and its annotation "type" attribute. |
| 337 | 337 |
* @param key |
| ... | ... | |
| 392 | 392 |
|
| 393 | 393 |
List<Field> fields = new ArrayList<Field>(); |
| 394 | 394 |
Class<?> clazz = this.getClass(); |
| 395 |
|
|
| 395 |
|
|
| 396 | 396 |
while (clazz != Object.class) {
|
| 397 | 397 |
fields.addAll(Arrays.asList(clazz.getDeclaredFields())); |
| 398 | 398 |
clazz = clazz.getSuperclass(); |
| ... | ... | |
| 419 | 419 |
protected void updateLastParameters(int parameterType, boolean appendToLastParameters) throws Exception {
|
| 420 | 420 |
|
| 421 | 421 |
HashMap<String, Object> lastParameters; |
| 422 |
|
|
| 422 |
|
|
| 423 | 423 |
if(appendToLastParameters) {
|
| 424 | 424 |
lastParameters = this.getLastParametersFromHistory(); |
| 425 | 425 |
} |
| 426 | 426 |
else {
|
| 427 | 427 |
lastParameters = new HashMap<>(); |
| 428 | 428 |
} |
| 429 |
|
|
| 429 |
|
|
| 430 | 430 |
List<Field> fields = this.getAllFields(); |
| 431 | 431 |
|
| 432 | 432 |
for (Field f : fields) {
|
| ... | ... | |
| 446 | 446 |
f.setAccessible(true); |
| 447 | 447 |
lastParameters.put(name, f.get(this)); |
| 448 | 448 |
} |
| 449 |
|
|
| 449 |
|
|
| 450 | 450 |
if(!appendToLastParameters) {
|
| 451 | 451 |
this.parametersHistory.add(lastParameters); |
| 452 | 452 |
} |
| 453 |
|
|
| 453 |
|
|
| 454 | 454 |
// truncate the stack to the max count |
| 455 | 455 |
// FIXME: store this in a TBX preference |
| 456 | 456 |
if(this.parametersHistory.size() > 5) {
|
| ... | ... | |
| 458 | 458 |
this.parametersHistory.remove(0); |
| 459 | 459 |
this.parametersHistory.remove(0); |
| 460 | 460 |
} |
| 461 |
|
|
| 461 |
|
|
| 462 | 462 |
} |
| 463 |
|
|
| 463 |
|
|
| 464 | 464 |
/** |
| 465 | 465 |
* Stores the last parameters used for computing. |
| 466 | 466 |
* @throws Exception |
| ... | ... | |
| 547 | 547 |
if (this.isDirty()) {
|
| 548 | 548 |
return true; |
| 549 | 549 |
} |
| 550 |
|
|
| 550 |
|
|
| 551 | 551 |
Object lastValue = lastParameters.get(key); |
| 552 | 552 |
Object newValue = this.getParameter(key); |
| 553 | 553 |
if (lastValue == null) {
|
| ... | ... | |
| 680 | 680 |
* @throws IllegalArgumentException |
| 681 | 681 |
*/ |
| 682 | 682 |
public final boolean isDirtyFromHistory() throws Exception {
|
| 683 |
|
|
| 683 |
|
|
| 684 | 684 |
Class clazz = this.getClass(); |
| 685 | 685 |
|
| 686 | 686 |
Field[] fields = clazz.getDeclaredFields(); |
| ... | ... | |
| 703 | 703 |
} |
| 704 | 704 |
|
| 705 | 705 |
f.setAccessible(true); // to be able to test the field values |
| 706 |
|
|
| 706 |
|
|
| 707 | 707 |
Object previousValue = this.getLastParametersFromHistory().get(name); |
| 708 | 708 |
Object newValue = f.get(this); |
| 709 | 709 |
|
| 710 |
// // FIXME: debug |
|
| 711 |
// Log.finest("TXMResult.isDirtyFromHistory(): checking parameter: " + name);
|
|
| 710 |
// // FIXME: debug
|
|
| 711 |
// Log.finest("TXMResult.isDirtyFromHistory(): checking parameter: " + name);
|
|
| 712 | 712 |
|
| 713 | 713 |
this.updateDirty(previousValue, newValue); |
| 714 | 714 |
if (this.dirty) {
|
| ... | ... | |
| 719 | 719 |
return this.dirty; |
| 720 | 720 |
} |
| 721 | 721 |
|
| 722 |
|
|
| 722 |
|
|
| 723 | 723 |
public HashMap<String, Object> getLastParametersFromHistory() {
|
| 724 | 724 |
return this.parametersHistory.get(this.parametersHistory.size() - 1); |
| 725 | 725 |
} |
| 726 |
|
|
| 726 |
|
|
| 727 | 727 |
/** |
| 728 | 728 |
* Gets the dirty state. |
| 729 | 729 |
* |
| ... | ... | |
| 820 | 820 |
public boolean parameterExists(String key) {
|
| 821 | 821 |
return TXMPreferences.keyExists(this.parametersNodePath, key); |
| 822 | 822 |
} |
| 823 |
|
|
| 823 |
|
|
| 824 | 824 |
/** |
| 825 | 825 |
* Checks if a preference is empty (equals to "") in the command preference node. |
| 826 | 826 |
* An empty preference can be used to disable a functionality for a kind of result |
| ... | ... | |
| 871 | 871 |
|
| 872 | 872 |
// internal data to save for unserialization |
| 873 | 873 |
this.saveParameter("class", this.getClass().getName()); //$NON-NLS-1$
|
| 874 |
|
|
| 874 |
|
|
| 875 | 875 |
this.saveParameter(TXMPreferences.RESULT_PARAMETERS_NODE_PATH, this.parametersNodePath); |
| 876 | 876 |
this.saveParameter(TXMPreferences.RESULT_UUID, this.uniqueID); |
| 877 | 877 |
this.saveParameter(TXMPreferences.BUNDLE_ID, this.commandPreferencesNodePath); |
| ... | ... | |
| 898 | 898 |
f.getType().isAssignableFrom(float.class) || f.getType().isAssignableFrom(Float.class) || |
| 899 | 899 |
f.getType().isAssignableFrom(boolean.class) || f.getType().isAssignableFrom(Boolean.class) || |
| 900 | 900 |
f.getType().isAssignableFrom(String.class) |
| 901 |
|
|
| 901 |
|
|
| 902 | 902 |
// FIXME: do not pass a Serializable for now |
| 903 | 903 |
//|| !f.getType().isAssignableFrom(Serializable.class) |
| 904 | 904 |
//|| !Serializable.class.isInstance(f) |
| 905 |
|
|
| 905 |
|
|
| 906 | 906 |
) {
|
| 907 |
|
|
| 908 |
|
|
| 907 |
|
|
| 908 |
|
|
| 909 | 909 |
f.setAccessible(true); // set accessible to test the field values |
| 910 | 910 |
try {
|
| 911 | 911 |
Object value = f.get(this); |
| ... | ... | |
| 929 | 929 |
*/ |
| 930 | 930 |
public abstract boolean saveParameters() throws Exception; |
| 931 | 931 |
|
| 932 |
/** |
|
| 933 |
* calls saveParameters() on this and children if childrenAsWell is set to true |
|
| 934 |
* |
|
| 935 |
* only children |
|
| 936 |
* |
|
| 937 |
* @param childrenAsWell save the children parameters as well |
|
| 938 |
* @return true if all saves were successful |
|
| 939 |
* @throws Exception |
|
| 940 |
*/ |
|
| 941 |
public boolean saveParameters(boolean childrenAsWell) throws Exception {
|
|
| 932 | 942 |
|
| 943 |
boolean ret = true; |
|
| 944 |
|
|
| 945 |
if (this.mustBePersisted()) {
|
|
| 946 |
ret = this.saveParameters(); |
|
| 947 |
if (childrenAsWell) {
|
|
| 948 |
for (TXMResult r : getChildren()) {
|
|
| 949 |
ret = ret && r.saveParameters(childrenAsWell); |
|
| 950 |
} |
|
| 951 |
} |
|
| 952 |
} |
|
| 953 |
return ret; |
|
| 954 |
} |
|
| 955 |
|
|
| 956 |
public void persist(boolean childrenAsWell) {
|
|
| 957 |
if (this.mustBePersisted()) {
|
|
| 958 |
TXMPreferences.flush(this); |
|
| 959 |
for (TXMResult r : getChildren()) {
|
|
| 960 |
r.persist(childrenAsWell); |
|
| 961 |
} |
|
| 962 |
} |
|
| 963 |
} |
|
| 964 |
|
|
| 933 | 965 |
/** |
| 934 | 966 |
* |
| 935 | 967 |
* @return |
| ... | ... | |
| 1040 | 1072 |
public boolean setParameter(String key, Object value) throws Exception {
|
| 1041 | 1073 |
return setParameter(key, value, false); |
| 1042 | 1074 |
} |
| 1043 |
|
|
| 1075 |
|
|
| 1044 | 1076 |
/** |
| 1045 | 1077 |
* Sets a parameters from its parameter annotation "key". |
| 1046 | 1078 |
* @param key |
| ... | ... | |
| 1101 | 1133 |
while (this.children.size() > 0) {
|
| 1102 | 1134 |
TXMResult c = this.children.get(0); |
| 1103 | 1135 |
c.delete(); // should call parent.removeResult(child) |
| 1104 |
// TXMPreferences.delete(this.children.get(i)); |
|
| 1105 |
// this.removeChild(i); |
|
| 1136 |
// TXMPreferences.delete(this.children.get(i));
|
|
| 1137 |
// this.removeChild(i);
|
|
| 1106 | 1138 |
this.children.remove(c); // but should be done already... |
| 1107 | 1139 |
} |
| 1108 | 1140 |
this.children.clear(); |
| 1109 |
|
|
| 1141 |
|
|
| 1110 | 1142 |
//THEN FINISH WITH THIS |
| 1111 | 1143 |
// delete the local node |
| 1112 | 1144 |
TXMPreferences.delete(this); |
| 1113 |
|
|
| 1145 |
|
|
| 1114 | 1146 |
// specific cleaning |
| 1115 | 1147 |
this.clean(); |
| 1116 | 1148 |
|
| ... | ... | |
| 1319 | 1351 |
children.get(i).delete(); |
| 1320 | 1352 |
} |
| 1321 | 1353 |
} |
| 1322 |
|
|
| 1323 | 1354 |
|
| 1355 |
|
|
| 1324 | 1356 |
/** |
| 1325 | 1357 |
* Gets the first child. |
| 1326 | 1358 |
* @param classSimpleName |
| ... | ... | |
| 1407 | 1439 |
&& (onlyVisible == false || child.isVisible())) {
|
| 1408 | 1440 |
nodes.add(child); |
| 1409 | 1441 |
} |
| 1410 |
|
|
| 1442 |
|
|
| 1411 | 1443 |
// add children of a non visible result |
| 1412 | 1444 |
else if (!child.isVisible() && child.hasChildren()) {
|
| 1413 | 1445 |
List<TXMResult> subChidlren = child.getChildren(type, onlyVisible); |
| ... | ... | |
| 1427 | 1459 |
public int getChildrenCount() {
|
| 1428 | 1460 |
return this.children.size(); |
| 1429 | 1461 |
} |
| 1430 |
|
|
| 1431 |
|
|
| 1462 |
|
|
| 1463 |
|
|
| 1432 | 1464 |
/** |
| 1433 | 1465 |
* Gets the root parent of the branch. |
| 1434 | 1466 |
* @return |
| ... | ... | |
| 1458 | 1490 |
if(parent.getClass().equals(type)) {
|
| 1459 | 1491 |
node = parent; |
| 1460 | 1492 |
} |
| 1461 |
|
|
| 1493 |
|
|
| 1462 | 1494 |
parent = parent.getParent(); |
| 1463 | 1495 |
} |
| 1464 | 1496 |
} while (parent != null && node == null); |
| ... | ... | |
| 1466 | 1498 |
return node; |
| 1467 | 1499 |
} |
| 1468 | 1500 |
|
| 1469 |
|
|
| 1470 | 1501 |
|
| 1502 |
|
|
| 1471 | 1503 |
// /** |
| 1472 | 1504 |
// * Gets the first parent of the specified class, eg. this.getFirstParent(Partition.class); |
| 1473 | 1505 |
// * Returns the object itself if it is of the specified class. |
| ... | ... | |
| 1788 | 1820 |
protected boolean compute(IProgressMonitor monitor, boolean deepComputing) {
|
| 1789 | 1821 |
|
| 1790 | 1822 |
try {
|
| 1791 |
|
|
| 1792 |
|
|
| 1823 |
|
|
| 1824 |
|
|
| 1793 | 1825 |
Log.finest("*** TXMResult.compute(): " + this.getClass().getSimpleName() + ": starting computing process...");
|
| 1794 |
|
|
| 1826 |
|
|
| 1795 | 1827 |
// FIXME: see if this skipComputing tests is still useful? is it possible to directly return instead? |
| 1796 | 1828 |
// en fait voir ChartResult.compute() if(super.compute(monitor, true, false)), je pense que le prob vient du fait que si on retourne false dans TXMResult.compute() alors renderChart() ne sera pas appelé |
| 1797 | 1829 |
boolean skipComputing = false; |
| ... | ... | |
| 1804 | 1836 |
// SJ: other way, test the object itself |
| 1805 | 1837 |
// FIXME: this code shoud be moved back in the !skipComputing section ? |
| 1806 | 1838 |
if (this.parent != null && !(this.parent instanceof Project)) {
|
| 1807 |
|
|
| 1839 |
|
|
| 1808 | 1840 |
Log.finest("TXMResult.compute(): " + this.getClass().getSimpleName() + ": starting parent (" + this.parent.getClass().getSimpleName() + ") computing process...");
|
| 1809 |
|
|
| 1841 |
|
|
| 1810 | 1842 |
if (!this.parent.compute(monitor, true)) {
|
| 1811 | 1843 |
Log.severe("TXMResult.compute(): " + this.getClass().getSimpleName() + ": failed to compute parent result.");
|
| 1812 | 1844 |
|
| 1813 | 1845 |
return false; |
| 1814 | 1846 |
} |
| 1815 | 1847 |
} |
| 1816 |
|
|
| 1848 |
|
|
| 1817 | 1849 |
boolean d1 = this.isDirtyFromHistory(); |
| 1818 | 1850 |
boolean d2 = this.isDirty(); |
| 1819 | 1851 |
if (!d1 && !d2) {
|
| ... | ... | |
| 1831 | 1863 |
// TODO where do we put this parent compute ? :o |
| 1832 | 1864 |
// if (parent != null && !parent.getHasBeenComputedOnce()) { // parent must be computed at least one time
|
| 1833 | 1865 |
// SJ: other way, test the object itself |
| 1834 |
// if (this.parent != null && !(this.parent instanceof Project)) {
|
|
| 1835 |
// if (!this.parent.compute(monitor, true)) {
|
|
| 1836 |
// Log.severe("TXMResult.compute(): " + this.getClass().getSimpleName() + ": failed to compute parent result.");
|
|
| 1837 |
// |
|
| 1838 |
// //return false; |
|
| 1839 |
// } |
|
| 1840 |
// } |
|
| 1866 |
// if (this.parent != null && !(this.parent instanceof Project)) {
|
|
| 1867 |
// if (!this.parent.compute(monitor, true)) {
|
|
| 1868 |
// Log.severe("TXMResult.compute(): " + this.getClass().getSimpleName() + ": failed to compute parent result.");
|
|
| 1869 |
//
|
|
| 1870 |
// //return false;
|
|
| 1871 |
// }
|
|
| 1872 |
// }
|
|
| 1841 | 1873 |
|
| 1842 |
|
|
| 1874 |
|
|
| 1843 | 1875 |
// Computing requirements test |
| 1844 | 1876 |
if (!this.canCompute()) {
|
| 1845 | 1877 |
Log.severe("TXMResult.compute(): " + this.getClass().getSimpleName() + ": can not compute, missing or wrong parameters or error with parent computing, computing aborted.");
|
Formats disponibles : Unified diff