📄 combineddataset.java
字号:
* @param item the index of the item of interest (zero-based).
*
* @return the close-value for the specified series and item.
*/
public Number getCloseValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
return ((HighLowDataset) di.data).getCloseValue(di.series, item);
}
/**
* Returns the volume value for the specified series and item.
* <P>
* Note: throws <code>ClassCastException</code> if the series is not from a
* {@link HighLowDataset}.
*
* @param series the index of the series of interest (zero-based).
* @param item the index of the item of interest (zero-based).
*
* @return the volume value for the specified series and item.
*/
public Number getVolumeValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
return ((HighLowDataset) di.data).getVolumeValue(di.series, item);
}
///////////////////////////////////////////////////////////////////////////
// From IntervalXYDataset
///////////////////////////////////////////////////////////////////////////
/**
* Returns the starting X value for the specified series and item.
*
* @param series the index of the series of interest (zero-based).
* @param item the index of the item of interest (zero-based).
*
* @return the starting X value for the specified series and item.
*/
public Number getStartXValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
if (di.data instanceof IntervalXYDataset) {
return ((IntervalXYDataset) di.data).getStartXValue(di.series, item);
}
else {
return getXValue(series, item);
}
}
/**
* Returns the ending X value for the specified series and item.
*
* @param series the index of the series of interest (zero-based).
* @param item the index of the item of interest (zero-based).
*
* @return the ending X value for the specified series and item.
*/
public Number getEndXValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
if (di.data instanceof IntervalXYDataset) {
return ((IntervalXYDataset) di.data).getEndXValue(di.series, item);
}
else {
return getXValue(series, item);
}
}
/**
* Returns the starting Y value for the specified series and item.
*
* @param series the index of the series of interest (zero-based).
* @param item the index of the item of interest (zero-based).
*
* @return the starting Y value for the specified series and item.
*/
public Number getStartYValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
if (di.data instanceof IntervalXYDataset) {
return ((IntervalXYDataset) di.data).getStartYValue(di.series, item);
}
else {
return getYValue(series, item);
}
}
/**
* Returns the ending Y value for the specified series and item.
*
* @param series the index of the series of interest (zero-based).
* @param item the index of the item of interest (zero-based).
*
* @return the ending Y value for the specified series and item.
*/
public Number getEndYValue(int series, int item) {
DatasetInfo di = getDatasetInfo(series);
if (di.data instanceof IntervalXYDataset) {
return ((IntervalXYDataset) di.data).getEndYValue(di.series, item);
}
else {
return getYValue(series, item);
}
}
///////////////////////////////////////////////////////////////////////////
// New methods from CombinationDataset
///////////////////////////////////////////////////////////////////////////
/**
* Returns the parent Dataset of this combination. If there is more than
* one parent, or a child is found that is not a CombinationDataset, then
* returns <code>null</code>.
*
* @return the parent Dataset of this combination or <code>null</code>.
*/
public SeriesDataset getParent() {
SeriesDataset parent = null;
for (int i = 0; i < datasetInfo.size(); i++) {
SeriesDataset child = getDatasetInfo(i).data;
if (child instanceof CombinationDataset) {
SeriesDataset childParent = ((CombinationDataset) child).getParent();
if (parent == null) {
parent = childParent;
}
else if (parent != childParent) {
return null;
}
}
else {
return null;
}
}
return parent;
}
/**
* Returns a map or indirect indexing form our series into parent's series.
* Prior to calling this method, the client should check getParent() to make
* sure the CombinationDataset uses the same parent. If not, the map
* returned by this method will be invalid or null.
*
* @return a map or indirect indexing form our series into parent's series.
*
* @see #getParent()
*/
public int[] getMap() {
int[] map = null;
for (int i = 0; i < datasetInfo.size(); i++) {
SeriesDataset child = getDatasetInfo(i).data;
if (child instanceof CombinationDataset) {
int[] childMap = ((CombinationDataset) child).getMap();
if (childMap == null) {
return null;
}
map = joinMap(map, childMap);
}
else {
return null;
}
}
return map;
}
///////////////////////////////////////////////////////////////////////////
// New Methods
///////////////////////////////////////////////////////////////////////////
/**
* Returns the child position.
*
* @param child the child dataset.
*
* @return the position.
*/
public int getChildPosition(Dataset child) {
int n = 0;
for (int i = 0; i < datasetInfo.size(); i++) {
SeriesDataset childDataset = getDatasetInfo(i).data;
if (childDataset instanceof CombinedDataset) {
int m = ((CombinedDataset) childDataset).getChildPosition(child);
if (m >= 0) {
return n + m;
}
n++;
}
else {
if (child == childDataset) {
return n;
}
n++;
}
}
return -1;
}
///////////////////////////////////////////////////////////////////////////
// Private
///////////////////////////////////////////////////////////////////////////
/**
* Returns the DatasetInfo object associated with the series.
*
* @param series the index of the series.
*
* @return the DatasetInfo object associated with the series.
*/
private DatasetInfo getDatasetInfo(int series) {
return (DatasetInfo) datasetInfo.get(series);
}
/**
* Joins two map arrays (int[]) together.
*
* @param a the first array.
* @param b the second array.
*
* @return a copy of { a[], b[] }.
*/
private int[] joinMap(int[] a, int[] b) {
if (a == null) {
return b;
}
if (b == null) {
return a;
}
int[] result = new int[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
/**
* Private class to store as pairs (SeriesDataset, series) for all combined series.
*
* @see add()
*/
private class DatasetInfo {
/** The dataset. */
private SeriesDataset data;
/** The series. */
private int series;
/**
* Creates a new dataset info record.
*
* @param data the dataset.
* @param series the series.
*/
DatasetInfo(SeriesDataset data, int series) {
this.data = data;
this.series = series;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -