com.gemstone.gemfire.management.internal.StringBasedFilter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gemfire-core Show documentation
Show all versions of gemfire-core Show documentation
SnappyData store based off Pivotal GemFireXD
The newest version!
/*
* Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License. See accompanying
* LICENSE file.
*/
package com.gemstone.gemfire.management.internal;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.gemstone.gemfire.management.ManagementException;
/**
* This is a string pattern based Filter
* with some limitations.
*
* @author rishim
*
*/
public class StringBasedFilter {
private FilterParam params;
private List exclusionPatternList;
private List inclusionPatternList;
/**
*
*/
public StringBasedFilter(FilterParam params){
this.params = params;
exclusionPatternList = new ArrayList();
inclusionPatternList = new ArrayList();
compileFilterList(params.getExclusionList(), exclusionPatternList);
compileFilterList(params.getInclusionList(), inclusionPatternList);
}
/**
*
*/
public boolean isExcluded(String tokenToMatch) {
if(params.isDefaultExcludeFilter()){
return false;
}
tokenToMatch = formatStringTokens(tokenToMatch);
for (Pattern pattern : exclusionPatternList) {
Matcher matcher = pattern.matcher(tokenToMatch);
if (matcher.find()) {
return true;
}
}
return false;
}
public boolean isIncluded(String tokenToMatch) {
if(params.isDefaultIncludeFilter()){
return true;
}
tokenToMatch = formatStringTokens(tokenToMatch);
for (Pattern pattern : inclusionPatternList) {
Matcher matcher = pattern.matcher(tokenToMatch);
if (matcher.find()) {
return true;
}
}
return false;
}
private void compileFilterList(String[] list, List patternList){
for (String s : list) {
try {
s = formatStringTokens(s);
Pattern pattern;
if(s.contains("*")){
pattern = Pattern.compile(s);
}else{
pattern = Pattern.compile(s,Pattern.LITERAL);
}
patternList.add(pattern);
} catch (NullPointerException e) {
throw new ManagementException(e);
}
}
}
private String formatStringTokens(String value) {
value = value.replace('<', '-');
value = value.replace('>', '-');
value = value.replace('(', '-');
value = value.replace(')', '-');
if (value.length() < 1) {
value = "nothing";
}
return value;
}
}