/* * Copyright 2017, 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 com.android.managedprovisioning.common; import android.content.res.Resources; import com.android.managedprovisioning.R; import java.util.List; /** * Concatenates {@link String}s in an i18n safe way. *

* Based on the implementation from com.android.settings.applications.AppPermissionSettings */ public class StringConcatenator { private final Resources mResources; public StringConcatenator(Resources resources) { mResources = resources; } public String join(List items) { if (items == null) { return null; } if (items.isEmpty()) { return ""; } final int count = items.size(); if (count == 1) { return items.get(0); } if (count == 2) { return mResources.getString(R.string.join_two_items, items.get(0), items.get(1)); } String result = items.get(count - 2); for (int i = count - 3; i >= 0; i--) { result = mResources.getString( // not the fastest, but good enough i == 0 ? R.string.join_many_items_first : R.string.join_many_items_middle, items.get(i), result); } result = mResources.getString(R.string.join_many_items_last, result, items.get(count - 1)); return result; } }