Permalink
Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
74 lines (71 sloc) 3.04 KB
Usage patterns. Gui.
GUI.
1) На старте загружаются задания предыдущей сессии.
2) При загрузке задание проводит "самотестирование" RESCAN без
запроса пользователя - загружает данные из кэша, сверяет
обновление "корневой" страницы, проверяет целостность файлов
на диске. (если корневая изменилась - также проверяются дети, рекурсивно)
3) по итогам самопроверки пользователь видит, какие элементы
надо обновить, какие не изменились, какие файлы "лишние".
4) Пользователь может указать программе
4.1) UPDATE: скачать ТОЛЬКО повреждённые/удалённые/новые файлы
4.2) CLEAN: удалить "лишние" файлы.
4.3) SCAN-FIX-MP3TAGS: обновить существующие файлы новыми данными из интернета
(тэги MP3)
4.4) RESET: ФОРСИРОВАТЬ обновление всего
(скачка по-новой и удаление лишних файлов)
!!!! возможно, эту опцию не предоставлять, вместо этого предложить пользователю
удалить каталог с загрузками средствами OS.
4.5) RESCAN: обновить инфо обо всех страницах (этой и потомках), отобразив
разницу (элемент появился/удалён/не изменился) - автоматически выполняется при загрузке
нового задания
Алгоритмы (jobs):
5.1) Чтение/ремонт кэша.
Loaded = {}
LoadFromCache
-> success: Loaded += RepeatForEveryChild [tree walk recursive], Loaded += this
-> fail: "5.2"(this) [new job]
return {Loaded}
5.2) Обновление данных о страницах из сети - может использоваться без предварительной загрузки из кэша.
LoadFromCache,
UpdateFromNet
-> no diff: this-"5.1" [new job], return {} // <-- redundancy there
-> updated: RepeatForEveryChild [new jobs recursive], return {this}
5.3) Поиск лишних файлов. ???
FileList := {};
FileList += GetThisPageFiles;
ForEveryChild
FileList += child.GetThisPageFiles; // файлы создаваемые в родительском каталоге
ExtraFiles = system.GetActualFiles - FileList;
ExtraFiles += RepeatForEveryChild [tree walk recursive]
return ExtraFiles;
5.4) Валидация файлов.
ValidSavedPages = {};
InvalidSavedPages = {}
CheckSaveValidness
ok: ValidSavedPages += this;
fail: InvalidSavedPages += this;
(ValidSavedPages, InvalidSavedPages) += RepeatForEveryChild [tree walk recursive]
return (ValidSavedPages, InvalidSavedPages)
5.5) RESCAN.
"5.2", "5.3", "5.4"
5.6) UPDATE.
****** "5.2", "5.4"
ForEvery "InvalidSavedPage" - SavePageResults [new jobs]
5.7) CLEAN.
****** "5.2", "5.3"
ForEvery "ExtraFiles" - system.DeleteFile [list walk]
5.7) SCAN-FIX-MP3TAGS.
****** "5.2", "5.4"
ForEvery "InvalidSavedPage" - SavePageResults [new jobs]
ForEvery "ValidSavedPage" - if (Page is File) FixTags [list walk]
6) Так, типовой набор операций над страницей будет:
6.1) LoadFromCache - done
// 6.2) DownloadPage (temp) - done (this)
// 6.3) ComparePageData (this-temp) - done
6.4) UpdateFromNet(this) - done
6.5) GetThisPageFiles - all the files this page create on disk. DONE
// 6.6) GetParentalFiles
6.7) CheckSaveValidness - done
6.8) SavePageResults - done???
6.9) Track.FixTags - tagAudioFile(...) - done !!! careful confusing function names