package org.jboss.seam.remoting.util;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
/**
* Some utility functions to convert Java Data-Structures into JavaScript equivalent
*
* @author Amir Sadri
*/
public class JsConverter {
public final static String convertArray(Object[] array) {
if (array == null || array.length == 0)
return "";
StringBuilder content = new StringBuilder("[");
for (Object temp : array) {
content.append(convertObject(temp)).append(",");
}
content.deleteCharAt(content.length() - 1);
content.append("]");
return content.toString();
}
public final static String convertCollection(Collection<?> collection) {
return convertArray(collection.toArray());
}
public final static String convertMap(Map<?, ?> map) {
if (map == null || map.size() == 0)
return "";
StringBuilder content = new StringBuilder("{");
Iterator<?> keys = map.keySet().iterator();
while (keys.hasNext()) {
final Object key = keys.next();
content.append(key.toString()).append(" : ").append(convertObject(map.get(key))).append(",");
}
content.deleteCharAt(content.length() - 1);
content.append("}");
return content.toString();
}
public final static String convertObject(Object value) {
if (value instanceof String)
return "'" + value + "'";
else if (value instanceof Object[])
return convertArray((Object[]) value);
else if (value instanceof Collection<?>)
return convertCollection((Collection<?>) value);
else if (value instanceof Map)
return convertMap((Map<?, ?>) value);
else
return value.toString();
}
}