1bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount/*
2bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * Copyright (C) 2015 The Android Open Source Project
3bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount *
4bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * Licensed under the Apache License, Version 2.0 (the "License");
5bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * you may not use this file except in compliance with the License.
6bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * You may obtain a copy of the License at
7bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount *
8bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount *      http://www.apache.org/licenses/LICENSE-2.0
9bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount *
10bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * Unless required by applicable law or agreed to in writing, software
11bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * distributed under the License is distributed on an "AS IS" BASIS,
12bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * See the License for the specific language governing permissions and
14bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount * limitations under the License.
15bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount */
16bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountpackage android.databinding.testapp.adapter;
17bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount
18bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountimport android.databinding.BindingConversion;
19bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountimport java.util.ArrayList;
20bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountimport java.util.LinkedList;
21bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountimport java.util.List;
22bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount
23bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mountpublic class GenericConverter {
24bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    @BindingConversion
25bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    public static <T> String convertArrayList(ArrayList<T> values) {
26bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        return convert(values);
27bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    }
28bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount
29bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    @BindingConversion
30bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    public static String convertLinkedList(LinkedList<?> values) {
31bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        return convert(values);
32bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    }
33bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount
34bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    private static <T> String convert(List<T> values) {
35bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        if (values == null) {
36bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount            return "";
37bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        }
38bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        StringBuilder vals = new StringBuilder();
39bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        for (T val : values) {
40bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount            if (vals.length() != 0) {
41bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount                vals.append(' ');
42bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount            }
43bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount            vals.append(val);
44bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        }
45bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount        return vals.toString();
46bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount    }
47bd42d20f70b1f88e27e3b3c9c3a9c55ec155d128George Mount}
48