Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 162d7717 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Extend SQLiteQueryBuilder for update and delete."

parents b4fc58ba 6adc98c0
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -12670,22 +12670,28 @@ package android.database.sqlite {
    ctor public SQLiteQueryBuilder();
    method public static void appendColumns(java.lang.StringBuilder, java.lang.String[]);
    method public void appendWhere(java.lang.CharSequence);
    method public void appendWhere(java.lang.CharSequence, java.lang.String...);
    method public void appendWhereEscapeString(java.lang.String);
    method public void appendWhereEscapeString(java.lang.String, java.lang.String...);
    method public java.lang.String buildQuery(java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public deprecated java.lang.String buildQuery(java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public static java.lang.String buildQueryString(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public java.lang.String buildUnionQuery(java.lang.String[], java.lang.String, java.lang.String);
    method public java.lang.String buildUnionSubQuery(java.lang.String, java.lang.String[], java.util.Set<java.lang.String>, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public deprecated java.lang.String buildUnionSubQuery(java.lang.String, java.lang.String[], java.util.Set<java.lang.String>, int, java.lang.String, java.lang.String, java.lang.String[], java.lang.String, java.lang.String);
    method public int delete(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String[]);
    method public java.lang.String getTables();
    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
    method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase, java.lang.String[], android.os.Bundle, android.os.CancellationSignal);
    method public void setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory);
    method public void setDistinct(boolean);
    method public void setProjectionMap(java.util.Map<java.lang.String, java.lang.String>);
    method public void setStrict(boolean);
    method public void setTables(java.lang.String);
    method public int update(android.database.sqlite.SQLiteDatabase, android.content.ContentValues, java.lang.String, java.lang.String[]);
  }
  public class SQLiteReadOnlyDatabaseException extends android.database.sqlite.SQLiteException {
+7 −0
Original line number Diff line number Diff line
@@ -260,6 +260,13 @@ public abstract class ContentResolver {
     */
    public static final String QUERY_ARG_SQL_SORT_ORDER = "android:query-arg-sql-sort-order";

    /** {@hide} */
    public static final String QUERY_ARG_SQL_GROUP_BY = "android:query-arg-sql-group-by";
    /** {@hide} */
    public static final String QUERY_ARG_SQL_HAVING = "android:query-arg-sql-having";
    /** {@hide} */
    public static final String QUERY_ARG_SQL_LIMIT = "android:query-arg-sql-limit";

    /**
     * Specifies the list of columns against which to sort results. When first column values
     * are identical, records are then sorted based on second column values, and so on.
+68 −52
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.content;

import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;
import android.util.Log;

import java.util.ArrayList;
@@ -32,16 +33,20 @@ import java.util.Set;
public final class ContentValues implements Parcelable {
    public static final String TAG = "ContentValues";

    /** Holds the actual values */
    /**
     * @hide
     * @deprecated kept around for lame people doing reflection
     */
    @Deprecated
    private HashMap<String, Object> mValues;

    private final ArrayMap<String, Object> mMap;

    /**
     * Creates an empty set of values using the default initial size
     */
    public ContentValues() {
        // Choosing a default size of 8 based on analysis of typical
        // consumption by applications.
        mValues = new HashMap<String, Object>(8);
        mMap = new ArrayMap<>();
    }

    /**
@@ -50,7 +55,7 @@ public final class ContentValues implements Parcelable {
     * @param size the initial size of the set of values
     */
    public ContentValues(int size) {
        mValues = new HashMap<String, Object>(size, 1.0f);
        mMap = new ArrayMap<>(size);
    }

    /**
@@ -59,18 +64,23 @@ public final class ContentValues implements Parcelable {
     * @param from the values to copy
     */
    public ContentValues(ContentValues from) {
        mValues = new HashMap<String, Object>(from.mValues);
        mMap = new ArrayMap<>(from.mMap);
    }

    /**
     * Creates a set of values copied from the given HashMap. This is used
     * by the Parcel unmarshalling code.
     *
     * @param values the values to start with
     * {@hide}
     * @hide
     * @deprecated kept around for lame people doing reflection
     */
    private ContentValues(HashMap<String, Object> values) {
        mValues = values;
    @Deprecated
    private ContentValues(HashMap<String, Object> from) {
        mMap = new ArrayMap<>();
        mMap.putAll(from);
    }

    /** {@hide} */
    private ContentValues(Parcel in) {
        mMap = new ArrayMap<>(in.readInt());
        in.readArrayMap(mMap, null);
    }

    @Override
@@ -78,12 +88,17 @@ public final class ContentValues implements Parcelable {
        if (!(object instanceof ContentValues)) {
            return false;
        }
        return mValues.equals(((ContentValues) object).mValues);
        return mMap.equals(((ContentValues) object).mMap);
    }

    /** {@hide} */
    public ArrayMap<String, Object> getValues() {
        return mMap;
    }

    @Override
    public int hashCode() {
        return mValues.hashCode();
        return mMap.hashCode();
    }

    /**
@@ -93,7 +108,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, String value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -102,7 +117,7 @@ public final class ContentValues implements Parcelable {
     * @param other the ContentValues from which to copy
     */
    public void putAll(ContentValues other) {
        mValues.putAll(other.mValues);
        mMap.putAll(other.mMap);
    }

    /**
@@ -112,7 +127,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Byte value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -122,7 +137,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Short value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -132,7 +147,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Integer value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -142,7 +157,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Long value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -152,7 +167,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Float value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -162,7 +177,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Double value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -172,7 +187,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, Boolean value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -182,7 +197,7 @@ public final class ContentValues implements Parcelable {
     * @param value the data for the value to put
     */
    public void put(String key, byte[] value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -191,7 +206,7 @@ public final class ContentValues implements Parcelable {
     * @param key the name of the value to make null
     */
    public void putNull(String key) {
        mValues.put(key, null);
        mMap.put(key, null);
    }

    /**
@@ -200,7 +215,7 @@ public final class ContentValues implements Parcelable {
     * @return the number of values
     */
    public int size() {
        return mValues.size();
        return mMap.size();
    }

    /**
@@ -211,7 +226,7 @@ public final class ContentValues implements Parcelable {
     * TODO: consider exposing this new method publicly
     */
    public boolean isEmpty() {
        return mValues.isEmpty();
        return mMap.isEmpty();
    }

    /**
@@ -220,14 +235,14 @@ public final class ContentValues implements Parcelable {
     * @param key the name of the value to remove
     */
    public void remove(String key) {
        mValues.remove(key);
        mMap.remove(key);
    }

    /**
     * Removes all values.
     */
    public void clear() {
        mValues.clear();
        mMap.clear();
    }

    /**
@@ -237,7 +252,7 @@ public final class ContentValues implements Parcelable {
     * @return {@code true} if the value is present, {@code false} otherwise
     */
    public boolean containsKey(String key) {
        return mValues.containsKey(key);
        return mMap.containsKey(key);
    }

    /**
@@ -249,7 +264,7 @@ public final class ContentValues implements Parcelable {
     *         was previously added with the given {@code key}
     */
    public Object get(String key) {
        return mValues.get(key);
        return mMap.get(key);
    }

    /**
@@ -259,7 +274,7 @@ public final class ContentValues implements Parcelable {
     * @return the String for the value
     */
    public String getAsString(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        return value != null ? value.toString() : null;
    }

@@ -270,7 +285,7 @@ public final class ContentValues implements Parcelable {
     * @return the Long value, or {@code null} if the value is missing or cannot be converted
     */
    public Long getAsLong(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).longValue() : null;
        } catch (ClassCastException e) {
@@ -295,7 +310,7 @@ public final class ContentValues implements Parcelable {
     * @return the Integer value, or {@code null} if the value is missing or cannot be converted
     */
    public Integer getAsInteger(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).intValue() : null;
        } catch (ClassCastException e) {
@@ -320,7 +335,7 @@ public final class ContentValues implements Parcelable {
     * @return the Short value, or {@code null} if the value is missing or cannot be converted
     */
    public Short getAsShort(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).shortValue() : null;
        } catch (ClassCastException e) {
@@ -345,7 +360,7 @@ public final class ContentValues implements Parcelable {
     * @return the Byte value, or {@code null} if the value is missing or cannot be converted
     */
    public Byte getAsByte(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).byteValue() : null;
        } catch (ClassCastException e) {
@@ -370,7 +385,7 @@ public final class ContentValues implements Parcelable {
     * @return the Double value, or {@code null} if the value is missing or cannot be converted
     */
    public Double getAsDouble(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).doubleValue() : null;
        } catch (ClassCastException e) {
@@ -395,7 +410,7 @@ public final class ContentValues implements Parcelable {
     * @return the Float value, or {@code null} if the value is missing or cannot be converted
     */
    public Float getAsFloat(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return value != null ? ((Number) value).floatValue() : null;
        } catch (ClassCastException e) {
@@ -420,7 +435,7 @@ public final class ContentValues implements Parcelable {
     * @return the Boolean value, or {@code null} if the value is missing or cannot be converted
     */
    public Boolean getAsBoolean(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        try {
            return (Boolean) value;
        } catch (ClassCastException e) {
@@ -448,7 +463,7 @@ public final class ContentValues implements Parcelable {
     *         {@code byte[]}
     */
    public byte[] getAsByteArray(String key) {
        Object value = mValues.get(key);
        Object value = mMap.get(key);
        if (value instanceof byte[]) {
            return (byte[]) value;
        } else {
@@ -462,7 +477,7 @@ public final class ContentValues implements Parcelable {
     * @return a set of all of the keys and values
     */
    public Set<Map.Entry<String, Object>> valueSet() {
        return mValues.entrySet();
        return mMap.entrySet();
    }

    /**
@@ -471,30 +486,31 @@ public final class ContentValues implements Parcelable {
     * @return a set of all of the keys
     */
    public Set<String> keySet() {
        return mValues.keySet();
        return mMap.keySet();
    }

    public static final Parcelable.Creator<ContentValues> CREATOR =
            new Parcelable.Creator<ContentValues>() {
        @SuppressWarnings({"deprecation", "unchecked"})
        @Override
        public ContentValues createFromParcel(Parcel in) {
            // TODO - what ClassLoader should be passed to readHashMap?
            HashMap<String, Object> values = in.readHashMap(null);
            return new ContentValues(values);
            return new ContentValues(in);
        }

        @Override
        public ContentValues[] newArray(int size) {
            return new ContentValues[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @SuppressWarnings("deprecation")
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeMap(mValues);
        parcel.writeInt(mMap.size());
        parcel.writeArrayMap(mMap);
    }

    /**
@@ -503,7 +519,7 @@ public final class ContentValues implements Parcelable {
     */
    @Deprecated
    public void putStringArrayList(String key, ArrayList<String> value) {
        mValues.put(key, value);
        mMap.put(key, value);
    }

    /**
@@ -513,7 +529,7 @@ public final class ContentValues implements Parcelable {
    @SuppressWarnings("unchecked")
    @Deprecated
    public ArrayList<String> getStringArrayList(String key) {
        return (ArrayList<String>) mValues.get(key);
        return (ArrayList<String>) mMap.get(key);
    }

    /**
@@ -523,7 +539,7 @@ public final class ContentValues implements Parcelable {
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        for (String name : mValues.keySet()) {
        for (String name : mMap.keySet()) {
            String value = getAsString(name);
            if (sb.length() > 0) sb.append(" ");
            sb.append(name + "=" + value);
+4 −2
Original line number Diff line number Diff line
@@ -189,7 +189,8 @@ public final class SQLiteDatabase extends SQLiteClosable {
     */
    public static final int CONFLICT_NONE = 0;

    private static final String[] CONFLICT_VALUES = new String[]
    /** {@hide} */
    public static final String[] CONFLICT_VALUES = new String[]
            {"", " OR ROLLBACK ", " OR ABORT ", " OR FAIL ", " OR IGNORE ", " OR REPLACE "};

    /**
@@ -1748,7 +1749,8 @@ public final class SQLiteDatabase extends SQLiteClosable {
        executeSql(sql, bindArgs);
    }

    private int executeSql(String sql, Object[] bindArgs) throws SQLException {
    /** {@hide} */
    public int executeSql(String sql, Object[] bindArgs) throws SQLException {
        acquireReference();
        try {
            final int statementType = DatabaseUtils.getSqlStatementType(sql);
+399 −68

File changed.

Preview size limit exceeded, changes collapsed.

Loading