/**
* Copyright (C) 2010 Orbeon, Inc.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU Lesser General Public License as published by the Free Software Foundation; either version
* 2.1 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* The full text of the license is available at http://www.gnu.org/copyleft/lesser.html
*/
package org.orbeon.oxf.util;
import java.util.*;
import org.apache.commons.lang3.ArrayUtils;
public class StringConversions {
/**
* Convert an Enumeration of String into an array.
*/
public static String[] stringEnumerationToArray(Enumeration enumeration) {
final List<String> values = new ArrayList<String>();
while (enumeration.hasMoreElements())
values.add((String) enumeration.nextElement());
final String[] stringValues = new String[values.size()];
values.toArray(stringValues);
return stringValues;
}
/**
* Convert an Object array into a String array, removing non-string values.
*/
public static String[] objectArrayToStringArray(Object[] values) {
if (values == null)
return null;
final String[] result = new String[values.length];
int size = 0;
for (final Object currentValue: values) {
if (currentValue instanceof String) {
result[size++] = (String) currentValue;
}
}
if (size == values.length) {
// Optimistic approach worked
return result;
} else {
// Optimistic approach failed
final String[] newResult = new String[size];
System.arraycopy(result, 0, newResult, 0, size);
return newResult;
}
}
/**
* Convert a String array into an Object array.
*/
public static Object[] stringArrayToObjectArray(String[] values) {
if (values == null)
return null;
final Object[] result = new Object[values.length];
int size = 0;
for (final Object currentValue: values) {
result[size++] = currentValue;
}
return result;
}
public static Map<String, Object[]> stringArrayMapToObjectArrayMap(Map<String, String[]> in) {
if (in == null)
return null;
final Map<String, Object[]> result = new LinkedHashMap<String, Object[]>(); // keep map in order
for (Map.Entry<String, String[]> entry : in.entrySet()) {
final Object[] values = stringArrayToObjectArray(entry.getValue());
if (values != null && values.length > 0)
result.put(entry.getKey(), values);
}
return result;
}
public static String getFirstValueFromStringArray(String[] values) {
return (values != null && values.length > 0) ? values[0] : null;
}
public static void addValueToObjectArrayMap(Map<String, Object[]> map, String name, Object value) {
map.put(name, ArrayUtils.add(map.get(name), value));
}
public static void addValueToStringArrayMap(Map<String, String[]> map, String name, String value) {
map.put(name, ArrayUtils.add(map.get(name), value));
}
public static void addValuesToStringArrayMap(Map<String, String[]> map, String name, String[] values) {
map.put(name, ArrayUtils.addAll(map.get(name), values));
}
}