All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nakedobjects.metamodel.commons.lang.ListUtils Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.commons.lang;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;


public final class ListUtils {
    private static final String DEFAULT_DELIMITER = ",";

	private ListUtils() {}

    /**
     * Returns list1 with everything in list2, ignoring duplicates.
     */
    public static  List combine(final List list1, final List list2) {
        for (final Iterator iter = list2.iterator(); iter.hasNext();) {
            final T obj = iter.next();
            if (!(list1.contains(obj))) {
                list1.add(obj);
            }
        }
        return list1;
    }

    public static List combine(final String[] array1, final String[] array2) {
        final List prefixes = new ArrayList();
        addNoDuplicates(array1, prefixes);
        addNoDuplicates(array2, prefixes);
        return prefixes;
    }

    private static void addNoDuplicates(final String[] array, final List list) {
        for (int i = 0; i < array.length; i++) {
            if (!list.contains(array[i])) {
                list.add(array[i]);
            }
        }
    }

    @SuppressWarnings("unchecked")
    public
    static List asList(final Object[] objectArray) {
        final List list = new ArrayList();
        for (int i = 0; i < objectArray.length; i++) {
            if (Collection.class.isAssignableFrom(objectArray[i].getClass())) {
                Collection collection = (Collection) objectArray[i];
                list.addAll(asList(collection.toArray()));
            } else {
                list.add(objectArray[i]);
            }
        }
        return list;
    }

    /**
     * @see #listToString(List, String)
	 * @see #stringToList(String)
     */
	public static String listToString(List list) {
		return listToString(list, DEFAULT_DELIMITER);
	}

	/**
	 * @see #listToString(List, String)
	 * @see #stringToList(String)
	 */
	public static String listToString(List list, String delimiter) {
		if (list.size() == 0) {
			return null;
		}
		StringBuilder buf = new StringBuilder();
		boolean first = true;
		for(String str: list) {
			if(first) {
				first = false;
			} else {
				buf.append(delimiter);
			}
			buf.append(str);
		}
		return buf.toString();
	}

	/**
	 * @see #stringToList(String, String)
	 * @see #listToString(List)
	 */
	public static List stringToList(String commaSeparated) {
		return appendDelimitedStringToList(commaSeparated, new ArrayList());
	}

	/**
	 * @see #stringToList(String)
	 * @see #listToString(List, String)
	 */
	public static List stringToList(String delimited, String delimiter) {
		return appendDelimitedStringToList(delimited, delimiter, new ArrayList());
	}

	/**
	 * @see #appendDelimitedStringToList(String, String, List)
	 */
	public static List appendDelimitedStringToList(
			String commaSeparated, List list) {
		return appendDelimitedStringToList(commaSeparated, DEFAULT_DELIMITER, list);
	}

	public static List appendDelimitedStringToList(
			String delimited, String delimiter, List list) {
		if (delimited == null) {
			return list;
		}
		String[] optionValues = delimited.split(delimiter);
		list.addAll(Arrays.asList(optionValues));
		return list;
	}

}

// Copyright (c) Naked Objects Group Ltd.