єнту була мінімізація використовуваного трафіку. Для виконання цієї вимоги було вирішено реалізувати кеширование даних на стороні клієнта. Android SDK надає можливість спрощеного створення і супроводу бази даних, тому досить зручно використовувати прості реляційні структури для збереження інформації на клієнті. У реалізованому дипломному проекті за кешування даних відповідають класи з пакета data.
Клас Db Helper
Даний клас успадкований від абстрактного класу SQ Lite Open Helper, який надає простий і зручний інтерфейс для створення баз дані в ОС Android.
Константи:
- DB_NAME - константа, що містить ім'я файлу бази даних.
- STORES_TABLE - константа, що містить ім'я таблиці магазинів.
- CATEGORIES_TABLE - константа, що містить ім'я таблиці категорій.
- DB_ID_FIELD - константа, що містить ім'я службового стовпця з первинними ключами.
Статичні поля:
- instance - поле типу, Db Helper містить Сінглтон-об'єкт даного класу.
Методи:
- Db Helper getInstance (Context context) - статичний метод доступу до Сінглтон-об'єкту.
- void on Create (SQ Lite Database sq Lite Database) - метод базового класу SQLite Open Helper, що викликається при створенні бази даних. Об'єкт sq Lite Database являє собою абстракцію БД, і дозволяє виконувати ініціалізували SQL-запити.
- void on Upgrade (SQ Lite Database db, int i, int i2) - метод базового класу SQ Lite Open Helper, що викликається при збільшенні версії БД. У даному проекті не використовується.
- void recreate Tables () - метод, що дозволяє видалити поточні таблиці і створити нові. Використовується для очищення кеша.
Клас Data Provider
Даний клас являє собою локальну альтернативу повноцінного постачальника даних. Клас надає доступ до записів з таблиць БД у вигляді спеціальних об'єктів типу Cursor, що дозволяють здійснювати ітерацію по деякому набору даних, що є результатом асоційованого з курсором SQL-запиту.
Константи:
- STORES_URI - константа типу Uri, що містить URI таблиці магазинів.
- CATEGORIES_URI - константа типу Uri, що містить URI таблиці категорій.
Поля:
- instance - поле типу, Data Provider містить Сінглтон-об'єкт даного класу.
- context - поле типу, Context містить посилання на контекст додатки, необхідні для операцій з БД.
Методи:
- Cursor get Categories () - метод, який повертає об'єкт типу Cursor для ітерації за категоріями.
- Cursor get Streets (String city) - метод, який повертає об'єкт типу Cursor для ітерації по всіх вулицях обраного в параметрі city міста.
- Cursor getStores (String city, String street) - метод, який повертає об'єкт типу Cursor для ітерації по всіх магазинах, обраних в параметрі city і street міста і вулиці.
- void update Stores (List lt; StoreEntity gt; new Stores) - метод, який здійснює оновлення інформації в таблиці магазинів даними зі списку newStores.
- void update Categories (List lt; DbEntity gt; new Categories) - метод, який здійснює оновлення інформації в таблиці категорій даними зі списку new Categories.
- int get Last Version (String table Name) - метод, що дозволяє отримати останню версію зазначеної в параметрі table Name таблиці.
- int get Last Stores Version () - метод, що дозволяє отримати останню версію таблиці магазинів.
- int get Last Categories Version () - метод, що дозволяє отримати останню версію таблиці категорій.
Опис вкладеного пакету loaders
Даний пакет містить в собі реалізації класів-завантажувачів. Найбільш складним елементом пакету є абстрактний клас Simple Cursor Loader, від якого успадковані всі використовувані в проекті завантажувачі. Він являє собою типову реалізацію класу-завантажувача, призначеного для роботи з локальними об'єктами доступу до даних, на зразок класу Data Provider. Simple Cursor Loader за своєю суттю є злегка модифікованою версією класу Cursor Loader, що є частиною Android SDK і орієнтованого на роботу з постачальниками даних. Оскільки завдання реалізації завантажувача, орієнтованого на роботу з локальною заміною постачальників даних, є досить поширеною, використовувану в даному проекті реалізацію Simple Cursor Loader можна вважати типовою. Її опис можна знайти, наприклад, в літературному джерелі [8].