/** * */ package com.xored.glance.internal.ui.search; import java.util.regex.Pattern; import org.eclipse.jface.preference.IPreferenceStore; import com.xored.glance.internal.ui.GlancePlugin; import com.xored.glance.internal.ui.preferences.IPreferenceConstants; /** * @author Yuri Strot * */ public class SearchRule implements IPreferenceConstants { /** * @param text * @param caseSensitive * @param prefix */ public SearchRule(String text) { this.text = text; loadFromPref(); } /** * @param text * @param caseSensitive * @param prefix */ public SearchRule(String text, boolean caseSensitive, boolean camelCase, boolean wordPrefix, boolean regExp) { this.text = text; this.caseSensitive = caseSensitive; this.camelCase = camelCase; this.wordPrefix = wordPrefix; this.regExp = regExp; } /** * @return the text */ public String getText() { return text; } /** * @return the caseSensitive */ public boolean isCaseSensitive() { return caseSensitive; } /** * @return the regExp */ public boolean isRegExp() { return regExp; } /** * @return the prefix */ public boolean isWordPrefix() { return wordPrefix; } /** * @return the camelCase */ public boolean isCamelCase() { return camelCase; } /** * @return the pattern */ public Pattern getPattern() { if (pattern == null) { pattern = SearchUtils.createPattern(text, caseSensitive, regExp, wordPrefix, camelCase); } return pattern; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((text == null) ? 0 : text.hashCode()); result = prime * result + (caseSensitive ? 1231 : 1237); result = prime * result + (regExp ? 1231 : 1237); result = prime * result + (wordPrefix ? 1231 : 1237); result = prime * result + (camelCase ? 1231 : 1237); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; SearchRule other = (SearchRule) obj; if (!isSettingsEqual(other)) return false; return isTextEquals(other); } public boolean isSettingsEqual(SearchRule other) { if (other == null) return false; if (caseSensitive != other.caseSensitive) return false; if (regExp != other.regExp) return false; if (wordPrefix != other.wordPrefix) return false; if (camelCase != other.camelCase) return false; return true; } public boolean isTextEquals(SearchRule other) { if (other == null) return false; if (text == null) { if (other.text != null) return false; } else if (!text.equals(other.text)) return false; return true; } private void loadFromPref() { IPreferenceStore preferences = GlancePlugin.getDefault() .getPreferenceStore(); caseSensitive = preferences.getBoolean(SEARCH_CASE_SENSITIVE); regExp = preferences.getBoolean(SEARCH_REGEXP); wordPrefix = preferences.getBoolean(SEARCH_WORD_PREFIX); camelCase = preferences.getBoolean(SEARCH_CAMEL_CASE); } private Pattern pattern; private String text; private boolean caseSensitive; private boolean regExp; private boolean wordPrefix; private boolean camelCase; }