package com.meidusa.amoeba.sqljep.function; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public abstract class ComparativeBaseList extends Comparative { protected List<Comparative> list = new ArrayList<Comparative>(); public ComparativeBaseList(int function, Comparable<?> value){ super(function, value); list.add(new Comparative(function, value)); } protected ComparativeBaseList(){ super(); } public ComparativeBaseList(Comparative item){ super(item.getComparison(), item.getValue()); list.add(item); } public List<Comparative> getList() { return list; } public void addComparative(Comparative item) { this.list.add(item); } @SuppressWarnings("unchecked") public abstract boolean intersect(int function, Comparable other, Comparator comparator); public abstract boolean intersect(Comparative other,Comparator comparator); public Object clone() { try { Constructor<? extends ComparativeBaseList> con = this.getClass().getConstructor((Class[]) null); ComparativeBaseList compList = con.newInstance((Object[]) null); for (Comparative com : list) { compList.addComparative((Comparative) com.clone()); } compList.setComparison(this.getComparison()); compList.setValue(this.getValue()); return compList; } catch (Exception e) { e.printStackTrace(); return null; } } public String toString(){ StringBuffer buffer = new StringBuffer(); buffer.append("["); int index =0; for(Comparative comp : list){ buffer.append(comp.toString()); if(index < list.size()-1){ buffer.append(","); } index++; } buffer.append("]"); return buffer.toString(); } }