@Override public void readFields(DataInput in) throws IOException { // read head (rows, cols) _numRows = in.readInt(); int numCols = in.readInt(); // read columns (value type, data) _schema.clear(); _coldata.clear(); for (int j = 0; j < numCols; j++) { ValueType vt = ValueType.values()[in.readByte()]; String name = in.readUTF(); Array arr = null; switch (vt) { case STRING: arr = new StringArray(new String[_numRows]); break; case BOOLEAN: arr = new BooleanArray(new boolean[_numRows]); break; case INT: arr = new LongArray(new long[_numRows]); break; case DOUBLE: arr = new DoubleArray(new double[_numRows]); break; default: throw new IOException("Unsupported value type: " + vt); } arr.readFields(in); _schema.add(vt); _colnames.add(name); _coldata.add(arr); } }
/** * Returns the schema based on Json object * * @param schemaObject * @return */ public static List<ValueType> getSchemaType(Object schemaObject) { JSONArray schemaJsonArr = (JSONArray) schemaObject; ValueType[] schemaArray = new ValueType[schemaJsonArr.size()]; for (int i = 0; i < schemaJsonArr.length(); i++) schemaArray[i] = ValueType.valueOf((String) schemaJsonArr.get(0)); return Arrays.asList(schemaArray); }