You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by pk...@apache.org on 2013/09/27 10:50:15 UTC
svn commit: r1526834 - in
/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui:
QueryActionHandler.java QueryComposite.java
Author: pkluegl
Date: Fri Sep 27 08:50:15 2013
New Revision: 1526834
URL: http://svn.apache.org/r1526834
Log:
UIMA-3309
- applied patch for regexp filename filter
Modified:
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryActionHandler.java
uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryComposite.java
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryActionHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryActionHandler.java?rev=1526834&r1=1526833&r2=1526834&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryActionHandler.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryActionHandler.java Fri Sep 27 08:50:15 2013
@@ -20,12 +20,14 @@
package org.apache.uima.ruta.query.ui;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.uima.UIMAFramework;
@@ -45,7 +47,6 @@ import org.apache.uima.resource.Resource
import org.apache.uima.resource.metadata.TypeSystemDescription;
import org.apache.uima.ruta.addons.RutaAddonsPlugin;
import org.apache.uima.ruta.engine.RutaEngine;
-import org.apache.uima.ruta.extensions.IEngineLoader;
import org.apache.uima.ruta.extensions.IRutaActionExtension;
import org.apache.uima.ruta.extensions.IRutaBooleanFunctionExtension;
import org.apache.uima.ruta.extensions.IRutaConditionExtension;
@@ -108,11 +109,14 @@ public class QueryActionHandler implemen
private String dataLocation;
- QueryHandlerJob(ExecutionEvent event, String dir, String typeSystem, String rules,
- boolean recurive) {
- super("Query in " + dir + "...");
+ private final String fileNameFilter;
+
+ QueryHandlerJob(ExecutionEvent event, String dir, String fileNameFilter, String typeSystem,
+ String rules, boolean recurive) {
+ super(String.format("Query in \"%s\" [filter: \"%s\"] ...", dir, fileNameFilter));
this.event = event;
this.dataLocation = dir;
+ this.fileNameFilter = fileNameFilter;
this.typeSystemLocation = typeSystem;
this.rules = rules;
this.recursive = recurive;
@@ -197,14 +201,13 @@ public class QueryActionHandler implemen
ae.setConfigParameterValue(RutaEngine.PARAM_DEBUG_WITH_MATCHES, true);
ae.setConfigParameterValue(RutaEngine.PARAM_PROFILE, false);
ae.setConfigParameterValue(RutaEngine.PARAM_STATISTICS, false);
-
-
+
IRutaConditionExtension[] conditionExtensions = RutaExtensionManager.getDefault()
.getRutaConditionExtensions();
IRutaActionExtension[] actionExtensions = RutaExtensionManager.getDefault()
.getRutaActionExtensions();
- IRutaBooleanFunctionExtension[] booleanFunctionExtensions = RutaExtensionManager.getDefault()
- .getRutaBooleanFunctionExtensions();
+ IRutaBooleanFunctionExtension[] booleanFunctionExtensions = RutaExtensionManager
+ .getDefault().getRutaBooleanFunctionExtensions();
IRutaNumberFunctionExtension[] numberFunctionExtensions = RutaExtensionManager.getDefault()
.getRutaNumberFunctionExtensions();
IRutaStringFunctionExtension[] stringFunctionExtensions = RutaExtensionManager.getDefault()
@@ -234,8 +237,7 @@ public class QueryActionHandler implemen
}
ae.setConfigParameterValue(RutaEngine.PARAM_ADDITIONAL_EXTENSIONS,
languageExtensions.toArray(new String[0]));
-
-
+
ae.reconfigure();
CAS cas = ae.newCAS();
@@ -245,7 +247,7 @@ public class QueryActionHandler implemen
if (ae != null) {
ae.destroy();
}
- if(cas != null) {
+ if (cas != null) {
cas.release();
}
return Status.CANCEL_STATUS;
@@ -263,7 +265,7 @@ public class QueryActionHandler implemen
if (ae != null) {
ae.destroy();
}
- if(cas != null) {
+ if (cas != null) {
cas.release();
}
return Status.CANCEL_STATUS;
@@ -296,7 +298,7 @@ public class QueryActionHandler implemen
if (ae != null) {
ae.destroy();
}
- if(cas != null) {
+ if (cas != null) {
cas.release();
}
return Status.CANCEL_STATUS;
@@ -335,6 +337,36 @@ public class QueryActionHandler implemen
}
+ public List<File> getFiles(File dir, boolean recusive) {
+ List<File> result = new ArrayList<File>();
+ if (fileNameFilter == null) {
+ return result;
+ }
+ FileFilter fileFilter = new FileFilter() {
+
+ public boolean accept(File pathname) {
+ if (Pattern.matches(fileNameFilter, pathname.getName())) {
+ return true;
+ }
+ return false;
+ }
+ };
+ for (File each : dir.listFiles(fileFilter)) {
+ result.add(each);
+ }
+ if (recusive) {
+ for (File subdir : dir.listFiles(new FileFilter() {
+
+ public boolean accept(File pathname) {
+ return pathname.isDirectory();
+ }
+ })) {
+ result.addAll(getFiles(subdir, recusive));
+ }
+ }
+ return result;
+ }
+
private void removeDebugAnnotations(CAS cas, Type matchedType, Type ruleApplyType,
Type blockApplyType) {
Collection<AnnotationFS> toRemove = new ArrayList<AnnotationFS>();
@@ -398,10 +430,12 @@ public class QueryActionHandler implemen
QueryComposite queryComposite = queryView.getComposite();
String dir = queryComposite.getDataDirectory();
+ String fileNameFilter = queryComposite.getFileFilter();
String typesystem = queryComposite.getTypeSystem();
String script = queryComposite.getScript();
boolean recurive = queryComposite.isRecursive();
- QueryHandlerJob job = new QueryHandlerJob(event, dir, typesystem, script, recurive);
+ QueryHandlerJob job = new QueryHandlerJob(event, dir, fileNameFilter, typesystem, script,
+ recurive);
job.addJobChangeListener(new QueryJobChangeAdapter(queryComposite) {
});
@@ -422,19 +456,4 @@ public class QueryActionHandler implemen
public void removeHandlerListener(IHandlerListener handlerListener) {
}
-
- public static List<File> getFiles(File dir, boolean recusive) {
- List<File> result = new ArrayList<File>();
- for (File each : dir.listFiles()) {
- // TODO: find a solution for this hotfix
- if (each.getName().endsWith(".svn")) {
- continue;
- }
- result.add(each);
- if (each.isDirectory() && recusive) {
- result.addAll(getFiles(each, recusive));
- }
- }
- return result;
- }
}
Modified: uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryComposite.java
URL: http://svn.apache.org/viewvc/uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryComposite.java?rev=1526834&r1=1526833&r2=1526834&view=diff
==============================================================================
--- uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryComposite.java (original)
+++ uima/sandbox/ruta/trunk/ruta-ep-addons/src/main/java/org/apache/uima/ruta/query/ui/QueryComposite.java Fri Sep 27 08:50:15 2013
@@ -22,6 +22,8 @@ package org.apache.uima.ruta.query.ui;
import java.io.File;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
import org.apache.uima.caseditor.editor.AnnotationEditor;
import org.apache.uima.ruta.addons.RutaAddonsPlugin;
@@ -36,6 +38,8 @@ import org.eclipse.dltk.ui.DLTKUILanguag
import org.eclipse.dltk.ui.IDLTKUILanguageToolkit;
import org.eclipse.dltk.ui.text.ScriptSourceViewerConfiguration;
import org.eclipse.dltk.ui.text.ScriptTextTools;
+import org.eclipse.jface.fieldassist.ControlDecoration;
+import org.eclipse.jface.fieldassist.FieldDecorationRegistry;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.Document;
@@ -105,9 +109,16 @@ public class QueryComposite extends org.
private Label resultLabel;
+ private Label labelFileFilter;
+
+ private Text inputPatternText;
+
+ private ControlDecoration deco;
+
public QueryComposite(Composite parent, int style) {
super(parent, style);
// initImages();
+
initGUI();
ScrolledComposite sComp = new ScrolledComposite(parent, SWT.BORDER | SWT.V_SCROLL
@@ -124,6 +135,8 @@ public class QueryComposite extends org.
this.setLayout(new FormLayout());
this.setSize(600, 380);
+ // first row
+
label1 = new Label(this, SWT.NONE);
FormData label1LData = new FormData();
label1LData.left = new FormAttachment(0, 1000, 12);
@@ -135,7 +148,7 @@ public class QueryComposite extends org.
inputDirectoryText = new Text(this, SWT.SINGLE | SWT.BORDER);
FormData inputDirectoryTexLData = new FormData();
inputDirectoryTexLData.width = 150;
- inputDirectoryTexLData.left = new FormAttachment(0, 1000, 90);
+ inputDirectoryTexLData.left = new FormAttachment(label1, 10);
inputDirectoryTexLData.top = new FormAttachment(0, 1000, 10);
inputDirectoryTexLData.right = new FormAttachment(1000, 1000, -65);
inputDirectoryText.setLayoutData(inputDirectoryTexLData);
@@ -183,19 +196,59 @@ public class QueryComposite extends org.
recursiveButton.setLayoutData(recuriveButtonLData);
recursiveButton.setSelection(true);
+ // next row
+
+ FormAttachment top2 = new FormAttachment(label1, 10);
+ labelFileFilter = new Label(this, SWT.NONE);
+ FormData label2LData = new FormData();
+ label2LData.left = new FormAttachment(0, 1000, 12);
+ label2LData.top = top2; // new FormAttachment(0, 1000, 34);
+ label2LData.width = 70;
+ labelFileFilter.setLayoutData(label2LData);
+ labelFileFilter.setText("File Filter:");
+
+ inputPatternText = new Text(this, SWT.SINGLE | SWT.BORDER);
+ FormData inputPatternTextData = new FormData();
+ inputPatternTextData.width = 150;
+ inputPatternTextData.left = new FormAttachment(labelFileFilter, 10);
+ inputPatternTextData.top = top2;
+ inputPatternTextData.right = new FormAttachment(1000, 1000, -65);
+ inputPatternText.setLayoutData(inputPatternTextData);
+ inputPatternText.setText(".+\\.xmi");
+
+ deco = new ControlDecoration(this.inputPatternText, SWT.TOP | SWT.LEFT);
+ Image image = FieldDecorationRegistry.getDefault()
+ .getFieldDecoration(FieldDecorationRegistry.DEC_ERROR).getImage();
+ deco.setDescriptionText("PatternSyntaxException for this regular expression.");
+ deco.setImage(image);
+ deco.hide();
+ inputPatternText.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ // without that listener, the text fields forget the
+ // last change when leaving with tab! don't know why!
+ // we also MUST call getText() otherwise the changes in
+ // the field are lost (what is this???!!)
+ Text t = (Text) e.widget;
+ deco.hide();
+ }
+ });
+
+ // next row
+
+ FormAttachment top3 = new FormAttachment(labelFileFilter, 10);
labelTypeSystem = new Label(this, SWT.NONE);
FormData label3LData = new FormData();
label3LData.width = 70;
label3LData.left = new FormAttachment(0, 1000, 12);
- label3LData.top = new FormAttachment(0, 1000, 34);
+ label3LData.top = top3;
labelTypeSystem.setLayoutData(label3LData);
labelTypeSystem.setText("Type System:");
typeSystemFileText = new Text(this, SWT.SINGLE | SWT.BORDER);
FormData preFileTexLData = new FormData();
preFileTexLData.width = 150;
- preFileTexLData.left = new FormAttachment(0, 1000, 90);
- preFileTexLData.top = new FormAttachment(0, 1000, 34);
+ preFileTexLData.left = new FormAttachment(labelTypeSystem, 10);
+ preFileTexLData.top = top3;
preFileTexLData.right = new FormAttachment(1000, 1000, -65);
typeSystemFileText.setLayoutData(preFileTexLData);
typeSystemFileText.setText("");
@@ -214,7 +267,7 @@ public class QueryComposite extends org.
FormData fileChooseButtoLData = new FormData();
fileChooseButtoLData.width = 25;
fileChooseButtoLData.height = 25;
- fileChooseButtoLData.top = new FormAttachment(0, 1000, 32);
+ fileChooseButtoLData.top = top3;
fileChooseButtoLData.right = new FormAttachment(1000, 1000, -35);
fileChooseButton.setLayoutData(fileChooseButtoLData);
Image icon = getImage("prepFolder");
@@ -233,12 +286,15 @@ public class QueryComposite extends org.
}
});
- Composite composite1 = new Composite(this, SWT.CENTER);
+ // next row: query rules
+
+ FormAttachment top4 = new FormAttachment(labelTypeSystem, 10);
+ Composite compositeQueryRules = new Composite(this, SWT.CENTER);
FormData compData = new FormData();
// compData.width = 300;
compData.height = 100;
compData.left = new FormAttachment(0, 1000, 10);
- compData.top = new FormAttachment(0, 1000, 75);
+ compData.top = top4;
compData.right = new FormAttachment(1000, 1000, -10);
// compData.left = new FormAttachment(0, 1000, 12);
// compData.top = new FormAttachment(0, 1000, 70);
@@ -246,25 +302,29 @@ public class QueryComposite extends org.
// compData.right = new FormAttachment(1000, 1000, -10);
// compData.width = 109;
// composite1.setSize(500, 500);
- composite1.setLayoutData(compData);
- composite1.setLayout(new FillLayout());
- IDLTKUILanguageToolkit toolkit = DLTKUILanguageManager
- .getLanguageToolkit(RutaLanguageToolkit.getDefault().getNatureId());
+ compositeQueryRules.setLayoutData(compData);
+ compositeQueryRules.setLayout(new FillLayout());
+ IDLTKUILanguageToolkit toolkit = DLTKUILanguageManager.getLanguageToolkit(RutaLanguageToolkit
+ .getDefault().getNatureId());
final ScriptTextTools textTools = toolkit.getTextTools();
IPreferenceStore store = toolkit.getCombinedPreferenceStore();
- viewer = new ScriptSourceViewer(composite1, null, null, false, SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.BORDER, store);
+ viewer = new ScriptSourceViewer(compositeQueryRules, null, null, false, SWT.H_SCROLL
+ | SWT.V_SCROLL | SWT.BORDER, store);
ScriptSourceViewerConfiguration configuration = textTools.createSourceViewerConfiguraton(
store, (ITextEditor) null);
viewer.configure(configuration);
setInformation("");
- composite1.layout();
+ compositeQueryRules.layout();
+
+ // next row: query results
+
+ FormAttachment top5 = new FormAttachment(compositeQueryRules, 10);
resultLabel = new Label(this, SWT.NONE);
FormData resultLabelData = new FormData();
resultLabelData.left = new FormAttachment(0, 1000, 12);
- resultLabelData.top = new FormAttachment(0, 1000, 180);
+ resultLabelData.top = top5;
resultLabelData.width = 300;
resultLabel.setLayoutData(resultLabelData);
resultLabel.setText("Result:");
@@ -274,7 +334,7 @@ public class QueryComposite extends org.
// comp2Data.width = 300;
// comp2Data.height = 200;
comp2Data.left = new FormAttachment(0, 1000, 10);
- comp2Data.top = new FormAttachment(0, 1000, 195);
+ comp2Data.top = new FormAttachment(resultLabel, 10);
comp2Data.right = new FormAttachment(1000, 1000, -10);
comp2Data.bottom = new FormAttachment(1000, 1000, -10);
// compData.left = new FormAttachment(0, 1000, 12);
@@ -356,6 +416,7 @@ public class QueryComposite extends org.
public void saveState(IMemento memento) {
memento.createChild("inputDirectory", inputDirectoryText.getText());
+ memento.createChild("fileFilter", inputPatternText.getText());
memento.createChild("typeSystemLocation", typeSystemFileText.getText());
memento.createChild("query", viewer.getDocument().get());
memento.createChild("recursive", Boolean.toString(recursiveButton.getSelection()));
@@ -375,6 +436,11 @@ public class QueryComposite extends org.
inputDirectoryText.setText(dir.getID());
}
+ IMemento fileFilterMemento = memento.getChild("fileFilter");
+ if (dir != null) {
+ inputPatternText.setText(fileFilterMemento.getID());
+ }
+
IMemento query = memento.getChild("query");
if (query != null) {
setInformation(query.getID());
@@ -416,8 +482,8 @@ public class QueryComposite extends org.
return;
}
IDocument doc = new Document(content);
- IDLTKUILanguageToolkit uiToolkit = DLTKUILanguageManager
- .getLanguageToolkit(RutaLanguageToolkit.getDefault().getNatureId());
+ IDLTKUILanguageToolkit uiToolkit = DLTKUILanguageManager.getLanguageToolkit(RutaLanguageToolkit
+ .getDefault().getNatureId());
ScriptTextTools textTools = uiToolkit.getTextTools();
if (textTools != null) {
textTools.setupDocumentPartitioner(doc, uiToolkit.getPartitioningId());
@@ -474,6 +540,18 @@ public class QueryComposite extends org.
return inputDirectoryText.getText().trim();
}
+ public String getFileFilter() {
+ String string = inputPatternText.getText().trim();
+ try {
+ Pattern.compile(string);
+ this.deco.hide();
+ return string;
+ } catch (PatternSyntaxException e) {
+ this.deco.show();
+ return "";
+ }
+ }
+
public String getTypeSystem() {
return typeSystemFileText.getText().trim();
}
@@ -520,10 +598,9 @@ public class QueryComposite extends org.
public void setInputDirectory(String absolutePath) {
inputDirectoryText.setText(absolutePath);
}
-
+
public void setTypeSystem(String typeSystemLocation) {
typeSystemFileText.setText(typeSystemLocation);
}
-
-
+
}