1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-04 10:19:33 +02:00

code simplification

This commit is contained in:
Nikolay Pultsin 2011-06-26 14:35:38 +01:00
parent 33a95947a1
commit 0916840fce
3 changed files with 22 additions and 23 deletions

View file

@ -19,6 +19,8 @@
package org.geometerplus.android.fbreader.network; package org.geometerplus.android.fbreader.network;
import java.util.*;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
@ -26,8 +28,7 @@ import android.database.sqlite.SQLiteStatement;
import org.geometerplus.zlibrary.ui.android.library.ZLAndroidApplication; import org.geometerplus.zlibrary.ui.android.library.ZLAndroidApplication;
import org.geometerplus.fbreader.network.ICustomNetworkLink; import org.geometerplus.fbreader.network.*;
import org.geometerplus.fbreader.network.NetworkDatabase;
import org.geometerplus.fbreader.network.urlInfo.*; import org.geometerplus.fbreader.network.urlInfo.*;
import org.geometerplus.android.util.SQLiteUtil; import org.geometerplus.android.util.SQLiteUtil;
@ -77,7 +78,9 @@ class SQLiteNetworkDatabase extends NetworkDatabase {
} }
@Override @Override
protected void loadCustomLinks(ICustomLinksHandler handler) { protected List<INetworkLink> loadLinks() {
final List<INetworkLink> links = new LinkedList<INetworkLink>();
final Cursor cursor = myDatabase.rawQuery("SELECT link_id,title,site_name,summary FROM Links", null); final Cursor cursor = myDatabase.rawQuery("SELECT link_id,title,site_name,summary FROM Links", null);
final UrlInfoCollection<UrlInfoWithDate> linksMap = new UrlInfoCollection<UrlInfoWithDate>(); final UrlInfoCollection<UrlInfoWithDate> linksMap = new UrlInfoCollection<UrlInfoWithDate>();
while (cursor.moveToNext()) { while (cursor.moveToNext()) {
@ -102,9 +105,14 @@ class SQLiteNetworkDatabase extends NetworkDatabase {
} }
linksCursor.close(); linksCursor.close();
handler.handleCustomLinkData(id, siteName, title, summary, linksMap); final INetworkLink l = createLink(id, siteName, title, summary, linksMap);
if (l != null) {
links.add(l);
}
} }
cursor.close(); cursor.close();
return links;
} }
private SQLiteStatement myInsertCustomLinkStatement; private SQLiteStatement myInsertCustomLinkStatement;

View file

@ -19,7 +19,10 @@
package org.geometerplus.fbreader.network; package org.geometerplus.fbreader.network;
import java.util.List;
import org.geometerplus.fbreader.network.urlInfo.*; import org.geometerplus.fbreader.network.urlInfo.*;
import org.geometerplus.fbreader.network.opds.OPDSCustomLink;
public abstract class NetworkDatabase { public abstract class NetworkDatabase {
private static NetworkDatabase ourInstance; private static NetworkDatabase ourInstance;
@ -34,11 +37,14 @@ public abstract class NetworkDatabase {
protected abstract void executeAsATransaction(Runnable actions); protected abstract void executeAsATransaction(Runnable actions);
public interface ICustomLinksHandler { protected INetworkLink createLink(int id, String siteName, String title, String summary, UrlInfoCollection<UrlInfoWithDate> infos) {
void handleCustomLinkData(int id, String siteName, String title, String summary, UrlInfoCollection<UrlInfoWithDate> infos); if (siteName == null || title == null || infos.getInfo(UrlInfo.Type.Catalog) == null) {
return null;
}
return new OPDSCustomLink(id, siteName, title, summary, infos);
} }
protected abstract void loadCustomLinks(ICustomLinksHandler handler); protected abstract List<INetworkLink> loadLinks();
protected abstract void saveCustomLink(ICustomNetworkLink link); protected abstract void saveCustomLink(ICustomNetworkLink link);
protected abstract void deleteCustomLink(ICustomNetworkLink link); protected abstract void deleteCustomLink(ICustomNetworkLink link);
} }

View file

@ -31,7 +31,6 @@ import org.geometerplus.zlibrary.core.language.ZLLanguageUtil;
import org.geometerplus.fbreader.tree.FBTree; import org.geometerplus.fbreader.tree.FBTree;
import org.geometerplus.fbreader.network.tree.*; import org.geometerplus.fbreader.network.tree.*;
import org.geometerplus.fbreader.network.opds.OPDSCustomLink;
import org.geometerplus.fbreader.network.opds.OPDSLinkReader; import org.geometerplus.fbreader.network.opds.OPDSLinkReader;
import org.geometerplus.fbreader.network.urlInfo.*; import org.geometerplus.fbreader.network.urlInfo.*;
@ -180,21 +179,7 @@ public class NetworkLibrary {
final NetworkDatabase db = NetworkDatabase.Instance(); final NetworkDatabase db = NetworkDatabase.Instance();
if (db != null) { if (db != null) {
db.loadCustomLinks( myLinks.addAll(db.loadLinks());
new NetworkDatabase.ICustomLinksHandler() {
public void handleCustomLinkData(int id, String siteName,
String title, String summary, UrlInfoCollection<UrlInfoWithDate> infos) {
if (title != null &&
siteName != null &&
infos.getInfo(UrlInfo.Type.Catalog) != null) {
final ICustomNetworkLink link = new OPDSCustomLink(
id, siteName, title, summary, infos
);
myLinks.add(link);
}
}
}
);
} }
myIsAlreadyInitialized = true; myIsAlreadyInitialized = true;