WhereBuilder.java
/*
* Decompiled with CFR 0_132.
*
* Could not load the following classes:
* android.text.TextUtils
*/
package org.xutils.db.sqlite;
import android.text.TextUtils;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.xutils.db.converter.ColumnConverterFactory;
import org.xutils.db.sqlite.ColumnDbType;
import org.xutils.db.table.ColumnUtils;
public class WhereBuilder {
private final List<String> whereItems = new ArrayList<String>();
private WhereBuilder() {
}
public static WhereBuilder b() {
return new WhereBuilder();
}
public static WhereBuilder b(String columnName, String op, Object value) {
WhereBuilder result = new WhereBuilder();
result.appendCondition(null, columnName, op, value);
return result;
}
public WhereBuilder and(String columnName, String op, Object value) {
this.appendCondition(this.whereItems.size() == 0 ? null : "AND", columnName, op, value);
return this;
}
public WhereBuilder and(WhereBuilder where) {
String condition = this.whereItems.size() == 0 ? " " : "AND ";
return this.expr(condition + "(" + where.toString() + ")");
}
public WhereBuilder or(String columnName, String op, Object value) {
this.appendCondition(this.whereItems.size() == 0 ? null : "OR", columnName, op, value);
return this;
}
public WhereBuilder or(WhereBuilder where) {
String condition = this.whereItems.size() == 0 ? " " : "OR ";
return this.expr(condition + "(" + where.toString() + ")");
}
public WhereBuilder expr(String expr) {
this.whereItems.add(" " + expr);
return this;
}
public int getWhereItemSize() {
return this.whereItems.size();
}
public String toString() {
if (this.whereItems.size() == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
for (String item : this.whereItems) {
sb.append(item);
}
return sb.toString();
}
/*
* Enabled force condition propagation
* Lifted jumps to return sites
*/
private void appendCondition(String conj, String columnName, String op, Object value) {
StringBuilder builder = new StringBuilder();
if (this.whereItems.size() > 0) {
builder.append(" ");
}
if (!TextUtils.isEmpty((CharSequence)conj)) {
builder.append(conj).append(" ");
}
builder.append("\"").append(columnName).append("\"");
if ("!=".equals(op)) {
op = "<>";
} else if ("==".equals(op)) {
op = "=";
}
if (value == null) {
if ("=".equals(op)) {
builder.append(" IS NULL");
} else if ("<>".equals(op)) {
builder.append(" IS NOT NULL");
} else {
builder.append(" ").append(op).append(" NULL");
}
} else {
builder.append(" ").append(op).append(" ");
if ("IN".equalsIgnoreCase(op)) {
Object arrayList;
Object items = null;
if (value instanceof Iterable) {
items = (Iterable)value;
} else if (value.getClass().isArray()) {
int len = Array.getLength(value);
arrayList = new ArrayList(len);
for (int i = 0; i < len; ++i) {
arrayList.add(Array.get(value, i));
}
items = arrayList;
}
if (items == null) throw new IllegalArgumentException("value must be an Array or an Iterable.");
StringBuilder inSb = new StringBuilder("(");
arrayList = items.iterator();
while (arrayList.hasNext()) {
Object item = arrayList.next();
Object itemColValue = ColumnUtils.convert2DbValueIfNeeded(item);
if (ColumnDbType.TEXT.equals((Object)ColumnConverterFactory.getDbColumnType(itemColValue.getClass()))) {
String valueStr = itemColValue.toString();
if (valueStr.indexOf(39) != -1) {
valueStr = valueStr.replace("'", "''");
}
inSb.append("'").append(valueStr).append("'");
} else {
inSb.append(itemColValue);
}
inSb.append(",");
}
inSb.deleteCharAt(inSb.length() - 1);
inSb.append(")");
builder.append(inSb.toString());
} else if ("BETWEEN".equalsIgnoreCase(op)) {
ArrayList<Object> items = null;
if (value instanceof Iterable) {
items = (ArrayList<Object>)value;
} else if (value.getClass().isArray()) {
int len = Array.getLength(value);
ArrayList<Object> arrayList = new ArrayList<Object>(len);
for (int i = 0; i < len; ++i) {
arrayList.add(Array.get(value, i));
}
items = arrayList;
}
if (items == null) throw new IllegalArgumentException("value must be an Array or an Iterable.");
Iterator iterator = items.iterator();
if (!iterator.hasNext()) {
throw new IllegalArgumentException("value must have tow items.");
}
Object start = iterator.next();
if (!iterator.hasNext()) {
throw new IllegalArgumentException("value must have tow items.");
}
Object end = iterator.next();
Object startColValue = ColumnUtils.convert2DbValueIfNeeded(start);
Object endColValue = ColumnUtils.convert2DbValueIfNeeded(end);
if (ColumnDbType.TEXT.equals((Object)ColumnConverterFactory.getDbColumnType(startColValue.getClass()))) {
String endStr;
String startStr = startColValue.toString();
if (startStr.indexOf(39) != -1) {
startStr = startStr.replace("'", "''");
}
if ((endStr = endColValue.toString()).indexOf(39) != -1) {
endStr = endStr.replace("'", "''");
}
builder.append("'").append(startStr).append("'");
builder.append(" AND ");
builder.append("'").append(endStr).append("'");
} else {
builder.append(startColValue);
builder.append(" AND ");
builder.append(endColValue);
}
} else if (ColumnDbType.TEXT.equals((Object)ColumnConverterFactory.getDbColumnType((value = ColumnUtils.convert2DbValueIfNeeded(value)).getClass()))) {
String valueStr = value.toString();
if (valueStr.indexOf(39) != -1) {
valueStr = valueStr.replace("'", "''");
}
builder.append("'").append(valueStr).append("'");
} else {
builder.append(value);
}
}
this.whereItems.add(builder.toString());
}
}