/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.timeseries;
import java.util.Arrays;
import java.util.List;
/**
* Bulk operations on time-series.
*/
public class BulkTimeSeriesOperations {
/**
* Calculates the intersection of the input time-series.
* <p>
* Earlier time-series takes precedence over later ones.
*
* @param <E> the series type
* @param inputs the input series, not null
* @return the output series, not null
*/
@SuppressWarnings("unchecked")
public static <E> DoubleTimeSeries<E>[] intersection(DoubleTimeSeries<E>[] inputs) {
DoubleTimeSeries<E>[] results = new DoubleTimeSeries[inputs.length];
if (inputs.length < 2) {
for (int i = 0; i < inputs.length; i++) {
results[i] = (DoubleTimeSeries<E>) inputs[i].newInstance(inputs[i].timesArray(), inputs[i].valuesArray());
}
return results;
}
DoubleTimeSeries<E> intersection = inputs[0];
for (int i = 1; i < inputs.length; i++) {
intersection = intersection.intersectionFirstValue(inputs[i]);
}
for (int i = 0; i < inputs.length; i++) {
results[i] = inputs[i].intersectionFirstValue(intersection);
}
return results;
}
/**
* Calculates the intersection of the input time-series.
* <p>
* Earlier time-series takes precedence over later ones.
*
* @param <E> the series type
* @param inputs the input series, not null
* @return the output series, not null
*/
@SuppressWarnings("unchecked")
public <E> List<DoubleTimeSeries<E>> intersection(List<DoubleTimeSeries<E>> inputs) {
return Arrays.asList(intersection((DoubleTimeSeries<E>[]) inputs.toArray()));
}
}