git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JAL-3253-applet Platform getDocumentBase() and getCodeBase() as if
[jalview.git]
/
src
/
jalview
/
util
/
matcher
/
Matcher.java
diff --git
a/src/jalview/util/matcher/Matcher.java
b/src/jalview/util/matcher/Matcher.java
index
d8c9361
..
0792509
100644
(file)
--- a/
src/jalview/util/matcher/Matcher.java
+++ b/
src/jalview/util/matcher/Matcher.java
@@
-14,12
+14,17
@@
public class Matcher implements MatcherI
Condition condition;
/*
Condition condition;
/*
- * the string value (upper-cased), or the regex, to compare to
+ * the string pattern as entered, or the regex, to compare to
* also holds the string form of float value if a numeric condition
*/
String pattern;
/*
* also holds the string form of float value if a numeric condition
*/
String pattern;
/*
+ * the pattern in upper case, for non-case-sensitive matching
+ */
+ String uppercasePattern;
+
+ /*
* the compiled regex if using a pattern match condition
* (reserved for possible future enhancement)
*/
* the compiled regex if using a pattern match condition
* (reserved for possible future enhancement)
*/
@@
-38,22
+43,27
@@
public class Matcher implements MatcherI
* @return
* @throws NumberFormatException
* if a numerical condition is specified with a non-numeric
* @return
* @throws NumberFormatException
* if a numerical condition is specified with a non-numeric
- * comparision value
+ * comparison value
* @throws NullPointerException
* if a null condition or comparison string is specified
*/
public Matcher(Condition cond, String compareTo)
{
* @throws NullPointerException
* if a null condition or comparison string is specified
*/
public Matcher(Condition cond, String compareTo)
{
+ Objects.requireNonNull(cond);
condition = cond;
if (cond.isNumeric())
{
value = Float.valueOf(compareTo);
pattern = String.valueOf(value);
condition = cond;
if (cond.isNumeric())
{
value = Float.valueOf(compareTo);
pattern = String.valueOf(value);
+ uppercasePattern = pattern;
}
else
{
}
else
{
- // pattern matches will be non-case-sensitive
- pattern = compareTo.toUpperCase();
+ pattern = compareTo;
+ if (pattern != null)
+ {
+ uppercasePattern = pattern.toUpperCase();
+ }
}
// if we add regex conditions (e.g. matchesPattern), then
}
// if we add regex conditions (e.g. matchesPattern), then
@@
-71,10
+81,7
@@
public class Matcher implements MatcherI
*/
public Matcher(Condition cond, float compareTo)
{
*/
public Matcher(Condition cond, float compareTo)
{
- Objects.requireNonNull(cond);
- condition = cond;
- value = compareTo;
- pattern = String.valueOf(compareTo).toUpperCase();
+ this(cond, String.valueOf(compareTo));
}
/**
}
/**
@@
-105,23
+112,29
@@
public class Matcher implements MatcherI
if (val == null)
{
return condition == Condition.NotContains
if (val == null)
{
return condition == Condition.NotContains
- || condition == Condition.NotMatches;
+ || condition == Condition.NotMatches
+ || condition == Condition.NotPresent;
}
String upper = val.toUpperCase().trim();
boolean matched = false;
switch(condition) {
case Matches:
}
String upper = val.toUpperCase().trim();
boolean matched = false;
switch(condition) {
case Matches:
- matched = upper.equals(pattern);
+ matched = upper.equals(uppercasePattern);
break;
case NotMatches:
break;
case NotMatches:
- matched = !upper.equals(pattern);
+ matched = !upper.equals(uppercasePattern);
break;
case Contains:
break;
case Contains:
- matched = upper.indexOf(pattern) > -1;
+ matched = upper.indexOf(uppercasePattern) > -1;
break;
case NotContains:
break;
case NotContains:
- matched = upper.indexOf(pattern) == -1;
+ matched = upper.indexOf(uppercasePattern) == -1;
+ break;
+ case Present:
+ matched = true;
+ break;
+ default:
break;
}
return matched;
break;
}
return matched;
@@
-161,6
+174,8
@@
public class Matcher implements MatcherI
case GE:
matched = f >= value;
break;
case GE:
matched = f >= value;
break;
+ default:
+ break;
}
return matched;
}
return matched;
@@
-178,7
+193,7
@@
public class Matcher implements MatcherI
/**
* equals is overridden so that we can safely remove Matcher objects from
/**
* equals is overridden so that we can safely remove Matcher objects from
- * collections (e.g. delete an attribut match condition for a feature colour)
+ * collections (e.g. delete an attribute match condition for a feature colour)
*/
@Override
public boolean equals(Object obj)
*/
@Override
public boolean equals(Object obj)
@@
-188,8
+203,15
@@
public class Matcher implements MatcherI
return false;
}
Matcher m = (Matcher) obj;
return false;
}
Matcher m = (Matcher) obj;
- return condition == m.condition && value == m.value
- && pattern.equals(m.pattern);
+ if (condition != m.condition || value != m.value)
+ {
+ return false;
+ }
+ if (pattern == null)
+ {
+ return m.pattern == null;
+ }
+ return uppercasePattern.equals(m.uppercasePattern);
}
@Override
}
@Override
@@
-213,6
+235,17
@@
public class Matcher implements MatcherI
@Override
public String toString()
{
@Override
public String toString()
{
- return condition.name() + " " + pattern;
+ StringBuilder sb = new StringBuilder();
+ sb.append(condition.toString()).append(" ");
+ if (condition.isNumeric())
+ {
+ sb.append(pattern);
+ }
+ else
+ {
+ sb.append("'").append(pattern).append("'");
+ }
+
+ return sb.toString();
}
}
}
}