mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 10:49:24 +02:00
Refresh catalogs
button
git-svn-id: https://only.mawhrin.net/repos/FBReaderJ/trunk@1683 6a642e6f-84f6-412e-ac94-c4a38d5a04b0
This commit is contained in:
parent
af4852e1b0
commit
943f7cb314
15 changed files with 99 additions and 32 deletions
|
@ -16,7 +16,7 @@ NP: оповещение об изменениях в namespace'ах проис
|
||||||
DONE сделать DTD для xml-ей, как в OPDS, вместо существующего
|
DONE сделать DTD для xml-ей, как в OPDS, вместо существующего
|
||||||
DONE перенести xml на сервер
|
DONE перенести xml на сервер
|
||||||
DONE кэширование каталога
|
DONE кэширование каталога
|
||||||
** сделать кнопку "Обновить список каталогов" -- форсировать обновление кэша
|
DONE сделать кнопку "Обновить список каталогов" -- форсировать обновление кэша
|
||||||
** умное обновление каталогов согласно ID и UPDATED:
|
** умное обновление каталогов согласно ID и UPDATED:
|
||||||
** добавлять новые
|
** добавлять новые
|
||||||
** пересоздавать измененные
|
** пересоздавать измененные
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="Ausloggen (%s)"/>
|
<node name="signOut" value="Ausloggen (%s)"/>
|
||||||
<node name="refillAccount" value="Account aufladen"/>
|
<node name="refillAccount" value="Account aufladen"/>
|
||||||
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="Buch wird gekauft. Bitte warten..." />
|
<node name="purchaseBook" value="Buch wird gekauft. Bitte warten..." />
|
||||||
<node name="registerUser" value="Neuer Account wird registriert. Bitte warten..." />
|
<node name="registerUser" value="Neuer Account wird registriert. Bitte warten..." />
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Interner Server-Fehler" />
|
<node name="internalError" value="Interner Server-Fehler" />
|
||||||
|
|
|
@ -63,6 +63,7 @@
|
||||||
<node name="signOut" value="Sign out (%s)"/>
|
<node name="signOut" value="Sign out (%s)"/>
|
||||||
<node name="refillAccount" value="Refill account"/>
|
<node name="refillAccount" value="Refill account"/>
|
||||||
<node name="addCustomCatalog" value="Add catalog"/>
|
<node name="addCustomCatalog" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -277,6 +278,7 @@
|
||||||
<node name="purchaseBook" value="Purchase book. Please, wait..." />
|
<node name="purchaseBook" value="Purchase book. Please, wait..." />
|
||||||
<node name="registerUser" value="Registering new account. Please, wait..." />
|
<node name="registerUser" value="Registering new account. Please, wait..." />
|
||||||
<node name="loadingCatalogInfo" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Internal server error" />
|
<node name="internalError" value="Internal server error" />
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="Déconnexion (%s)"/>
|
<node name="signOut" value="Déconnexion (%s)"/>
|
||||||
<node name="refillAccount" value="Recréditer le compte"/>
|
<node name="refillAccount" value="Recréditer le compte"/>
|
||||||
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="Achat du livre. Veuillez patienter..."/>
|
<node name="purchaseBook" value="Achat du livre. Veuillez patienter..."/>
|
||||||
<node name="registerUser" value="Inscription en cours. Veuillez patienter..."/>
|
<node name="registerUser" value="Inscription en cours. Veuillez patienter..."/>
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Erreur interne du serveur"/>
|
<node name="internalError" value="Erreur interne du serveur"/>
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="Kijelentkezés (%s)"/>
|
<node name="signOut" value="Kijelentkezés (%s)"/>
|
||||||
<node name="refillAccount" value="Számla feltöltése"/>
|
<node name="refillAccount" value="Számla feltöltése"/>
|
||||||
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="Könyv vásárlása. Kérjük, várjon..." />
|
<node name="purchaseBook" value="Könyv vásárlása. Kérjük, várjon..." />
|
||||||
<node name="registerUser" value="Fiók létrehozása. Kérjük, várjon..." />
|
<node name="registerUser" value="Fiók létrehozása. Kérjük, várjon..." />
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Belső szerverhiba" />
|
<node name="internalError" value="Belső szerverhiba" />
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="Esci (%s)"/>
|
<node name="signOut" value="Esci (%s)"/>
|
||||||
<node name="refillAccount" value="Ricarica account"/>
|
<node name="refillAccount" value="Ricarica account"/>
|
||||||
<node name="addCustomCatalog" value="Aggiungi catalogo"/>
|
<node name="addCustomCatalog" value="Aggiungi catalogo"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="Acquisto libro. Attendere prego..." />
|
<node name="purchaseBook" value="Acquisto libro. Attendere prego..." />
|
||||||
<node name="registerUser" value="Registrazione nuovo account. Attendere prego..." />
|
<node name="registerUser" value="Registrazione nuovo account. Attendere prego..." />
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Errore Server Interno" />
|
<node name="internalError" value="Errore Server Interno" />
|
||||||
|
|
|
@ -63,6 +63,7 @@
|
||||||
<node name="signOut" value="Выйти (%s)"/>
|
<node name="signOut" value="Выйти (%s)"/>
|
||||||
<node name="refillAccount" value="Пополнить счёт"/>
|
<node name="refillAccount" value="Пополнить счёт"/>
|
||||||
<node name="addCustomCatalog" value="Добавить каталог"/>
|
<node name="addCustomCatalog" value="Добавить каталог"/>
|
||||||
|
<node name="refreshCatalogsList" value="Обновить каталоги"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -277,6 +278,7 @@
|
||||||
<node name="purchaseBook" value="Идет покупка книги. Подождите, пожалуйста..." />
|
<node name="purchaseBook" value="Идет покупка книги. Подождите, пожалуйста..." />
|
||||||
<node name="registerUser" value="Регистрируем пользователя. Подождите, пожалуйста..." />
|
<node name="registerUser" value="Регистрируем пользователя. Подождите, пожалуйста..." />
|
||||||
<node name="loadingCatalogInfo" value="Загрузка информации из каталога. Подождите, пожалуйста..." />
|
<node name="loadingCatalogInfo" value="Загрузка информации из каталога. Подождите, пожалуйста..." />
|
||||||
|
<node name="updatingCatalogsList" value="Обновляется список каталогов. Подождите, пожалуйста..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Внутренняя ошибка сервера" />
|
<node name="internalError" value="Внутренняя ошибка сервера" />
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="Đăng xuất (%s)"/>
|
<node name="signOut" value="Đăng xuất (%s)"/>
|
||||||
<node name="refillAccount" value="Tái đầy tài khoản "/>
|
<node name="refillAccount" value="Tái đầy tài khoản "/>
|
||||||
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="Mua sách. Xin chờ..." />
|
<node name="purchaseBook" value="Mua sách. Xin chờ..." />
|
||||||
<node name="registerUser" value="Đang đăng ký tài khoản. Xin chờ..." />
|
<node name="registerUser" value="Đang đăng ký tài khoản. Xin chờ..." />
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="Lỗi mạng nội bộ " />
|
<node name="internalError" value="Lỗi mạng nội bộ " />
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
<node name="signOut" value="退出 (%s)"/>
|
<node name="signOut" value="退出 (%s)"/>
|
||||||
<node name="refillAccount" toBeTranslated="true" value="Refill account"/>
|
<node name="refillAccount" toBeTranslated="true" value="Refill account"/>
|
||||||
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
<node name="addCustomCatalog" toBeTranslated="true" value="Add catalog"/>
|
||||||
|
<node name="refreshCatalogsList" toBeTranslated="true" value="Refresh catalogs"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkBookView">
|
<node name="networkBookView">
|
||||||
|
@ -278,6 +279,7 @@
|
||||||
<node name="purchaseBook" value="书籍购买中. 请等待..." />
|
<node name="purchaseBook" value="书籍购买中. 请等待..." />
|
||||||
<node name="registerUser" value="正在注册新账号,请稍等..." />
|
<node name="registerUser" value="正在注册新账号,请稍等..." />
|
||||||
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
<node name="loadingCatalogInfo" toBeTranslated="true" value="Loading catalog information. Please, wait..." />
|
||||||
|
<node name="updatingCatalogsList" toBeTranslated="true" value="Updating catalogs list. Please, wait..."/>
|
||||||
</node>
|
</node>
|
||||||
<node name="networkError">
|
<node name="networkError">
|
||||||
<node name="internalError" value="内部服务器出错" />
|
<node name="internalError" value="内部服务器出错" />
|
||||||
|
|
BIN
icons/menu/ic_menu_refresh.png
Normal file
BIN
icons/menu/ic_menu_refresh.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
|
@ -46,7 +46,7 @@ public class LibraryInitializationService extends Service {
|
||||||
final Handler handler = new Handler() {
|
final Handler handler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
if (msg.what > 0) {
|
if (msg.what > 0 && msg.obj == null) {
|
||||||
view.finishBackgroundUpdate();
|
view.finishBackgroundUpdate();
|
||||||
}
|
}
|
||||||
stopSelf();
|
stopSelf();
|
||||||
|
@ -55,11 +55,13 @@ public class LibraryInitializationService extends Service {
|
||||||
|
|
||||||
final Thread thread = new Thread(new Runnable() {
|
final Thread thread = new Thread(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
boolean result = false;
|
int code = 0;
|
||||||
|
String result = null;
|
||||||
try {
|
try {
|
||||||
result = view.runBackgroundUpdate();
|
result = view.runBackgroundUpdate(false);
|
||||||
|
code = 1;
|
||||||
} finally {
|
} finally {
|
||||||
handler.sendEmptyMessage(result ? 1 : 0);
|
handler.sendMessage(handler.obtainMessage(code, result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -165,11 +165,17 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
return menu.add(0, index, Menu.NONE, label).setIcon(iconId);
|
return menu.add(0, index, Menu.NONE, label).setIcon(iconId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static final int MENU_SEARCH = 1;
|
||||||
|
private static final int MENU_REFRESH = 2;
|
||||||
|
private static final int MENU_ADD_CATALOG = 3;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
super.onCreateOptionsMenu(menu);
|
super.onCreateOptionsMenu(menu);
|
||||||
addMenuItem(menu, 1, "networkSearch", R.drawable.ic_menu_networksearch);
|
addMenuItem(menu, MENU_SEARCH, "networkSearch", R.drawable.ic_menu_networksearch);
|
||||||
addMenuItem(menu, 2, "addCustomCatalog", android.R.drawable.ic_menu_add);
|
addMenuItem(menu, MENU_ADD_CATALOG, "addCustomCatalog", android.R.drawable.ic_menu_add);
|
||||||
|
addMenuItem(menu, MENU_REFRESH, "refreshCatalogsList", R.drawable.ic_menu_refresh);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,18 +183,21 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||||
super.onPrepareOptionsMenu(menu);
|
super.onPrepareOptionsMenu(menu);
|
||||||
final boolean searchInProgress = NetworkView.Instance().containsItemsLoadingRunnable(NetworkSearchActivity.SEARCH_RUNNABLE_KEY);
|
final boolean searchInProgress = NetworkView.Instance().containsItemsLoadingRunnable(NetworkSearchActivity.SEARCH_RUNNABLE_KEY);
|
||||||
menu.findItem(1).setEnabled(!searchInProgress);
|
menu.findItem(MENU_SEARCH).setEnabled(!searchInProgress);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case 1:
|
case MENU_SEARCH:
|
||||||
return onSearchRequested();
|
return onSearchRequested();
|
||||||
case 2:
|
case MENU_ADD_CATALOG:
|
||||||
AddCustomCatalogItemActions.addCustomCatalog(this);
|
AddCustomCatalogItemActions.addCustomCatalog(this);
|
||||||
return true;
|
return true;
|
||||||
|
case MENU_REFRESH:
|
||||||
|
refreshCatalogsList();
|
||||||
|
return true;
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -208,4 +217,34 @@ public class NetworkLibraryActivity extends NetworkBaseActivity {
|
||||||
public void onModelChanged() {
|
public void onModelChanged() {
|
||||||
getListView().invalidateViews();
|
getListView().invalidateViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void refreshCatalogsList() {
|
||||||
|
final NetworkView view = NetworkView.Instance();
|
||||||
|
|
||||||
|
final Handler handler = new Handler() {
|
||||||
|
@Override
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
if (msg.obj == null) {
|
||||||
|
view.finishBackgroundUpdate();
|
||||||
|
} else {
|
||||||
|
final ZLResource dialogResource = ZLResource.resource("dialog");
|
||||||
|
final ZLResource boxResource = dialogResource.getResource("networkError");
|
||||||
|
final ZLResource buttonResource = dialogResource.getResource("button");
|
||||||
|
new AlertDialog.Builder(NetworkLibraryActivity.this)
|
||||||
|
.setTitle(boxResource.getResource("title").getValue())
|
||||||
|
.setMessage((String) msg.obj)
|
||||||
|
.setIcon(0)
|
||||||
|
.setPositiveButton(buttonResource.getResource("ok").getValue(), null)
|
||||||
|
.create().show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
((ZLAndroidDialogManager)ZLAndroidDialogManager.Instance()).wait("updatingCatalogsList", new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
final String result = view.runBackgroundUpdate(true);
|
||||||
|
handler.sendMessage(handler.obtainMessage(0, result));
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,12 +80,12 @@ class NetworkView {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method must be called from background thread
|
// This method must be called from background thread
|
||||||
public boolean runBackgroundUpdate() {
|
public String runBackgroundUpdate(boolean clearCache) {
|
||||||
return NetworkLibrary.Instance().runBackgroundUpdate();
|
return NetworkLibrary.Instance().runBackgroundUpdate(clearCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method MUST be called from main thread
|
// This method MUST be called from main thread
|
||||||
// This method can be called only after runBackgroundUpdate method has returned true
|
// This method has effect only when runBackgroundUpdate method has returned null
|
||||||
public void finishBackgroundUpdate() {
|
public void finishBackgroundUpdate() {
|
||||||
NetworkLibrary library = NetworkLibrary.Instance();
|
NetworkLibrary library = NetworkLibrary.Instance();
|
||||||
library.finishBackgroundUpdate();
|
library.finishBackgroundUpdate();
|
||||||
|
|
|
@ -232,7 +232,7 @@ public class NetworkLibrary {
|
||||||
public String initialize() {
|
public String initialize() {
|
||||||
final LinksComparator comparator = new LinksComparator();
|
final LinksComparator comparator = new LinksComparator();
|
||||||
|
|
||||||
final String error = OPDSLinkReader.loadOPDSLinks(false, new OnNewLinkListener() {
|
final String error = OPDSLinkReader.loadOPDSLinks(OPDSLinkReader.CACHE_LOAD, new OnNewLinkListener() {
|
||||||
public void onNewLink(INetworkLink link) {
|
public void onNewLink(INetworkLink link) {
|
||||||
addLinkInternal(myLoadedLinks, link, comparator);
|
addLinkInternal(myLoadedLinks, link, comparator);
|
||||||
}
|
}
|
||||||
|
@ -295,11 +295,12 @@ public class NetworkLibrary {
|
||||||
private Object myBackgroundLock = new Object();
|
private Object myBackgroundLock = new Object();
|
||||||
|
|
||||||
// This method must be called from background thread
|
// This method must be called from background thread
|
||||||
public boolean runBackgroundUpdate() {
|
public String runBackgroundUpdate(boolean clearCache) {
|
||||||
synchronized (myBackgroundLock) {
|
synchronized (myBackgroundLock) {
|
||||||
myBackgroundLinks = new ArrayList<INetworkLink>();
|
myBackgroundLinks = new ArrayList<INetworkLink>();
|
||||||
|
|
||||||
final String error = OPDSLinkReader.loadOPDSLinks(true, new OnNewLinkListener() {
|
final int cacheMode = clearCache ? OPDSLinkReader.CACHE_CLEAR : OPDSLinkReader.CACHE_UPDATE;
|
||||||
|
final String error = OPDSLinkReader.loadOPDSLinks(cacheMode, new OnNewLinkListener() {
|
||||||
public void onNewLink(INetworkLink link) {
|
public void onNewLink(INetworkLink link) {
|
||||||
myBackgroundLinks.add(link);
|
myBackgroundLinks.add(link);
|
||||||
}
|
}
|
||||||
|
@ -309,23 +310,21 @@ public class NetworkLibrary {
|
||||||
myBackgroundLinks = null;
|
myBackgroundLinks = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myBackgroundLinks == null) {
|
if (myBackgroundLinks != null) {
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
Collections.sort(myBackgroundLinks, new LinksComparator());
|
Collections.sort(myBackgroundLinks, new LinksComparator());
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method MUST be called from main thread
|
// This method MUST be called from main thread
|
||||||
// This method can be called only after runBackgroundUpdate method has returned true
|
// This method has effect only when runBackgroundUpdate method has returned null.
|
||||||
//
|
//
|
||||||
// synchronize() method MUST be called after this method
|
// synchronize() method MUST be called after this method
|
||||||
public void finishBackgroundUpdate() {
|
public void finishBackgroundUpdate() {
|
||||||
synchronized (myBackgroundLock) {
|
synchronized (myBackgroundLock) {
|
||||||
if (myBackgroundLinks == null) {
|
if (myBackgroundLinks == null) {
|
||||||
throw new RuntimeException("Invalid state: that's impossible!!!");
|
return;
|
||||||
}
|
}
|
||||||
synchronized (myLinks) {
|
synchronized (myLinks) {
|
||||||
myLoadedLinks.clear();
|
myLoadedLinks.clear();
|
||||||
|
|
|
@ -49,8 +49,11 @@ public class OPDSLinkReader {
|
||||||
return new OPDSCustomLink(ICustomNetworkLink.INVALID_ID, siteName, null, null, null, links);
|
return new OPDSCustomLink(ICustomNetworkLink.INVALID_ID, siteName, null, null, null, links);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final int CACHE_LOAD = 0;
|
||||||
|
public static final int CACHE_UPDATE = 1;
|
||||||
|
public static final int CACHE_CLEAR = 2;
|
||||||
|
|
||||||
public static String loadOPDSLinks(boolean updateNotLoad, final NetworkLibrary.OnNewLinkListener listener) {
|
public static String loadOPDSLinks(int cacheMode, final NetworkLibrary.OnNewLinkListener listener) {
|
||||||
final File dirFile = new File(Paths.networkCacheDirectory());
|
final File dirFile = new File(Paths.networkCacheDirectory());
|
||||||
if (!dirFile.exists() && !dirFile.mkdirs()) {
|
if (!dirFile.exists() && !dirFile.mkdirs()) {
|
||||||
return NetworkErrors.errorMessage("cacheDirectoryError");
|
return NetworkErrors.errorMessage("cacheDirectoryError");
|
||||||
|
@ -64,7 +67,8 @@ public class OPDSLinkReader {
|
||||||
ATOMUpdated cacheUpdatedTime = null;
|
ATOMUpdated cacheUpdatedTime = null;
|
||||||
final File catalogsFile = new File(dirFile, fileName);
|
final File catalogsFile = new File(dirFile, fileName);
|
||||||
if (catalogsFile.exists()) {
|
if (catalogsFile.exists()) {
|
||||||
if (updateNotLoad) {
|
switch (cacheMode) {
|
||||||
|
case CACHE_UPDATE:
|
||||||
try {
|
try {
|
||||||
final OPDSLinkXMLReader reader = new OPDSLinkXMLReader();
|
final OPDSLinkXMLReader reader = new OPDSLinkXMLReader();
|
||||||
reader.read(new FileInputStream(catalogsFile));
|
reader.read(new FileInputStream(catalogsFile));
|
||||||
|
@ -77,16 +81,23 @@ public class OPDSLinkReader {
|
||||||
final long valid = 7 * 24 * 60 * 60 * 1000; // one week in milliseconds; FIXME: hardcoded const
|
final long valid = 7 * 24 * 60 * 60 * 1000; // one week in milliseconds; FIXME: hardcoded const
|
||||||
if (diff >= 0 && diff <= valid) {
|
if (diff >= 0 && diff <= valid) {
|
||||||
goodCache = true;
|
goodCache = true;
|
||||||
} else {
|
break;
|
||||||
|
}
|
||||||
|
/* FALLTHROUGH */
|
||||||
|
case CACHE_CLEAR:
|
||||||
oldCache = new File(dirFile, "_" + fileName);
|
oldCache = new File(dirFile, "_" + fileName);
|
||||||
oldCache.delete();
|
oldCache.delete();
|
||||||
if (!catalogsFile.renameTo(oldCache)) {
|
if (!catalogsFile.renameTo(oldCache)) {
|
||||||
catalogsFile.delete();
|
catalogsFile.delete();
|
||||||
oldCache = null;
|
oldCache = null;
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
} else {
|
case CACHE_LOAD:
|
||||||
goodCache = true;
|
goodCache = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid cacheMode value (" + cacheMode
|
||||||
|
+ ") in OPDSLinkReader.loadOPDSLinks method");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue