Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2017-06-29 | 163 |
5.00
из
|
Заказать работу |
|
|
История переводов, избранные переводы, а также оффлайн переводы должны где-то храниться. Самое верное для этого решение, хранить все это в базе данных.
База данных в 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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!