package graphtea.graph.graph;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Vector;
/**
* Created by rostam on 21.11.15.
* Render Table for reports
*/
public class RenderTable extends PriorityQueue<Vector<Object>> {
int which = 1;
int maxSize = 100000;
public static boolean noFilter = false;
private Vector<String> titles = new Vector<>();
public void setTitles(Vector<String> tts) {
titles=tts;
}
public Vector<String> getTitles() {
return titles;
}
public RenderTable() {
super(100000,new RenderTableMaxComparator(1));
}
public RenderTable(int which) {
super(100000,new RenderTableMaxComparator(which));
this.which=which;
}
public RenderTable(int which, int maxSize) {
super(100000,new RenderTableMaxComparator(which));
this.which=which;
this.maxSize = maxSize;
}
public RenderTable(int which, int maxSize, Comparator<Vector<Object>> comp) {
super(100000,comp);
this.which=which;
this.maxSize = maxSize;
}
public boolean add(Vector<Object> v) {
boolean ret = super.add(v);
if(noFilter) return ret;
if(super.size() > maxSize) super.poll();
return ret;
}
}
class RenderTableMaxComparator implements Comparator<Vector<Object>> {
int which = 0;
public RenderTableMaxComparator(int which) {
this.which = which;
}
@Override
public int compare(Vector<Object> first, Vector<Object> second) {
if (first.get(which) instanceof Double)
return (Double) first.get(which)
> (Double) second.get(which) ? 1 : -1;
else
return (Integer) first.get(which)
> (Integer) second.get(which) ? 1 : -1;
}
}
class RenderTableMinComparator implements Comparator<Vector<Object>> {
private int which=0;
public RenderTableMinComparator(int which) {
this.which=which;
}
@Override
public int compare(Vector<Object> first, Vector<Object> second) {
if (first.get(which) instanceof Double)
return (Double) first.get(which)
< (Double) second.get(which) ? 1 : -1;
else
return (Integer) first.get(which)
< (Integer) second.get(which) ? 1 : -1;
}
}