Модуль работы с базой данных — КиберПедия 

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Модуль работы с базой данных

2017-06-29 163
Модуль работы с базой данных 0.00 из 5.00 0 оценок
Заказать работу

История переводов, избранные переводы, а также оффлайн переводы должны где-то храниться. Самое верное для этого решение, хранить все это в базе данных.

База данных в Android представлена в виде SQLite.Для удобной работы с БД был написан модуль, имеющий методы:

 

· reset () - Метод очистки БД

· insert() - Метод помещающий результат перевода в БД

· setIsFavorite() - Метод добавляющий/убирающий в избранное перевод

· getHistory() - Метод возвращающий историю всех переводов.

· getTranslate() - Метод возвращающий перевод для слова/предложения (Оффлайн переводчик)

· dbCount() – Метод возвращающий кол-во строк в БД

 

Листинг основных методов:

 

/**
* Метод помещающий результат перевода в БД
* @param result Результат перевода в виде TranslateResultModel
* */
public void insert(TranslateResultModel result)
{
SQLiteDatabase dataBase = getWritableDatabase(); /** Открывает экземпляр базы данных */

ContentValues contentValues = new ContentValues(); /** Формирую сроку */

contentValues.put(FROM_TEXT,result.from);
contentValues.put(TO_TEXT,result.to);
contentValues.put(LANG,result.lang);
contentValues.put(IS_FAVORITE,(result.favorite)? 1: 0);

dataBase.insert(TABLE_RESULTS,null,contentValues); /** Добавляю в бд */

dataBase.close();
}

/**

* Метод добавляющий/убирающий в избранное перевод

* @param id ID результата перевода в БД

* @param state Значение

* */

public void setIsFavorite(int id, boolean state)

{

SQLiteDatabase dataBase = getWritableDatabase();

 

Cursor c = dataBase.query(TABLE_RESULTS, null,"_id = " + id,null,null,null,null,null);

if(c.moveToFirst()) {

do {

ContentValues contentValues = new ContentValues();

 

int idFrom =c.getColumnIndex(FROM_TEXT);

int idTo = c.getColumnIndex(TO_TEXT);

int idLang = c.getColumnIndex(LANG);

 

contentValues.put(FROM_TEXT,c.getString(idFrom));

contentValues.put(TO_TEXT,c.getString(idTo));

contentValues.put(LANG,c.getString(idLang));

contentValues.put(IS_FAVORITE,(state)? 1: 0);

 

/** Обновляю БД */

dataBase.update(TABLE_RESULTS,contentValues,"_id = " + id,null);

}

while (c.moveToNext());

}

}

 

/**

* Метод возвращающий историю всех переводов.

* @param text Текст перевода. Может отсутствовать,но тогда будет возвращены все значения

* @param favorite В избранном

* */

public ArrayList<TranslateResultModel> getHistory(String text, boolean favorite)

{

 

ArrayList<TranslateResultModel> results = new ArrayList<>();

SQLiteDatabase dataBase = getReadableDatabase();

Cursor c = null;

String filter = '%' + text + '%';

if(favorite) {

if (TextUtils.isEmpty(text))

c = dataBase.query(TABLE_RESULTS, null, "_favorite=1", null, null, null, null, null);

else

c = dataBase.query(TABLE_RESULTS, null, "_from LIKE (?) OR _to LIKE (?) AND _favorite=1"

, new String[]{filter,filter}, null, null, null, null);

}

else{

if (TextUtils.isEmpty(text))

c = dataBase.query(TABLE_RESULTS, null, null, null, null, null, null, null);

else

c = dataBase.query(TABLE_RESULTS, null, "_from LIKE (?) or _to LIKE (?)"

, new String[]{filter,filter}, null, null, null, null);

}

 

if(c.moveToLast()) {

do {

int idFrom =c.getColumnIndex(FROM_TEXT);

int idTo = c.getColumnIndex(TO_TEXT);

int idLang = c.getColumnIndex(LANG);

int idFavorite = c.getColumnIndex(IS_FAVORITE);

int idID = c.getColumnIndex(KEY_ID);

results.add(new TranslateResultModel(c.getString(idFrom),c.getString(idTo),

c.getString(idLang),(c.getInt(idFavorite) == 1),c.getInt(idID)));

}

while (c.moveToPrevious());

}

dataBase.close();

return results;

}

 

/**

* Метод возвращающий перевод для слова/предложения (Оффлайн переводчик)

* @param text Текст перевода.

* @param lang Язык перевода

* */

public ArrayList<TranslateResultModel> getTranslate(String text, String lang)

{

ArrayList<TranslateResultModel> results = new ArrayList<>();

SQLiteDatabase dataBase = getReadableDatabase(); //Открывает экземпляр базы данных

Cursor c = null;

 

c = dataBase.query(TABLE_RESULTS, null,"_lang=\"" + lang + "\" and _from=\"" + text + "\""

, null, null, null, null, null);

 

if(c.moveToFirst()) {

do {

int idFrom =c.getColumnIndex(FROM_TEXT);

int idTo = c.getColumnIndex(TO_TEXT);

int idLang = c.getColumnIndex(LANG);

int idFavorite = c.getColumnIndex(IS_FAVORITE);

int idID = c.getColumnIndex(KEY_ID);

results.add(new TranslateResultModel(c.getString(idFrom),c.getString(idTo),

c.getString(idLang),(c.getInt(idFavorite) == 1),c.getInt(idID)));

}

while (c.moveToNext());

}

dataBase.close();

return results;

}

 


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.