package ru.ds_release.database;

/**
 * Created by Sergey on 30.12.2016.
 */

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class ControlSQL extends SQLiteOpenHelper {


    private static final String DATABASE_NAME = "android.db";
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_TABLE = "table1";

    // поля таблицы для хранения ФИО, Должности и Телефона (id формируется автоматически)
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_FIO = "FIO";
    public static final String COLUMN_DOL = "DOL";
    public static final String COLUMN_TEL = "TEL";


    // формируем запрос для создания базы данных
    private static final String DATABASE_CREATE = "create table "
            + DATABASE_TABLE + "(" + COLUMN_ID
            + " integer primary key autoincrement, " + COLUMN_FIO
            + " text not null, " + COLUMN_DOL + " text not null,"
            + COLUMN_TEL + " text not null" + ");";


    public ControlSQL(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        //создаем таблицу
        db.execSQL(DATABASE_CREATE);

        //добавляем строку
        ContentValues initialValues = createContentValues("","","");
        db.insert(DATABASE_TABLE, null, initialValues);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS table1");
        onCreate(db);
    }



    /**
     * Создаёт новый контакт. Если создан успешно - возвращается
     * номер строки rowId, иначе -1
     */
    public long createNewTable(String FIO, String DOL,
                              String TEL) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues initialValues = createContentValues(FIO, DOL,
                TEL);

        long row = db.insert(DATABASE_TABLE, null, initialValues);
        db.close();

        return row;
    }


    /**
     * Изменение строчки
     */
    public boolean updateTable(long rowId, String FIO, String DOL,
                              String TEL) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues updateValues = createContentValues(FIO, DOL,
                TEL);

        return db.update(DATABASE_TABLE, updateValues, COLUMN_ID + "=" + rowId,
                null) > 0;
    }

    /**
     * Удаление контакта
     */
    public void deleteTable(long rowId) {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(DATABASE_TABLE, COLUMN_ID + "=" + rowId, null);
        db.close();
    }

    /**
     * Получение всех контактов
     */
    public Cursor getFullTable() {
        SQLiteDatabase db = this.getWritableDatabase();
        return db.query(DATABASE_TABLE, new String[] { COLUMN_ID,
                        COLUMN_FIO, COLUMN_DOL,COLUMN_TEL }, null,
                null, null, null, null);
    }

    /**
     * Получаем конктеный контакт
     */
    public Cursor getTable(long rowId) throws SQLException {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor mCursor = db.query(true, DATABASE_TABLE,
                new String[] { COLUMN_ID, COLUMN_FIO, COLUMN_DOL,
                        COLUMN_TEL }, COLUMN_ID + "=" + rowId, null,
                null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }


    /*
     * Описываем структуру данных
     */
    private ContentValues createContentValues(String FIO, String DOL,
                                              String TEL) {
        ContentValues values = new ContentValues();
        values.put(COLUMN_FIO, FIO);
        values.put(COLUMN_DOL, DOL);
        values.put(COLUMN_TEL, TEL);
        return values;
    }






}
