public static Row parse()

in common/src/main/java/org/opensearch/ml/common/dataframe/Row.java [95:155]


    public static Row parse(XContentParser parser) throws IOException {
        List<ColumnValue> values = new ArrayList<>();

        ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);
        while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
            String fieldName = parser.currentName();
            parser.nextToken();

            switch (fieldName) {
                case "values":
                    ensureExpectedToken(XContentParser.Token.START_ARRAY, parser.currentToken(), parser);
                    while (parser.nextToken() != XContentParser.Token.END_ARRAY) {
                        ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.currentToken(), parser);
                        if (parser.nextToken() != XContentParser.Token.END_OBJECT) {
                            String columnTypeField = parser.currentName();
                            if (!"column_type".equals(columnTypeField)) {
                                throw new IllegalArgumentException("wrong column type, expect column_type field but got " + columnTypeField);
                            }
                            parser.nextToken();
                            String columnType = parser.text();

                            if (!"NULL".equals(columnType)) {
                                parser.nextToken();
                                String valueField = parser.currentName();
                                if (!"value".equals(valueField)) {
                                    throw new IllegalArgumentException("wrong column value, expect value field but got " + valueField);
                                }
                                parser.nextToken();
                            }

                            switch (columnType) {
                                case "NULL":
                                    values.add(new NullValue());
                                    break;
                                case "BOOLEAN":
                                    values.add(new BooleanValue(parser.booleanValue()));
                                    break;
                                case "STRING":
                                    values.add(new StringValue(parser.text()));
                                    break;
                                case "INTEGER":
                                    values.add(new IntValue(parser.intValue()));
                                    break;
                                case "DOUBLE":
                                    values.add(new DoubleValue(parser.doubleValue()));
                                    break;
                                default:
                                    break;
                            }
                            parser.skipChildren();
                            parser.nextToken();
                        }
                    }
                    break;
                default:
                    parser.skipChildren();
                    break;
            }
        }
        return new Row(values.toArray(new ColumnValue[0]));
    }