2929import org .apache .arrow .vector .types .pojo .Field ;
3030import org .apache .arrow .vector .types .pojo .Schema ;
3131
32+ import com .google .common .collect .Iterators ;
33+
3234import io .netty .buffer .ArrowBuf ;
3335
36+ /**
37+ * Loads buffers into vectors
38+ */
3439public class VectorLoader {
3540 private final List <FieldVector > fieldVectors ;
3641 private final List <Field > fields ;
3742
43+ /**
44+ * will create children in root based on schema
45+ * @param schema the expected schema
46+ * @param root the root to add vectors to based on schema
47+ */
3848 public VectorLoader (Schema schema , FieldVector root ) {
3949 super ();
4050 this .fields = schema .getFields ();
4151 root .initializeChildrenFromFields (fields );
4252 this .fieldVectors = root .getChildrenFromFields ();
4353 if (this .fieldVectors .size () != fields .size ()) {
44- throw new IllegalArgumentException (); //TODO
54+ throw new IllegalArgumentException ("The root vector did not create the right number of children. found " + fieldVectors . size () + " expected " + fields . size ());
4555 }
4656 }
4757
58+ /**
59+ * Loads the record batch in the vectors
60+ * will not close the record batch
61+ * @param recordBatch
62+ */
4863 public void load (ArrowRecordBatch recordBatch ) {
4964 Iterator <ArrowBuf > buffers = recordBatch .getBuffers ().iterator ();
5065 Iterator <ArrowFieldNode > nodes = recordBatch .getNodes ().iterator ();
@@ -53,6 +68,9 @@ public void load(ArrowRecordBatch recordBatch) {
5368 FieldVector fieldVector = fieldVectors .get (i );
5469 loadBuffers (fieldVector , field , buffers , nodes );
5570 }
71+ if (nodes .hasNext () || buffers .hasNext ()) {
72+ throw new IllegalArgumentException ("not all nodes and buffers where consumed. nodes: " + Iterators .toString (nodes ) + " buffers: " + Iterators .toString (buffers ));
73+ }
5674 }
5775
5876 private void loadBuffers (FieldVector vector , Field field , Iterator <ArrowBuf > buffers , Iterator <ArrowFieldNode > nodes ) {
0 commit comments