package ecologylab.bigsemantics.metametadata.fieldops; import java.util.regex.Matcher; import java.util.regex.Pattern; import ecologylab.serialization.annotations.simpl_scalar; /** * * @author quyin */ public class Match implements FieldOp { @simpl_scalar private Pattern pattern; @simpl_scalar private int group = 0; @simpl_scalar private String onMatch; @simpl_scalar private String onFind; @simpl_scalar private String onFail; public Pattern getPattern() { return pattern; } public void setPattern(Pattern pattern) { this.pattern = pattern; } public int getGroup() { return group; } public void setGroup(int group) { this.group = group; } public String getOnMatch() { return onMatch; } public void setOnMatch(String onMatch) { this.onMatch = onMatch; } public String getOnFind() { return onFind; } public void setOnFind(String onFind) { this.onFind = onFind; } public String getOnFail() { return onFail; } public void setOnFail(String onFail) { this.onFail = onFail; } @Override public Object operateOn(Object rawValue) { if (rawValue != null && pattern != null) { Matcher matcher = pattern.matcher(rawValue.toString()); if (onMatch != null && matcher.matches()) { return onMatch; } if (matcher.find()) { if (onFind != null) { return onFind; } else { return matcher.group(group); } } if (onFail != null) { return onFail; } } return rawValue; } }