/** * Creates an empty delta sequence. This sequence will not have an end version. */ public static DeltaSequence empty() { return new DeltaSequence(ImmutableList.<TransformedWaveletDelta>of(), false); }
/** Creates a delta sequence from contiguous deltas. */ public static DeltaSequence of(Iterable<TransformedWaveletDelta> deltas) { return new DeltaSequence(ImmutableList.copyOf(deltas), true); }
/** Creates a delta sequence from contiguous deltas. */ public static DeltaSequence of(TransformedWaveletDelta... deltas) { return new DeltaSequence(ImmutableList.copyOf(deltas), true); }
@Override public DeltaSequence subList(int start, int end) { return new DeltaSequence(deltas.subList(start, end), false); }
/** Creates a delta sequence by concatenating contiguous sequences. */ public static DeltaSequence join(DeltaSequence first, DeltaSequence... rest) { ImmutableList.Builder<TransformedWaveletDelta> builder = ImmutableList.builder(); builder.addAll(first); long expectedBeginVersion = first.getEndVersion().getVersion(); for (DeltaSequence s : rest) { Preconditions.checkArgument(s.getStartVersion() == expectedBeginVersion, "Sequences are not contiguous, expected start version %s for sequence %s", expectedBeginVersion, s); builder.addAll(s); expectedBeginVersion = s.getEndVersion().getVersion(); } return new DeltaSequence(builder.build(), false); }