package com.tomclaw.mandarin.im.icq;
import android.text.TextUtils;
import com.tomclaw.mandarin.im.Gender;
import com.tomclaw.mandarin.im.SearchOptionsBuilder;
import com.tomclaw.mandarin.util.StringUtil;
import java.io.UnsupportedEncodingException;
/**
* Created by Igor on 26.06.2014.
*/
public class IcqSearchOptionsBuilder extends SearchOptionsBuilder {
private StringBuilder match;
private String keyword;
public IcqSearchOptionsBuilder() {
this(0);
}
public IcqSearchOptionsBuilder(long searchId) {
super(searchId);
match = new StringBuilder();
}
@Override
public void keyword(String option) {
if (appendOption("keyword", option)) {
keyword = option;
}
}
public String getKeyword() {
return keyword;
}
@Override
public void firstName(String option) {
appendOption("firstName", option);
}
@Override
public void lastName(String option) {
appendOption("lastName", option);
}
@Override
public void online(boolean option) {
if (option) {
appendOption("online", "true");
}
}
@Override
public void age(int from, int to) {
appendOption("age", from + "-" + to);
}
@Override
public void gender(Gender gender) {
appendOption("gender", genderValue(gender));
}
public void city(String city) {
appendOption("homeAddress.city", city);
}
private String genderValue(Gender gender) {
switch (gender) {
case Female: {
return "female";
}
case Male: {
return "male";
}
default: {
return "any";
}
}
}
private boolean appendOption(String optionName, String optionValue) {
if (TextUtils.isEmpty(optionValue)) {
return false;
}
try {
if (match.length() > 0) {
match.append(',');
}
match.append(optionName).append('=').append(StringUtil.urlEncode(optionValue));
return true;
} catch (UnsupportedEncodingException ignored) {
// Nothing to be done in this case. Really sorry.
}
return false;
}
@Override
public String toString() {
return match.toString();
}
@Override
public boolean equals(Object o) {
if (o != null && o instanceof SearchOptionsBuilder) {
SearchOptionsBuilder builder = (SearchOptionsBuilder) o;
return (getSearchId() == builder.getSearchId()) &&
TextUtils.equals(toString(), ((Object) builder).toString());
}
return false;
}
}