package com.isti.traceview.data;
import java.io.Serializable;
import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
import org.apache.log4j.Logger;
/**
* represents one screen point of graph, contains all data needed to draw pixel. Each point on
* screen graph represents some time range of raw trace data. Data point in this case is a vertical
* line from minimal to maximal value for representing time range.
*
* @author Max Kokoulin
*/
public class PlotDataPoint implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Logger logger = Logger.getLogger(PlotDataPoint.class);
/**
* High value in representing section
*/
private double top = Double.NEGATIVE_INFINITY;
/**
* Low value on representing section
*/
private double bottom = Double.POSITIVE_INFINITY;
/**
* Sequential number of segment in trace, to which this point belongs
*/
private int segmentNumber = 0;
/**
* Sequential number of raw data provider in trace, to which this point belongs
*/
private int rawDataProviderNumber = 0;
/**
* Sequential number of continue data area in trace, to which this point belongs.
* Similar to segmentNumber, but takes into account only gaps, not overlaps
*/
private int continueAreaNumber = 0;
private double mean = Double.POSITIVE_INFINITY;
/**
* Event assosiated, if exist. Null if event absent.
*/
private Set<EventWrapper> events = null;
public PlotDataPoint(double top, double bottom, double mean, int segmentNumber, int continueAreaNumber, int rawDataProviderNumber, Set<EventWrapper> events) {
logger.debug("Created:" + this);
this.top = top;
this.bottom = bottom;
this.mean = mean;
this.segmentNumber = segmentNumber;
this.continueAreaNumber = continueAreaNumber;
this.rawDataProviderNumber = rawDataProviderNumber;
this.events = events;
}
/**
* Getter of the property <tt>bottom</tt>
*
* @return minimum value in representing section
*/
public double getBottom() {
return bottom;
}
/**
* Getter of the property <tt>top</tt>
*
* @return maximum value in representing section
*/
public double getTop() {
return top;
}
/**
* @return mean of raw trace data in representing section
*/
public double getMean() {
return mean;
}
/**
* Getter of the property <tt>segmentNumber</tt>
*
* @return number of segment to which this range belongs.
*/
public int getSegmentNumber() {
return segmentNumber;
}
/**
* Getter of the property <tt>rawDataProviderNumber</tt>
*
* @return number of raw data provider to which this range belongs.
*/
public int getRawDataProviderNumber() {
return rawDataProviderNumber;
}
/**
* Getter of the property <tt>continueAreaNumber</tt>
*
* @return number of continue data area to which this range belongs.
*/
public int getContinueAreaNumber() {
return continueAreaNumber;
}
/**
* Getter of the property <tt>events</tt>
*
* @return Returns list of events found inside this time range.
*/
public Set<EventWrapper> getEvents() {
if (events == null) {
return Collections.synchronizedSortedSet(new TreeSet<EventWrapper>());
} else {
return events;
}
}
/**
* @return string representation of data point for debug purposes
*/
public String toString() {
return "PlotDataPoint: top " + top + ", mean " + mean + ", bottom " + bottom + "; segment # " + segmentNumber + ", rdp number "
+ rawDataProviderNumber;
}
}