package dials.filter.impl; import dials.filter.*; import dials.messages.DataFilterApplicationMessage; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; public class PatternMatchingFeatureFilter extends FeatureFilter implements StaticDataFilter, DynamicDataFilter { public static final String PATTERN = "Pattern"; private Pattern pattern; private String matchString; @Override public boolean filter() { if (pattern.matcher(matchString).matches()) { return true; } return false; } @Override public void applyStaticData(DataFilterApplicationMessage message) { FilterDataHelper helper = new FilterDataHelper(message.getFilterData()); try { String rawPattern = helper.getData(PATTERN, String.class); pattern = Pattern.compile(rawPattern); recordSuccessfulDataApply(message, PATTERN); } catch (FilterDataException | PatternSyntaxException e) { recordUnsuccessfulDataApply(message, PATTERN, true, e.getMessage()); } } @Override public void applyDynamicData(DataFilterApplicationMessage message) { FilterDataHelper helper = new FilterDataHelper(message.getFilterData()); try { matchString = helper.getData(DynamicFilterDataConstants.MATCH_STRING, String.class); recordSuccessfulDataApply(message, DynamicFilterDataConstants.MATCH_STRING); } catch (FilterDataException e) { recordUnsuccessfulDataApply(message, DynamicFilterDataConstants.MATCH_STRING, true, e.getMessage()); } } }