1 /*******************************************************************************
2 * Copyright (c) 2010, 2013 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.core
.filter
.model
;
15 import java
.util
.ArrayList
;
16 import java
.util
.List
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfEvent
;
21 * Filter node for the 'contains' operation
24 * @author Patrick Tasse
26 @SuppressWarnings("javadoc")
27 public class TmfFilterContainsNode
extends TmfFilterTreeNode
{
29 public static final String NODE_NAME
= "CONTAINS"; //$NON-NLS-1$
30 public static final String NOT_ATTR
= "not"; //$NON-NLS-1$
31 public static final String FIELD_ATTR
= "field"; //$NON-NLS-1$
32 public static final String VALUE_ATTR
= "value"; //$NON-NLS-1$
33 public static final String IGNORECASE_ATTR
= "ignorecase"; //$NON-NLS-1$
35 private boolean fNot
= false;
36 private String fField
;
37 private String fValue
;
38 private transient String fValueUpperCase
;
39 private boolean fIgnoreCase
= false;
42 * @param parent the parent node
44 public TmfFilterContainsNode(ITmfFilterTreeNode parent
) {
49 * @return the NOT state
51 public boolean isNot() {
56 * @param not the NOT state
58 public void setNot(boolean not
) {
63 * @return the field name
65 public String
getField() {
70 * @param field the field name
72 public void setField(String field
) {
77 * @return the contains value
79 public String
getValue() {
84 * @param value the contains value
86 public void setValue(String value
) {
89 fValueUpperCase
= value
.toUpperCase();
94 * @return the ignoreCase state
96 public boolean isIgnoreCase() {
101 * @param ignoreCase the ignoreCase state
103 public void setIgnoreCase(boolean ignoreCase
) {
104 this.fIgnoreCase
= ignoreCase
;
108 public String
getNodeName() {
113 public boolean matches(ITmfEvent event
) {
114 Object value
= getFieldValue(event
, fField
);
118 String valueString
= value
.toString();
120 return valueString
.toUpperCase().contains(fValueUpperCase
) ^ fNot
;
122 return valueString
.contains(fValue
) ^ fNot
;
126 public List
<String
> getValidChildren() {
127 return new ArrayList
<>(0);
131 public String
toString() {
132 return fField
+ (fNot ?
" not" : "") + " contains \"" + fValue
+ "\""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
136 public ITmfFilterTreeNode
clone() {
137 TmfFilterContainsNode clone
= (TmfFilterContainsNode
) super.clone();
138 clone
.fField
= fField
;
139 clone
.setValue(fValue
);
144 public int hashCode() {
145 final int prime
= 31;
146 int result
= super.hashCode();
147 result
= prime
* result
+ ((fField
== null) ?
0 : fField
.hashCode());
148 result
= prime
* result
+ (fIgnoreCase ?
1231 : 1237);
149 result
= prime
* result
+ (fNot ?
1231 : 1237);
150 result
= prime
* result
+ ((fValue
== null) ?
0 : fValue
.hashCode());
155 public boolean equals(Object obj
) {
159 if (!super.equals(obj
)) {
162 if (getClass() != obj
.getClass()) {
165 TmfFilterContainsNode other
= (TmfFilterContainsNode
) obj
;
166 if (fField
== null) {
167 if (other
.fField
!= null) {
170 } else if (!fField
.equals(other
.fField
)) {
173 if (fIgnoreCase
!= other
.fIgnoreCase
) {
176 if (fNot
!= other
.fNot
) {
179 if (fValue
== null) {
180 if (other
.fValue
!= null) {
183 } else if (!fValue
.equals(other
.fValue
)) {