1674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen/*
2674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * Copyright 2003,2004 The Apache Software Foundation
3674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *
4674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *  Licensed under the Apache License, Version 2.0 (the "License");
5674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * you may not use this file except in compliance with the License.
6674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * You may obtain a copy of the License at
7674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *
8674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *      http://www.apache.org/licenses/LICENSE-2.0
9674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *
10674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen *  Unless required by applicable law or agreed to in writing, software
11674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * distributed under the License is distributed on an "AS IS" BASIS,
12674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * See the License for the specific language governing permissions and
14674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * limitations under the License.
15674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */
16674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenpackage org.mockito.cglib.core;
17674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
18674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenimport java.util.*;
19674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenimport java.lang.reflect.Array;
20674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
21674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen/**
22674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @author Chris Nokleberg
23674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen * @version $Id: CollectionUtils.java,v 1.7 2004/06/24 21:15:21 herbyderby Exp $
24674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen */
25674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogenpublic class CollectionUtils {
26674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    private CollectionUtils() { }
27674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
28674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    public static Map bucket(Collection c, Transformer t) {
29674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        Map buckets = new HashMap();
30674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        for (Iterator it = c.iterator(); it.hasNext();) {
31674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            Object value = (Object)it.next();
32674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            Object key = t.transform(value);
33674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            List bucket = (List)buckets.get(key);
34674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            if (bucket == null) {
35674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen                buckets.put(key, bucket = new LinkedList());
36674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            }
37674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            bucket.add(value);
38674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        }
39674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        return buckets;
40674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    }
41674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
42674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    public static void reverse(Map source, Map target) {
43674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        for (Iterator it = source.keySet().iterator(); it.hasNext();) {
44674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            Object key = it.next();
45674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            target.put(source.get(key), key);
46674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        }
47674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    }
48674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
49674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    public static Collection filter(Collection c, Predicate p) {
50674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        Iterator it = c.iterator();
51674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        while (it.hasNext()) {
52674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            if (!p.evaluate(it.next())) {
53674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen                it.remove();
54674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            }
55674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        }
56674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        return c;
57674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    }
58674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
59674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    public static List transform(Collection c, Transformer t) {
60674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        List result = new ArrayList(c.size());
61674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        for (Iterator it = c.iterator(); it.hasNext();) {
62674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            result.add(t.transform(it.next()));
63674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        }
64674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        return result;
65674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    }
66674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
67674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    public static Map getIndexMap(List list) {
68674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        Map indexes = new HashMap();
69674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        int index = 0;
70674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        for (Iterator it = list.iterator(); it.hasNext();) {
71674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen            indexes.put(it.next(), new Integer(index++));
72674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        }
73674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen        return indexes;
74674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen    }
75674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen}
76674060f01e9090cd21b3c5656cc3204912ad17a6Jon Boekenoogen
77