package tools;

import android.database.Cursor;

import java.io.OutputStream;

import tctable.TCField;
import tctable.TCTable;

public class TCTableTools2 {

    public static int convertType(int type)
    {
        int result;
        if (type == Cursor.FIELD_TYPE_NULL) {  //Такого типа у меня нет
            result=TCField.BD_NULL;
        } else if (type == Cursor.FIELD_TYPE_BLOB) {
            result=TCField.BD_BLOB_4;
        } else if (type == Cursor.FIELD_TYPE_FLOAT) { //Похоже что это почти в SQLITE но перед вставкой преобразуется в нужный тип
            result=TCField.BD_SFLOAT8;
        } else if (type == Cursor.FIELD_TYPE_INTEGER) {
            result=TCField.BD_SINT8;
        } else if (type == Cursor.FIELD_TYPE_STRING) {
            result=TCField.BD_UTF8_4;
        }
        else result=TCField.BD_UTF8_4;
        return result;
    }

    //TODO не получится! нет такого функционала чтобы выбрать из Cursor типы полей если поле будет null то вернёт тип поля null!!!!
    //Записать таблицу в OutputStream из курсора андроида
    public static boolean getTCTableFromCursor(String name, int id, Cursor cursor, OutputStream os) {
        TCTable tbl = new TCTable(name, id);
        String[] columnNames = cursor.getColumnNames();
        boolean first=true;
        while (cursor.moveToNext()) {
            if(first){
                for (int i = 0; i < columnNames.length; i++) {

                    TCField field = new TCField(columnNames[i], TCTableTools2.convertType(cursor.getType(i)));
                    tbl.addField(field);
                }
                tbl.getHeader(os);
                first=false;
            }
            for (int i = 0; i < columnNames.length; i++) {
                tbl.fields.get(i).setValue(cursor.getString(i));
            }
            tbl.getCol(os);
        }
        return true;
    }

}
