package arkref.ext.fig.basic;
import java.io.*;
import java.util.*;
/**
* An OrderedMap for mapping strings to strings.
*/
public class OrderedStringMap extends OrderedMap<String, String> {
public OrderedStringMap() { }
public OrderedStringMap(OrderedStringMap map) {
for(String key : map.keys())
put(key, map.get(key));
}
public static OrderedStringMap fromFile(String path) throws IOException {
return fromFile(new File(path));
}
public static OrderedStringMap fromFile(File path) throws IOException {
OrderedStringMap map = new OrderedStringMap();
map.read(path);
return map;
}
public void put(String key, Object val) {
super.put(key, StrUtils.toString(val));
}
public void read(String path) throws IOException { read(new File(path)); }
public void read(File path) throws IOException {
BufferedReader in = IOUtils.openIn(path);
read(in);
in.close();
}
public void read(BufferedReader r) throws IOException {
clear();
String line;
while((line = r.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line, "\t");
if(!st.hasMoreTokens()) continue; // Skip blank lines
String key = st.nextToken();
String val = st.hasMoreTokens() ? st.nextToken() : null;
put(key, val);
}
}
public boolean readEasy(String path) {
if(StrUtils.isEmpty(path)) return false;
return readEasy(new File(path));
}
public boolean readEasy(File path) {
if(path == null) return false;
try { read(path); return true; }
catch(IOException e) { return false; }
}
public void readHard(String path) { readHard(new File(path)); }
public void readHard(File path) {
try { read(path); }
catch(IOException e) { throw new RuntimeException(e); }
}
}