import android.text.style.BackgroundColorSpan;
import android.text.style.StyleSpan;
+import android.util.Log;
import com.cyanogenmod.filemanager.model.FileSystemObject;
import com.cyanogenmod.filemanager.model.Query;
import com.cyanogenmod.filemanager.model.SearchResult;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
/**
* A helper class with useful methods for deal with search results.
*/
public final class SearchHelper {
-
+ private static final String TAG = SearchHelper.class.getSimpleName();
private static final String REGEXP_WILCARD = "*"; //$NON-NLS-1$
private static final String REGEXP_WILCARD_JAVA = ".*"; //$NON-NLS-1$
queries.get(i)
.replace(".", "[.]") //$NON-NLS-1$//$NON-NLS-2$
.replace("*", ".*"); //$NON-NLS-1$//$NON-NLS-2$
- Pattern pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE);
+ Pattern pattern;
+ try {
+ pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE);
+ } catch (PatternSyntaxException e) {
+ Log.w(TAG, "Invalid regex syntax. Using literal query. Error=" + e);
+ pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL);
+ }
Matcher matcher = pattern.matcher(name);
Spannable span = new SpannableString(name);
if (matcher.find()) {
terms.get(i)
.replace(".", "[.]") //$NON-NLS-1$//$NON-NLS-2$
.replace("*", ".*"); //$NON-NLS-1$//$NON-NLS-2$
- Pattern pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE);
+ Pattern pattern;
+ try {
+ pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE);
+ } catch (PatternSyntaxException e) {
+ Log.w(TAG, "Invalid regex syntax. Using literal query. Error=" + e);
+ pattern = Pattern.compile(query, Pattern.CASE_INSENSITIVE | Pattern.LITERAL);
+ }
Matcher matcher = pattern.matcher(name);
if (matcher.find()) {
//By name