@Override public void write(int repetitionLevel, T value) { if (value != null) { writer.write(repetitionLevel, value); } else { for (TripleWriter<?> column : children) { column.writeNull(repetitionLevel, definitionLevel - 1); } } }
@Override public void write(int parentRepetition, L value) { Iterator<E> elements = elements(value); if (!elements.hasNext()) { // write the empty list to each column // TODO: make sure this definition level is correct for (TripleWriter<?> column : children) { column.writeNull(parentRepetition, definitionLevel - 1); } } else { boolean first = true; while (elements.hasNext()) { E element = elements.next(); int rl = repetitionLevel; if (first) { rl = parentRepetition; first = false; } writer.write(rl, element); } } }
@Override public void write(int parentRepetition, M value) { Iterator<Map.Entry<K, V>> pairs = pairs(value); if (!pairs.hasNext()) { // write the empty map to each column for (TripleWriter<?> column : children) { column.writeNull(parentRepetition, definitionLevel - 1); } } else { boolean first = true; while (pairs.hasNext()) { Map.Entry<K, V> pair = pairs.next(); int rl = repetitionLevel; if (first) { rl = parentRepetition; first = false; } keyWriter.write(rl, pair.getKey()); valueWriter.write(rl, pair.getValue()); } } }