package codeine.version;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import codeine.model.Constants;
import codeine.utils.StringUtils;
public class ViewNodesFilter {
private static final Logger log = Logger.getLogger(ViewNodesFilter.class);
private final String m_paramVersion;
private final int m_paramMax;
private int m_count;
private int m_skipCount;
private Pattern pattern;
private String regexp;
private int paramSkip;
public ViewNodesFilter(String paramVersion, int paramMax, String regexp, int paramSkip) {
m_paramVersion = paramVersion;
m_paramMax = paramMax;
this.regexp = regexp;
this.paramSkip = paramSkip;
if (null != regexp){
this.pattern = Pattern.compile(".*" + regexp + ".*");
}
}
/**
* @return true if should be filtered (skipped)
*/
public boolean filter(String version, String alias) {
log.debug("filterByVersion() - version is " + version);
// log.info("filterByVersion() - version2 is " + paramVersion);
// log.info("filterByVersion() - m_count is " + m_count);
// log.info("filterByVersion() - m_max is " + m_max);
if (null != m_paramVersion) {
if (versionNotMatch(version) || m_count >= m_paramMax) {
return true;
}
}
if (null != regexp) {
if (regexpNotMatch(alias)) {
return true;
}
}
if (m_skipCount < paramSkip){
m_skipCount++;
return true;
}
m_count++;
return false;
}
private boolean regexpNotMatch(String alias) {
return !pattern.matcher(StringUtils.safeToString(alias)).matches();
}
private boolean versionNotMatch(String version) {
if (Constants.ALL_VERSION.equals(m_paramVersion)) {
return false;
}
if (Constants.NO_VERSION.equals(m_paramVersion)) {
return !StringUtils.isEmpty(version) && ! Constants.NO_VERSION.equals(version);
}
return !m_paramVersion.equals(version);
}
}