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 */ 251935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovpublic 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