package com.jfinal.plugin.activerecord;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@SuppressWarnings("unchecked")
public class CaseInsensitiveMapFactory implements IMapFactory {
public Map<String, Object> getAttrsMap() {
return new CaseInsensitiveMap();
}
public Map<String, Object> getColumnsMap() {
return new CaseInsensitiveMap();
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
class CaseInsensitiveMap extends HashMap {
private static final long serialVersionUID = -3415001825854442053L;
@Override
public Object get(Object key) {
Object k = (key instanceof String ? ((String)key).toUpperCase() : key);
return super.get(k);
}
@Override
public boolean containsKey(Object key) {
Object k = (key instanceof String ? ((String)key).toUpperCase() : key);
return super.containsKey(k);
}
@Override
public Object put(Object key, Object value) {
Object k = (key instanceof String ? ((String)key).toUpperCase() : key);
return super.put(k, value);
}
@Override
public void putAll(Map m) {
for (Map.Entry e : (Set<Map.Entry>)(m.entrySet()))
put(e.getKey(), e.getValue());
}
@Override
public Object remove(Object key) {
Object k = (key instanceof String ? ((String)key).toUpperCase() : key);
return super.remove(k);
}
}