Android Open Source - android-sqlite-helper Where






From Project

Back to project page android-sqlite-helper.

License

The source code is released under:

Apache License

If you think the Android project android-sqlite-helper listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.ichigotake.sqlitehelper.dml;
/* ww  w.jav a  2 s  . c o  m*/
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * TODO: if (whereClause.placeholderCount() != arguments.length) throw new RuntimeException
 */
public final class Where {

    private final List<String> conditions;
    private final List<String> values;
    private final List<String> logicalOperators;

    public Where() {
        conditions = new CopyOnWriteArrayList<>();
        values = new CopyOnWriteArrayList<>();
        logicalOperators = new CopyOnWriteArrayList<>();
    }

    public Where(Where where) {
        this();
        addCondition(where);
    }

    public Where(String condition, Object... arguments) {
        this();
        addCondition(condition, Arrays.asList(arguments));
    }

    public boolean isEmpty() {
        return conditions.size() <= 0;
    }

    public Where and(String condition, Object... arguments) {
        addAndOperator();
        addCondition(condition, Arrays.asList(arguments));
        return this;
    }

    public Where and(Where where) {
        addAndOperator();
        addCondition(where);
        return this;
    }

    public Where or(String condition, Object... arguments) {
        addOrOperator();
        addCondition(condition, Arrays.asList(arguments));
        return this;
    }

    public Where or(Where where) {
        addOrOperator();
        addCondition(where);
        return this;
    }

    private void addAndOperator() {
        if (conditions.size() > 0) {
            logicalOperators.add("AND");
        }
    }

    private void addOrOperator() {
        if (conditions.size() > 0) {
            logicalOperators.add("OR");
        }
    }

    private void addCondition(String condition, Collection<Object> arguments) {
        conditions.add(condition);
        for (Object argv : arguments) {
            values.add(argv.toString());
        }
    }

    private void addCondition(Where where) {
        conditions.add(where.getQuery());
        Collections.addAll(values, where.getArguments());
    }

    public String getQuery() {
        if (isEmpty()) {
            return "";
        }

        String query = "";
        for (int i=0,size=conditions.size(); i<size; i++) {
            if (i > 0) {
                query += " " + logicalOperators.get(i-1) + " ";
            }
            query += "(" + conditions.get(i) + ")";
        }
        return query;
    }

    public String[] getArguments() {
        return values.toArray(new String[values.size()]);
    }

    @Override
    public String toString() {
        return getQuery();
    }

}




Java Source Code List

net.ichigotake.sqlitehelper.Configuration.java
net.ichigotake.sqlitehelper.DatabaseHelperTest.java
net.ichigotake.sqlitehelper.DatabaseHelper.java
net.ichigotake.sqlitehelper.MigrationCallback.java
net.ichigotake.sqlitehelper.MigrationHelper.java
net.ichigotake.sqlitehelper.MockConfiguration.java
net.ichigotake.sqlitehelper.MockTable.java
net.ichigotake.sqlitehelper.NoMigrationCallback.java
net.ichigotake.sqlitehelper.TableCursor.java
net.ichigotake.sqlitehelper.ddl.AlterTableTest.java
net.ichigotake.sqlitehelper.ddl.AlterTable.java
net.ichigotake.sqlitehelper.ddl.CreateIndexTest.java
net.ichigotake.sqlitehelper.ddl.CreateIndex.java
net.ichigotake.sqlitehelper.ddl.CreateTableTest.java
net.ichigotake.sqlitehelper.ddl.CreateTable.java
net.ichigotake.sqlitehelper.dml.Order.java
net.ichigotake.sqlitehelper.dml.SelectTest.java
net.ichigotake.sqlitehelper.dml.Select.java
net.ichigotake.sqlitehelper.dml.WhereTest.java
net.ichigotake.sqlitehelper.dml.Where.java
net.ichigotake.sqlitehelper.schema.DeletableTable.java
net.ichigotake.sqlitehelper.schema.FieldAttribute.java
net.ichigotake.sqlitehelper.schema.Index.java
net.ichigotake.sqlitehelper.schema.InsertableTable.java
net.ichigotake.sqlitehelper.schema.TableFieldType.java
net.ichigotake.sqlitehelper.schema.TableField.java
net.ichigotake.sqlitehelper.schema.TableSchemaBuilder.java
net.ichigotake.sqlitehelper.schema.TableSchema.java
net.ichigotake.sqlitehelper.schema.Table.java
net.ichigotake.sqlitehelper.schema.UniqueField.java
net.ichigotake.sqlitehelper.schema.UpdatableTable.java