From f6f7c3de6f7989df61e5fdaa14b653e02feb39c1 Mon Sep 17 00:00:00 2001 From: d3 Date: Wed, 14 Dec 2016 17:22:43 +0000 Subject: [PATCH] Additional custom filter for substring testing --- quickfix/logviewer/CustomFilterDialog.java | 7 +++++-- quickfix/logviewer/FieldFilter.java | 3 ++- quickfix/logviewer/MessagesTableModel.java | 9 +++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/quickfix/logviewer/CustomFilterDialog.java b/quickfix/logviewer/CustomFilterDialog.java index 1be7acb..430a430 100755 --- a/quickfix/logviewer/CustomFilterDialog.java +++ b/quickfix/logviewer/CustomFilterDialog.java @@ -71,6 +71,7 @@ class OperatorComboBox extends JComboBox { this.addItem( "<=" ); this.addItem( ">"); this.addItem( ">=" ); + this.addItem( "contains" ); } } @@ -89,7 +90,7 @@ class FilterPanel extends JPanel implements ChangeListener { add( checkBox ); comboBox.setPreferredSize( new Dimension(200, 25) ); add( comboBox ); - operatorComboBox.setPreferredSize( new Dimension(50, 25) ); + operatorComboBox.setPreferredSize( new Dimension(90, 25) ); add( operatorComboBox ); textField.setPreferredSize( new Dimension(250, 25) ); add( textField ); @@ -213,7 +214,9 @@ public static int convertOperator( String stringOperator ) { return FieldFilter.GREATER_THAN; if( stringOperator.equals(">=") ) return FieldFilter.GREATER_THAN_OR_EQUAL; - return FieldFilter.EQUAL; + if( stringOperator.equals("contains") ) + return FieldFilter.CONTAINS; + return FieldFilter.CONTAINS; } public ArrayList getFilter() { diff --git a/quickfix/logviewer/FieldFilter.java b/quickfix/logviewer/FieldFilter.java index bd714c5..cc59d22 100755 --- a/quickfix/logviewer/FieldFilter.java +++ b/quickfix/logviewer/FieldFilter.java @@ -29,7 +29,8 @@ public class FieldFilter { public final static int LESS_THAN_OR_EQUAL = 3; public final static int GREATER_THAN = 4; public final static int GREATER_THAN_OR_EQUAL = 5; - + public final static int CONTAINS = 6; + private StringField field = null; private int operator = 0; diff --git a/quickfix/logviewer/MessagesTableModel.java b/quickfix/logviewer/MessagesTableModel.java index f116aa2..2fd5ce8 100755 --- a/quickfix/logviewer/MessagesTableModel.java +++ b/quickfix/logviewer/MessagesTableModel.java @@ -266,6 +266,7 @@ else if( dataDictionary.isTrailerField(tag) ) else message.getField( field ); + int operator = fieldFilter.getOperator(); int compareResults = 0; String value1 = field.getValue(); String value2 = fieldFilter.getValue(); @@ -301,8 +302,11 @@ else if( dataDictionary.isTrailerField(tag) ) if( value1Name != null ) compareResults = value1Name.toUpperCase().compareTo(value2.toUpperCase()); } - - int operator = fieldFilter.getOperator(); + + if ( operator == FieldFilter.CONTAINS ) { + compareResults = value1.indexOf(value2); + } + switch( operator ) { case FieldFilter.EQUAL: if( !(compareResults == 0)) addMessage = false; break; case FieldFilter.NOT_EQUAL: if( !(compareResults != 0) ) addMessage = false; break; @@ -310,6 +314,7 @@ else if( dataDictionary.isTrailerField(tag) ) case FieldFilter.LESS_THAN_OR_EQUAL: if( !(compareResults <= 0) ) addMessage = false; break; case FieldFilter.GREATER_THAN: if( !(compareResults > 0) ) addMessage = false; break; case FieldFilter.GREATER_THAN_OR_EQUAL: if( !(compareResults >= 0)) addMessage = false; break; + case FieldFilter.CONTAINS: if(compareResults == -1) addMessage = false; break; } } catch (FieldNotFound e) { addMessage = false;