package com.cleancoder.args;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import static com.cleancoder.args.ArgsException.ErrorCode.*;
public class MapArgumentMarshaler implements ArgumentMarshaler {
private Map<String, String> map = new HashMap<>();
public void set(Iterator<String> currentArgument) throws ArgsException {
try {
String[] mapEntries = currentArgument.next().split(",");
for (String entry : mapEntries) {
String[] entryComponents = entry.split(":");
if (entryComponents.length != 2)
throw new ArgsException(MALFORMED_MAP);
map.put(entryComponents[0], entryComponents[1]);
}
} catch (NoSuchElementException e) {
throw new ArgsException(MISSING_MAP);
}
}
public static Map<String, String> getValue(ArgumentMarshaler am) {
if (am != null && am instanceof MapArgumentMarshaler)
return ((MapArgumentMarshaler) am).map;
else
return new HashMap<>();
}
}