/**
* Alipay.com Inc.
* Copyright (c) 2004-2012 All Rights Reserved.
*/
package com.alipay.zdal.common.sqljep.function;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
/**
* Comparative List,�����dz���Comparative
*
* �Ƕ�and �ڵ��or�ڵ��һ�ֹ�������
*
*
*/
public abstract class ComparativeBaseList extends Comparative {
protected List<Comparative> list = new ArrayList<Comparative>(2);
public ComparativeBaseList(int function, Comparable<?> value) {
super(function, value);
list.add(new Comparative(function, value));
}
protected ComparativeBaseList() {
super();
}
public ComparativeBaseList(int capacity) {
super();
list = new ArrayList<Comparative>(capacity);
}
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);
}
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;
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
boolean firstElement = true;
for (Comparative comp : list) {
if (!firstElement) {
sb.append(getRelation());
}
sb.append(comp.toString());
firstElement = false;
}
return sb.toString();
}
abstract protected String getRelation();
}