/*
* TV-Browser for Android
* Copyright (C) 2013 René Mach (rene@tvbrowser.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
* and associated documentation files (the "Software"), to use, copy, modify or merge the Software,
* furthermore to publish and distribute the Software free of charge without modifications and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.tvbrowser.tvbrowser;
import java.util.regex.Pattern;
/**
* A class that contains filter information for title filtering of programs.
*
* @author René Mach
*/
public class DontWantToSeeExclusion {
private String mExclusion;
private Pattern mPrecompiledPattern;
private boolean mIsCaseSensitive;
public DontWantToSeeExclusion(String exclusion) {
String[] parts = exclusion.split(";;");
mExclusion = parts[0];
mIsCaseSensitive = parts[1].equals("1");
if(!mIsCaseSensitive) {
mExclusion = mExclusion.toLowerCase();
}
if(parts[0].contains("*")) {
String pattern = Pattern.quote(mExclusion);
pattern = pattern.replace("*", "\\E.*\\Q");
mPrecompiledPattern = Pattern.compile(pattern);
}
else {
mPrecompiledPattern = null;
}
}
public boolean matches(String title) {
boolean matches = false;
if(!mIsCaseSensitive) {
title = title.toLowerCase();
}
if(mPrecompiledPattern != null) {
matches = mPrecompiledPattern.matcher(title).matches();
}
else {
matches = title.equals(mExclusion);
}
return matches;
}
}