mirror of https://github.com/M66B/FairEmail.git
119 lines
3.4 KiB
Java
119 lines
3.4 KiB
Java
/*
|
|
* 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.
|
|
* <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() {
|
|
}
|
|
}
|