package hudson.search;
import hudson.Extension;
import hudson.model.User;
import hudson.model.UserProperty;
import hudson.model.UserPropertyDescriptor;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.export.Exported;
public class UserSearchProperty extends hudson.model.UserProperty {
private final boolean insensitiveSearch;
public UserSearchProperty(boolean insensitiveSearch) {
this.insensitiveSearch = insensitiveSearch;
}
@Exported
public boolean getInsensitiveSearch() {
return insensitiveSearch;
}
public static boolean isCaseInsensitive(){
User user = User.current();
boolean caseInsensitive = false;
if(user!=null && user.getProperty(UserSearchProperty.class).getInsensitiveSearch()){//Searching for anonymous user is case-sensitive
caseInsensitive=true;
}
return caseInsensitive;
}
@Extension @Symbol("search")
public static final class DescriptorImpl extends UserPropertyDescriptor {
public String getDisplayName() {
return Messages.UserSearchProperty_DisplayName();
}
public UserProperty newInstance(User user) {
return new UserSearchProperty(false); //default setting is case-sensitive searching
}
@Override
public UserProperty newInstance(StaplerRequest req, JSONObject formData) throws FormException {
return new UserSearchProperty(formData.optBoolean("insensitiveSearch"));
}
}
}