Skip to content
Snippets Groups Projects
Commit 5a00d926 authored by Simon Könnecke's avatar Simon Könnecke
Browse files

minor fixes histogram fixes

parent 7444d051
No related branches found
No related tags found
No related merge requests found
......@@ -13,30 +13,27 @@ import org.jfree.ui.TextAnchor;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
import java.util.LinkedList;
/**
*
*/
public class SuperVisorHistogramGUI extends JFrame {
private final Set<Snapshot> snapshots;
private final SuperVisorGuiControlImpl superVisorGuiControl;
private final LocalDateTime time;
private static final int width = 1200;
private static final int height = 800;
public SuperVisorHistogramGUI(Set<Snapshot> snapshots, LocalDateTime time) {
public SuperVisorHistogramGUI(SuperVisorGuiControlImpl superVisorGuiControl, LocalDateTime time) {
super("Histogram of distributed granted commit (Snapshot " + time + ")");
this.superVisorGuiControl = superVisorGuiControl;
this.time = time;
this.snapshots = new HashSet<>(snapshots);
setVisible(true);
setSize(width, height);
......@@ -65,7 +62,7 @@ public class SuperVisorHistogramGUI extends JFrame {
public void init() {
QDigest qDigest = null;
for (Snapshot item : snapshots) {
for (Snapshot item : superVisorGuiControl.getSnapshots()) {
if (qDigest == null) {
qDigest = item.getqDigest();
} else {
......@@ -73,14 +70,52 @@ public class SuperVisorHistogramGUI extends JFrame {
}
}
final java.util.List<Integer> transactions = superVisorGuiControl.getSupervisorSnapshot(time).
getStatistics().getTransactionHistory();
long count = 0;
for (long[] item : qDigest.toAscRanges()) {
count += item[2];
}
// row keys...
final String series1 = "Transactions";
final String series1 = "q-Digest (" + count + ")";
final String series2 = "origin (" + transactions.size() + ")";
java.util.List<long[]> buckets = qDigest.toAscRanges();
java.util.List<long[]> leafs = new LinkedList<>();
java.util.List<long[]> nodes = new LinkedList<>();
long last = Long.MAX_VALUE;
for (long[] item : buckets) {
if (item[0] < last) {
nodes.add(item);
} else {
leafs.add(item);
}
last = item[0];
}
for (int i = 0; i < leafs.size(); i++) {
long[] el = leafs.get(i);
for (long[] item : nodes) {
if (el[0] >= item[0] && item[0] <= el[1]) {
el[2] += item[2];
}
}
leafs.set(i, el);
}
// create the dataset...
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (long[] item : leafs) {
String cat = item[0] + "-" + item[1];
dataset.addValue(item[2], series1, cat);
int counter = 0;
for (Integer amount : transactions) {
if (item[0] >= amount && amount <= item[1]) {
counter++;
}
}
dataset.addValue(counter, series2, cat);
for (long[] item : qDigest.toAscRanges()) {
dataset.addValue(item[2], series1, item[0] + "-" + item[1]);
}
JFreeChart chart = createChart(dataset);
......@@ -93,10 +128,11 @@ public class SuperVisorHistogramGUI extends JFrame {
final JSlider slider = new JSlider(0, 100);
Hashtable<Integer, JComponent> labelTable = new Hashtable<>();
labelTable.put(0, new JLabel("0.0") );
labelTable.put(5, new JLabel("0.5") );
labelTable.put(10, new JLabel("1.0") );
labelTable.put(new Integer(0), new JLabel("0.0") );
labelTable.put(new Integer(50), new JLabel("0.5") );
labelTable.put(new Integer(100), new JLabel("1.0") );
slider.setLabelTable( labelTable );
slider.setPaintLabels(true);
slider.setValue(50);
final JTextField quantileValueField = new JTextField();
......@@ -115,8 +151,8 @@ public class SuperVisorHistogramGUI extends JFrame {
quantilePanel.add(slider);
quantilePanel.add(quantileValueField);
quantilePanel.setBorder(new EmptyBorder(10, 10, 10, 10));
myPanel.add(quantilePanel, BorderLayout.PAGE_END);
quantilePanel.setSize(width, 100);
myPanel.add(quantilePanel, BorderLayout.SOUTH);
setContentPane(myPanel);
}
......
......@@ -92,9 +92,10 @@ public class WalletHistogramGUI extends JFrame {
final JSlider slider = new JSlider(0, 100);
Hashtable<Integer, JComponent> labelTable = new Hashtable<>();
labelTable.put(0, new JLabel("0.0") );
labelTable.put(5, new JLabel("0.5") );
labelTable.put(10, new JLabel("1.0") );
labelTable.put(50, new JLabel("0.5") );
labelTable.put(100, new JLabel("1.0") );
slider.setLabelTable( labelTable );
slider.setPaintLabels(true);
slider.setValue(50);
final JTextField quantileValueField = new JTextField();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment