package org.iswc.util; import java.util.ArrayList; import java.util.List; import java.util.TreeMap; public class DataKeyKeyValue<KEY,SUBKEY,VALUE> { TreeMap<KEY, TreeMap<SUBKEY, VALUE>> data = new TreeMap<KEY, TreeMap<SUBKEY, VALUE>>(); public void set(KEY key, SUBKEY subkey, VALUE value){ TreeMap<SUBKEY, VALUE> map = data.get(key); if (null==map){ map = new TreeMap<SUBKEY, VALUE>(); data.put(key, map); } map.put(subkey, value); } public void init(KEY key, SUBKEY subkey, VALUE value) { TreeMap<SUBKEY, VALUE> map = data.get(key); if (null==map){ map = new TreeMap<SUBKEY, VALUE>(); data.put(key, map); } if (null== map.get(subkey)){ map.put(subkey, value); } } public List<String> report(boolean bUseSubKey){ List<String> ret = new ArrayList<String>(); for (KEY key: data.keySet()){ String line = key.toString()+":\t"; TreeMap<SUBKEY, VALUE> map = data.get(key); for (SUBKEY subkey: map.keySet()){ if (bUseSubKey) line += String.format("%s=%s\t", subkey, map.get(subkey)); else line += String.format("%s\t", map.get(subkey)); } ret.add(line); } return ret; } }