11935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/*
21935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Copyright (C) 2011 The Android Open Source Project
31935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
41935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
51935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * you may not use this file except in compliance with the License.
61935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * You may obtain a copy of the License at
71935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
81935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
91935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
101935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software
111935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
121935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * See the License for the specific language governing permissions and
141935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * limitations under the License.
151935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */
161935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
171935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovpackage android.support.v4.database;
181935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
191935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.text.TextUtils;
201935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
211935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/**
220574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing features in {@link android.database.DatabaseUtils}
230574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion.
241935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */
25c5847d13e40f5d52459f5c0dab32dc08f1a9a683Chris Banespublic final class DatabaseUtilsCompat {
261935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
271935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    private DatabaseUtilsCompat() {
281935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        /* Hide constructor */
291935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
301935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
311935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    /**
321935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov     * Concatenates two SQL WHERE clauses, handling empty or null values.
331935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov     */
341935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    public static String concatenateWhere(String a, String b) {
351935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        if (TextUtils.isEmpty(a)) {
361935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            return b;
371935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        }
381935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        if (TextUtils.isEmpty(b)) {
391935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            return a;
401935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        }
411935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
421935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        return "(" + a + ") AND (" + b + ")";
431935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
441935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
451935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    /**
461935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov     * Appends one set of selection args to another. This is useful when adding a selection
471935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov     * argument to a user provided set.
481935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov     */
491935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    public static String[] appendSelectionArgs(String[] originalValues, String[] newValues) {
501935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        if (originalValues == null || originalValues.length == 0) {
511935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            return newValues;
521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        }
531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        String[] result = new String[originalValues.length + newValues.length ];
541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        System.arraycopy(originalValues, 0, result, 0, originalValues.length);
551935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        System.arraycopy(newValues, 0, result, originalValues.length, newValues.length);
561935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        return result;
571935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov}
59