@Override
    public String toString() {

        StringBuffer info = new StringBuffer();
        addInfo(info, SI_ID, getId());
        addInfo(info, SI_TOTAL_COUNT, getTotalCount());
        addInfo(info, SI_CURSOR, getCursor());
        addInfo(info, SI_SERVICE_NAME, getServiceName());
        addInfo(info, SI_VERSION, getVersion());
        StringBuffer names = new StringBuffer();
        String[] columnNames = getColumnNames();
        if (columnNames != null) {
            for (int i = 0; i < columnNames.length; i++) {
                String name = columnNames[i];
                if (i > 0) {
                    names.append(", ");
                }
                names.append(name);
            }
        }
        addInfo(info, SI_COLUMN_NAMES, names);
        addInfo(info, SI_INITIAL_DATA, getInitialData().toString());
        return info.toString();
    }