001: package com.jamonapi;
002:
003: /**Class that allows users to create ranges with the associated FrequencyDists/Buckets.
004:
005: */
006:
007: /**
008: *
009: * @author ssouza
010: */
011: import java.util.*;
012:
013: public class RangeHolder {
014:
015: List ranges = new ArrayList();
016: private boolean isLessThan = false;
017: private String lastHeader = "";
018:
019: /** Takes values < or <= */
020: public RangeHolder(String logical) {
021: isLessThan = "<".equals(logical);
022:
023: }
024:
025: /** defaults to < */
026: public RangeHolder() {
027:
028: }
029:
030: public void add(String displayHeader, double endPoint) {
031: ranges.add(new RangeHolderItem(displayHeader, endPoint));
032: }
033:
034: public void addLastHeader(String lastHeader) {
035: this .lastHeader = lastHeader;
036: }
037:
038: String getLastHeader() {
039: return lastHeader;
040: }
041:
042: // get standard millisecond time holder
043: static RangeHolder getMSHolder() {
044: RangeHolder rh = new RangeHolder("<");
045: rh.add("LessThan_0ms", 0);
046: rh.add("0_10ms", 10);
047: rh.add("10_20ms", 20);
048: rh.add("20_40ms", 40);
049: rh.add("40_80ms", 80);
050: rh.add("80_160ms", 160);
051: rh.add("160_320ms", 320);
052: rh.add("320_640ms", 640);
053: rh.add("640_1280ms", 1280);
054: rh.add("1280_2560ms", 2560);
055: rh.add("2560_5120ms", 5120);
056: rh.add("5120_10240ms", 10240);
057: rh.add("10240_20480ms", 20480);
058: rh.addLastHeader("GreaterThan_20480ms");
059: // note last range is always called lastRange and is added automatically
060: return rh;
061:
062: }
063:
064: // get standard Percent holder
065: static RangeHolder getPercentHolder() {
066: RangeHolder rh = new RangeHolder("<=");
067: rh.add("LessThanEqual_0", 0);
068: rh.add("0_10", 10);
069: rh.add("10_20", 20);
070: rh.add("20_30", 30);
071: rh.add("30_40", 40);
072: rh.add("40_50", 50);
073: rh.add("50_60", 60);
074: rh.add("60_70", 70);
075: rh.add("70_80", 80);
076: rh.add("80_90", 90);
077: rh.add("90_100", 100);
078: rh.addLastHeader("GreaterThan_100");
079: return rh;
080: }
081:
082: boolean isLessThan() {
083: return isLessThan;
084: }
085:
086: RangeHolder.RangeHolderItem get(int i) {
087: return (RangeHolder.RangeHolderItem) ranges.get(i);
088: }
089:
090: String[] getDisplayHeader() {
091: int size = ranges.size();
092: if (size == 0)
093: return null;
094:
095: String[] array = new String[size];
096: for (int i = 0; i < size; i++) {
097: RangeHolderItem item = (RangeHolderItem) ranges.get(i);
098: array[i] = item.getDisplayHeader();
099: }
100:
101: return array;
102:
103: }
104:
105: double[] getEndPoints() {
106: int size = ranges.size();
107: if (size == 0)
108: return null;
109:
110: double[] array = new double[size];
111: for (int i = 0; i < size; i++) {
112: RangeHolderItem item = (RangeHolderItem) ranges.get(i);
113: array[i] = item.getEndPoint();
114: }
115:
116: return array;
117: }
118:
119: int getSize() {
120: return ranges.size();
121: }
122:
123: static class RangeHolderItem {
124: private String displayHeader;
125: private double endPoint;
126:
127: public RangeHolderItem(String displayHeader, double endPoint) {
128: this .displayHeader = displayHeader;
129: this .endPoint = endPoint;
130: }
131:
132: public String getDisplayHeader() {
133: return displayHeader;
134: }
135:
136: public double getEndPoint() {
137: return endPoint;
138: }
139:
140: }
141:
142: }
|