package org.cloudfoundry.community.servicebroker.brooklyn.service.plan;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
public class PlaceholderReplacer {
private Random random;
public PlaceholderReplacer(Random random){
this.random = random;
}
public Map<String, Object> replaceValues(Map<String, Object> map) {
Map<String, Object> replacements = new HashMap<>(map);
for(Entry<String, Object> e : map.entrySet()){
if(e.getValue() instanceof Map){
replacements.put(e.getKey(), replaceValues((Map<String, Object>)e.getValue()));
} else if (e.getValue() instanceof String) {
replacements.put(e.getKey(), replaceValue((String)e.getValue()));
} else if (e.getValue() instanceof List) {
replacements.put(e.getKey(), replaceValues((List<Object>)e.getValue()));
} else {
replacements.put(e.getKey(), e.getValue());
}
}
return replacements;
}
public List<Object> replaceValues(List<Object> list) {
List<Object> replacements = new ArrayList<>();
for(Object o : list) {
if(o instanceof Map){
replacements.add(replaceValues((Map<String, Object>)o));
} else if (o instanceof String) {
replacements.add(replaceValue((String)o));
} else if (o instanceof List) {
replacements.add(replaceValues((List<Object>)o));
} else {
replacements.add(o);
}
}
return replacements;
}
public String replaceValue(String value) {
return value.replace("$(string.random)", randomString(8));
}
public String randomString(int length){
char[] chars = "abcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++) {
char c = chars[random.nextInt(chars.length)];
sb.append(c);
}
return sb.toString();
}
}