package com.activequant.utils;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapToString {
public String convert(Map<String, Object> mapIn) {
StringBuffer r = new StringBuffer();
Iterator<String> keyIterator = mapIn.keySet().iterator();
Iterator<Object> valueIterator = mapIn.values().iterator();
while (keyIterator.hasNext()) {
//
String key = keyIterator.next();
Object value = valueIterator.next();
if (value != null) {
// might have to do base64 encoding at one point.
r.append(key);
r.append("=");
r.append(value.toString());
r.append(";");
}
}
return r.toString();
}
public Map<String, Object> convert(String sIn) {
Map<String, Object> ret = new HashMap<String, Object>();
String[] keyVals = sIn.split(";");
for (String s : keyVals) {
if (s.length() == 0)
continue;
String[] keyVal = s.split("=");
if (keyVal.length != 2) {
continue;
}
String key = keyVal[0];
if (tryDouble(keyVal[1]) != null)
ret.put(key, tryDouble(keyVal[1]));
else if (tryString(keyVal[1]) != null)
ret.put(key, tryString(keyVal[1]));
}
return ret;
}
private Double tryDouble(String val) {
try {
return Double.parseDouble(val);
} catch (Exception ex) {
return null;
}
}
private String tryString(String val) {
try {
return val;
} catch (Exception ex) {
return null;
}
}
}