Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом-DESKTOP-T5SUMLS.docx
Скачиваний:
10
Добавлен:
07.02.2016
Размер:
1.16 Mб
Скачать
    1. Модель бд для збереження даних

Структура даних, що описана вище, підходить для того щоб успішно десеріалізувати об’єкти отримані з сервера, але вона не підходить для збереження даних в локальній БД через складну структуру. Річ у тому, що SQLite лише імітує ORM «що описано на офіційному сайті додатку [16]», але не являється такою, тому вона може оперувати тільки простими типами даних. В нашому випадку всю структуру можна звести до однієї таблиці, яка виглядає наступним чином:

[Table("FeedItem")]

class FeedItem : INotifyPropertyChanged

{

[PrimaryKey]

public string id { get; set; }

public string title { get; set; }

public string timestampUsec { get; set; }

public string dateTime

{

get { return DataController.UnixTimeStampToDateTime(timestampUsec).ToString("HH:mm:ss dd.MM.yyyy"); }

}

public string href { get; set; }

public string content { get; set; }

public string author { get; set; }

public string tagid { get; set; }

public string tagName { get; set; }

public string streamId { get; set; }

public string streamName { get; set; }

private bool _isReaded;

public bool isReaded

{

get { return _isReaded; }

set { _isReaded = value; NotifyPropertyChanged(); }

}

public Visibility VisibilityIsReaded

{

get { return isReaded ? Visibility.Collapsed : Visibility.Visible; }

}

public Brush ReadedForeground

{

get { return isReaded ? new SolidColorBrush(Colors.Black) : new SolidColorBrush(Colors.Blue); }

}

private bool _isStarred;

public bool isStarred

{

get { return _isStarred; }

set { _isStarred = value; NotifyPropertyChanged(); }

}

public Symbol SymbolIsStarred

{

get { return isStarred ? Symbol.SolidStar : Symbol.OutlineStar; }

}

private bool _isLiked;

public bool isLiked

{

get { return _isLiked; }

set { _isLiked = value; NotifyPropertyChanged(); }

}

public string SymbolIsLikedStr

{

get { return isLiked ? "\U0000E00B" : "\U0000E006"; }

}

}

Тобто, модель «сирих» даних «рис. 3.1» в процесі синхронізації перетворюється в одну таблицю яку можна використовувати з додатком SQLite «рис. 3.2», що дозволить використовувати прив’язку даних до елементів управління та перекласти більшість CRUD (Create, Read, Update, Delete) операцій з БД на додаток SQLite, замість того щоб описувати їх самостійно «що описано в пряцях [16, 24, 26, 27]».

Рис. 3.1. Схема моделі «сирих» даних (що приходять з сервера)

Рис. 3.2. Схема моделі локальної бази даних

    1. Процес оновлення та збереження даних

Враховуючи описане вище, оновлення та збереження даних проходить у 3 етапи:

  • Отримання списку тегів (папок)

  • Отримання підписок для кожного тега

  • Отримання записів для кожної підписки

Справ в тому, що самі записи не містять у собі інформації до якого тегу вони належать, також там не має інформації про відмітки Starred, Liked, що також треба враховувати. Тому при отриманні записів з підписок ми рекурсивно записуємо в БД записи та присвоюємо їм ідентифікатор тега та підписки, для того щоб в подальшому користувач мав змогу фільтрації даних за цими параметрами.

Після цього з’являєтеся вся необхідна інформація для збереження даних в локальну БД та відображення їх користувачу.