From 1f05954924a01e85ea9438a4de5aa602985f1c79 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Thu, 4 Mar 2010 01:47:58 +0000 Subject: [PATCH] Fixed regex text search facet to handle errors better. Use .text() rather than .html() to render cell values, or & will not show up. git-svn-id: http://google-refine.googlecode.com/svn/trunk@184 7d457c2a-affb-35e4-300a-418c747d4874 --- .../browsing/facets/TextSearchFacet.java | 22 +++++++++++++++---- .../scripts/views/data-table-cell-ui.js | 6 ++--- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/metaweb/gridworks/browsing/facets/TextSearchFacet.java b/src/main/java/com/metaweb/gridworks/browsing/facets/TextSearchFacet.java index 826344214..c33118d85 100644 --- a/src/main/java/com/metaweb/gridworks/browsing/facets/TextSearchFacet.java +++ b/src/main/java/com/metaweb/gridworks/browsing/facets/TextSearchFacet.java @@ -1,6 +1,7 @@ package com.metaweb.gridworks.browsing.facets; import java.util.Properties; +import java.util.regex.Pattern; import org.json.JSONException; import org.json.JSONObject; @@ -18,8 +19,9 @@ public class TextSearchFacet implements Facet { protected String _columnName; protected int _cellIndex; protected String _query; + protected Pattern _pattern; - protected String _mode; + protected String _mode; protected boolean _caseSensitive; public TextSearchFacet() { @@ -50,8 +52,18 @@ public class TextSearchFacet implements Facet { _caseSensitive = o.getBoolean("caseSensitive"); if (_query != null) { _query = _query.trim(); - if (!_caseSensitive) { - _query = _query.toLowerCase(); + if (_query.length() > 0) { + if (!_caseSensitive) { + _query = _query.toLowerCase(); + } + + if ("regex".equals(_mode)) { + try { + _pattern = Pattern.compile(_query); + } catch (java.util.regex.PatternSyntaxException e) { + //e.printStackTrace(); + } + } } } } @@ -59,6 +71,8 @@ public class TextSearchFacet implements Facet { public RowFilter getRowFilter() { if (_query == null || _query.length() == 0) { return null; + } else if ("regex".equals(_mode) && _pattern == null) { + return null; } Evaluable eval = new VariableExpr("value"); @@ -66,7 +80,7 @@ public class TextSearchFacet implements Facet { if ("regex".equals(_mode)) { return new ExpressionStringComparisonRowFilter(eval, _cellIndex) { protected boolean checkValue(String s) { - return s.matches(_query); + return _pattern.matcher(s).find(); }; }; } else { diff --git a/src/main/webapp/scripts/views/data-table-cell-ui.js b/src/main/webapp/scripts/views/data-table-cell-ui.js index 04e303018..c6c616942 100644 --- a/src/main/webapp/scripts/views/data-table-cell-ui.js +++ b/src/main/webapp/scripts/views/data-table-cell-ui.js @@ -20,11 +20,11 @@ DataTableCellUI.prototype._render = function() { } else if ("e" in cell) { $('').addClass("data-table-error").text(cell.e).appendTo(divContent); } else if (!("r" in cell) || cell.r == null) { - $(divContent).html(cell.v); + $(divContent).text(cell.v); } else { var r = cell.r; if (r.j == "new") { - $(divContent).html(cell.v + " (new topic)"); + $(divContent).text(cell.v + " (new topic)"); $(' ').appendTo(divContent); $('re-match') @@ -47,7 +47,7 @@ DataTableCellUI.prototype._render = function() { self._doRematch(); }); } else { - $(divContent).html(cell.v); + $(divContent).text(cell.v); if (this._dataTableView._showRecon) { var ul = $('
').addClass("data-table-recon-candidates").appendTo(divContent);