final boolean isEndColumnNumeric = endColumn != null ? AttributeUtils.getDefault().isNumberColumn(endColumn) : false;
AttributeColumnsController ac = Lookup.getDefault().lookup(AttributeColumnsController.class);
Object value;
double start, end;
TimeInterval timeInterval;
for (Attributes row : ac.getTableAttributeRows(table)) {
if (startColumnIndex != -1) {
value = row.getValue(startColumnIndex);
if (value != null) {
if (isStartColumnNumeric) {
start = ((Number) value).doubleValue();
} else {
start = parseDouble(value.toString(), defaultStart);
}
} else {
start = defaultStart;
}
} else {
start = defaultStart;
}
if (endColumnIndex != -1) {
value = row.getValue(endColumnIndex);
if (value != null) {
if (isEndColumnNumeric) {
end = ((Number) value).doubleValue();
} else {
end = parseDouble(value.toString(), defaultEnd);
}
} else {
end = defaultEnd;
}
} else {
end = defaultEnd;
}
if (!Double.isInfinite(start) && !Double.isInfinite(end) && start > end) {
//When start>end, check what column was provided and keep its value. If both columns were provided, set an infinite interval:
if (startColumnIndex == -1) {
start = Double.NEGATIVE_INFINITY;
} else if (endColumnIndex == -1) {
end = Double.POSITIVE_INFINITY;
} else {
start = Double.NEGATIVE_INFINITY;
end = Double.POSITIVE_INFINITY;
}
}
timeInterval = new TimeInterval(start, end);
row.setValue(timeIntervalColumnIndex, timeInterval);
}
Lookup.getDefault().lookup(DynamicController.class).setTimeFormat(DynamicModel.TimeFormat.DOUBLE);
return timeIntervalColumn;
}