public Partition<T> getAppendPartition(long timestamp) throws JournalException { int sz = partitions.size(); if (sz > 0) { Partition<T> par = partitions.getQuick(sz - 1); Interval interval = par.getInterval(); if (interval == null || interval.contains(timestamp)) { return par.open().access(); } else if (interval.isBefore(timestamp)) { return createPartition(new Interval(timestamp, getMetadata().getPartitionType()), sz); } else { throw new JournalException("%s cannot be appended to %s", Dates.toString(timestamp), this); } } else { return createPartition(new Interval(timestamp, getMetadata().getPartitionType()), 0); } }
private void switchAppendPartition(long timestamp) throws JournalException { boolean computeTimestampLo = appendPartition == null; appendPartition = getAppendPartition(timestamp); Interval interval = appendPartition.getInterval(); if (interval == null) { appendTimestampHi = Long.MAX_VALUE; } else { appendTimestampHi = interval.getHi(); } if (computeTimestampLo) { FixedColumn column = appendPartition.getTimestampColumn(); long sz; if ((sz = column.size()) > 0) { appendTimestampLo = column.getLong(sz - 1); } } else { appendTimestampLo = appendPartition.getInterval().getLo(); } }