package org.nutz.dao.impl.sql; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.nutz.dao.sql.VarIndex; import org.nutz.lang.util.LinkedIntArray; class VarIndexImpl implements VarIndex { private Map<String, LinkedIntArray> indexes; private Map<Integer, String> names; private ArrayList<String> orders; VarIndexImpl() { indexes = new HashMap<String, LinkedIntArray>(); names = new HashMap<Integer, String>(); orders = new ArrayList<String>(); } void add(String name, int index) { LinkedIntArray lia = indexes.get(name); if (null == lia) { lia = new LinkedIntArray(); indexes.put(name, lia); } lia.push(index); names.put(index, name); orders.add(name); } Collection<LinkedIntArray> values() { return indexes.values(); } public int[] getOrderIndex(String name) { LinkedIntArray re = new LinkedIntArray(orders.size()); int i = 0; for (String od : orders) { if (od.equals(name)) re.push(i); i++; } return re.toArray(); } public List<String> getOrders() { return orders; } public String getOrderName(int i) { return orders.get(i); } public String nameOf(int i) { return names.get(i); } public int[] indexesOf(String name) { LinkedIntArray lia = indexes.get(name); if (null == lia) return null; return lia.toArray(); } public Set<String> names() { return indexes.keySet(); } public int size() { return indexes.size(); } }