package com.ycsoft.report.query.daq.translate; import java.util.ArrayList; import java.util.List; import com.ycsoft.commons.exception.ReportException; /** * 缓存计算使用的key */ public class CacheKey implements Comparable<CacheKey> { private List<Object> keys=null; private List<Integer> sorts=null; public int compareTo(CacheKey c) { int compare=0; for(int i=0;i<this.sorts.size();i++){ if(compare!=0) break; Integer o1=this.sorts.get(i); Integer o2=c.sorts.get(i); compare= o1.compareTo(o2); } return compare; } public CacheKey(List<Object> keys,List<Integer> sorts) throws ReportException{ if(keys==null) keys=new ArrayList<Object>(); if(sorts==null) sorts=new ArrayList<Integer>(); this.keys=keys; this.sorts=sorts; if(this.keys.size()!=this.sorts.size()) throw new ReportException("键值和排序值不匹配"); } public List<Integer> getSorts() { return sorts; } public List<Object> getKeys() { return keys; } @Override public int hashCode() { int result = 1; for(Object o:keys) result=result+o.toString().hashCode(); return result; } @Override public boolean equals(Object obj){ if(obj==null) return false; CacheKey cachekey=(CacheKey)obj; if(cachekey.keys.size()!=this.keys.size()) return false; for(int i=0;i<keys.size();i++) if(!this.keys.get(i).toString().equals(cachekey.keys.get(i).toString())) return false; return true; } }