<commit_before>package net.chandol.logjdbc.logging.collector.resultset;

import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import static net.chandol.logjdbc.logging.collector.resultset.ResultSetUtil.createColumns;

public class ResultSetData {
    private List<Column> columns;
    // list로 row를 표현 array로는 데이터를 표현
    // column의 크기는 고정되어있음. 어차피 log로 표현.String으로 써도 문제없음.
    private List<String[]> datas;

    ResultSetData(ResultSetMetaData metaData) {
        this.columns = createColumns(metaData);
        this.datas = new ArrayList<>();
    }

    // TODO ColumnType별로 문자열로 변경하여 저장한다.
    // 우선은 ToString을 사용한다.
    void addRow(Object... values) {
        String[] newValues = new String[values.length];
        for (int idx = 0; idx < values.length; idx++)
            newValues[idx] = values[idx].toString();

        datas.add(newValues);
    }

    public List<String> getColumns() {
        List<String> columnLabels = new ArrayList<>();
        for (Column column : columns) {
            columnLabels.add(column.getLabel());
        }
        return columnLabels;
    }

    public List<String[]> getDatas() {
        return datas;
    }
}<commit_msg>bugfix : value가 null인 경우 NPE 대응<commit_after>package net.chandol.logjdbc.logging.collector.resultset;

import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import static net.chandol.logjdbc.logging.collector.resultset.ResultSetUtil.createColumns;

public class ResultSetData {
    private List<Column> columns;
    // list로 row를 표현 array로는 데이터를 표현
    // column의 크기는 고정되어있음. 어차피 log로 표현.String으로 써도 문제없음.
    private List<String[]> datas;

    ResultSetData(ResultSetMetaData metaData) {
        this.columns = createColumns(metaData);
        this.datas = new ArrayList<>();
    }

    // TODO ColumnType별로 문자열로 변경하여 저장한다.
    // 우선은 ToString을 사용한다.
    void addRow(Object... values) {
        String[] newValues = new String[values.length];
        for (int idx = 0; idx < values.length; idx++){
            if(values[idx] != null)
                newValues[idx] = values[idx].toString();
            else
                newValues[idx] = "<null>";
        }

        datas.add(newValues);
    }

    public List<String> getColumns() {
        List<String> columnLabels = new ArrayList<>();
        for (Column column : columns) {
            columnLabels.add(column.getLabel());
        }
        return columnLabels;
    }

    public List<String[]> getDatas() {
        return datas;
    }
}
{'fraction_non_alphanumeric': 0.11497431845120505, 'fraction_numerical': 0.0007902015013828526, 'mean_word_length': 2.601706970128023, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1092513', 'n_tokens_mistral': 861, 'n_tokens_neox': 917, 'n_words': 180}