/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package androidx.room.util; import android.util.Log; import androidx.annotation.Nullable; import androidx.annotation.RestrictTo; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; /** * @hide * * String utilities for Room */ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class StringUtil { @SuppressWarnings("unused") public static final String[] EMPTY_STRING_ARRAY = new String[0]; /** * Returns a new StringBuilder to be used while producing SQL queries. * * @return A new or recycled StringBuilder */ public static StringBuilder newStringBuilder() { // TODO pool: return new StringBuilder(); } /** * Adds bind variable placeholders (?) to the given string. Each placeholder is separated * by a comma. * * @param builder The StringBuilder for the query * @param count Number of placeholders */ public static void appendPlaceholders(StringBuilder builder, int count) { for (int i = 0; i < count; i++) { builder.append("?"); if (i < count - 1) { builder.append(","); } } } /** * Splits a comma separated list of integers to integer list. *

* If an input is malformed, it is omitted from the result. * * @param input Comma separated list of integers. * @return A List containing the integers or null if the input is null. */ @Nullable public static List splitToIntList(@Nullable String input) { if (input == null) { return null; } List result = new ArrayList<>(); StringTokenizer tokenizer = new StringTokenizer(input, ","); while (tokenizer.hasMoreElements()) { final String item = tokenizer.nextToken(); try { result.add(Integer.parseInt(item)); } catch (NumberFormatException ex) { Log.e("ROOM", "Malformed integer list", ex); } } return result; } /** * Joins the given list of integers into a comma separated list. * * @param input The list of integers. * @return Comma separated string composed of integers in the list. If the list is null, return * value is null. */ @Nullable public static String joinIntoString(@Nullable List input) { if (input == null) { return null; } final int size = input.size(); if (size == 0) { return ""; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < size; i++) { sb.append(Integer.toString(input.get(i))); if (i < size - 1) { sb.append(","); } } return sb.toString(); } private StringUtil() { } }