@SuppressWarnings("unchecked") static <T, S extends IndexedSeq<T>> S dropRightUntil(S seq, Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); for (int i = seq.length() - 1; i >= 0; i--) { if (predicate.test(seq.get(i))) { return (S) seq.take(i + 1); } } return (S) seq.take(0); }
@SuppressWarnings("unchecked") static <T, S extends IndexedSeq<T>> S dropUntil(S seq, Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); for (int i = 0; i < seq.length(); i++) { if (predicate.test(seq.get(i))) { return (S) seq.drop(i); } } return (S) seq.take(0); }
@Override public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) { DataFrame dataFrame = params.dataFrame; java.util.List<MarkupTableColumn> columnSpecs = dataFrame.getColumns().map(column -> { Integer widthRatio = Integer.valueOf(column.getMetaData().get(WIDTH_RATIO).getOrElse("0")); return new MarkupTableColumn(column.getId().getName()) .withWidthRatio(widthRatio) .withHeaderColumn(Boolean.parseBoolean(column.getMetaData().get(HEADER_COLUMN).getOrElse("false"))) .withMarkupSpecifiers(MarkupLanguage.ASCIIDOC, ".^" + widthRatio + "a"); } ).toJavaList(); IndexedSeq<IndexedSeq<String>> columnValues = dataFrame.getColumns() .map(column -> ((StringColumn) column).getValues()); java.util.List<java.util.List<String>> cells = Array.range(0, dataFrame.getRowCount()) .map(rowNumber -> columnValues.map(values -> values.get(rowNumber)).toJavaList()).toJavaList(); return markupDocBuilder.tableWithColumnSpecs(columnSpecs, cells); }
private static int inferRowCount(IndexedSeq<Column<?>> columns) { if (columns.isEmpty()) { return 0; } else { Set<Integer> rowCounts = columns.map(Column::getRowCount).distinct().toSet(); if (rowCounts.length() > 1) { throw new IllegalArgumentException("Differing number of rows (i.e. column sizes)"); } else { return rowCounts.iterator().next(); } } }
@Override public T apply(Integer index) { return get(index); } @Override
static <T> int indexOfSlice(IndexedSeq<T> source, Iterable<? extends T> slice, int from) { if (source.isEmpty()) { return from == 0 && Collections.isEmpty(slice) ? 0 : -1; } final IndexedSeq<T> _slice = toIndexedSeq(slice); final int maxIndex = source.length() - _slice.length(); return findSlice(source, _slice, Math.max(from, 0), maxIndex); }
@SuppressWarnings("unchecked") static <T, S extends IndexedSeq<T>> S takeRightUntil(S seq, Predicate<? super T> predicate) { Objects.requireNonNull(predicate, "predicate is null"); for (int i = seq.length() - 1; i >= 0; i--) { if (predicate.test(seq.get(i))) { return (S) seq.drop(i + 1); } } return seq; }
TimestampColumn dateOfBirthColumn = df.getColumn(dateOfBirthColumnId); Function<? super Instant, Month> toMonth = instant -> instant.atZone(ZoneId.from(ZoneOffset.UTC)).getMonth(); assertEquals(asList(Month.AUGUST, Month.JANUARY, Month.OCTOBER), dateOfBirthColumn.getValues().map(toMonth).toJavaList()); assertEquals(111, dateOfBirthColumn.getValueAt(0).getLong(ChronoField.MILLI_OF_SECOND)); assertEquals(222, dateOfBirthColumn.getValueAt(1).getLong(ChronoField.MILLI_OF_SECOND));
@Override public boolean isDefinedAt(Integer index) { return 0 <= index && index < length(); } };
public IndexedSeq<String> getColumnNames() { return getColumnIds().map(ColumnId::getName); }
@Test public void empty() { DataFrame dataFrame = DataFrame.empty(); assertEquals(0, dataFrame.getRowCount()); assertEquals(0, dataFrame.getColumnCount()); assertTrue(dataFrame.getColumnIds().isEmpty()); assertTrue(dataFrame.getColumnNames().isEmpty()); assertTrue(dataFrame.getColumns().isEmpty()); }
@Override default int indexWhere(Predicate<? super T> predicate, int from) { Objects.requireNonNull(predicate, "predicate is null"); int start = Math.max(from, 0); int n = start + segmentLength(predicate.negate(), start); return (n >= length()) ? -1 : n; }
@Override public MarkupDocBuilder apply(MarkupDocBuilder markupDocBuilder, Parameters params) { DataFrame dataFrame = params.dataFrame; java.util.List<MarkupTableColumn> columnSpecs = dataFrame.getColumns().map(column -> { Integer widthRatio = Integer.valueOf(column.getMetaData().get(WIDTH_RATIO).getOrElse("0")); return new MarkupTableColumn(column.getId().getName()) .withWidthRatio(widthRatio) .withHeaderColumn(Boolean.parseBoolean(column.getMetaData().get(HEADER_COLUMN).getOrElse("false"))) .withMarkupSpecifiers(MarkupLanguage.ASCIIDOC, ".^" + widthRatio + "a"); } ).toJavaList(); IndexedSeq<IndexedSeq<String>> columnValues = dataFrame.getColumns() .map(column -> ((StringColumn) column).getValues()); java.util.List<java.util.List<String>> cells = Array.range(0, dataFrame.getRowCount()) .map(rowNumber -> columnValues.map(values -> values.get(rowNumber)).toJavaList()).toJavaList(); return markupDocBuilder.tableWithColumnSpecs(columnSpecs, cells); }
private static int inferRowCount(IndexedSeq<Column<?>> columns) { if (columns.isEmpty()) { return 0; } else { Set<Integer> rowCounts = columns.map(Column::getRowCount).distinct().toSet(); if (rowCounts.length() > 1) { throw new IllegalArgumentException("Differing number of rows (i.e. column sizes)"); } else { return rowCounts.iterator().next(); } } }
@Override public T getNext() { return IndexedSeq.this.get(--i); } };