Database: Segmented interval in ::deleteInterval

This commit is contained in:
Paul Beckingham 2016-04-17 09:05:37 -04:00
parent 709aa8fe41
commit 25be7c82e7

View file

@ -136,13 +136,18 @@ void Database::addInterval (const Interval& interval)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void Database::deleteInterval (const Interval& interval) void Database::deleteInterval (const Interval& interval)
{ {
std::vector <Datafile>::reverse_iterator ri; auto intervalRange = interval.range ();
for (ri = _files.rbegin (); ri != _files.rend (); ri++) for (auto& segment : segmentRange (intervalRange))
if (ri->deleteInterval (interval)) {
break; // Get the index into _files for the appropriate Datafile, which may be
// created on demand.
auto df = getDatafile (segment.start ().year (), segment.start ().month ());
// Datafile for this interval does not exist. This means the data file was // Intersect the original interval range, and the segment.
// deleted/removed, or the interval is old. Nothing to do. Interval segmentedInterval (interval);
segmentedInterval.range (intervalRange.intersect (segment));
_files[df].deleteInterval (segmentedInterval);
}
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////