blob: b8651386a1d56e7d222db4689cce54af55f7803a [file] [log] [blame]
/*
* 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)
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.
* <p>
* 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<Integer> splitToIntList(@Nullable String input) {
if (input == null) {
return null;
}
List<Integer> 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<Integer> 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() {
}
}