From 9a8e964e8f10c656b81d17eb694ca6406807b298 Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Mon, 22 Apr 2013 10:46:37 +0200 Subject: [PATCH] code simplification --- .../fbreader/library/LibraryActivity.java | 2 +- .../libraryService/BookCollectionShadow.java | 4 ++-- .../libraryService/LibraryService.java | 2 +- .../fbreader/book/BookCollection.java | 18 +++++------------- .../fbreader/book/IBookCollection.java | 2 +- src/org/geometerplus/fbreader/book/Query.java | 6 +++--- .../fbreader/library/FavoritesTree.java | 7 +++---- 7 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/library/LibraryActivity.java b/src/org/geometerplus/android/fbreader/library/LibraryActivity.java index cf85fecd6..450159b5e 100644 --- a/src/org/geometerplus/android/fbreader/library/LibraryActivity.java +++ b/src/org/geometerplus/android/fbreader/library/LibraryActivity.java @@ -339,7 +339,7 @@ public class LibraryActivity extends TreeActivity implements MenuIt if (oldSearchResults != null && pattern.equals(oldSearchResults.Pattern)) { onSearchEvent(true); - } else if (myRootTree.Collection.hasBooks(new Query(new Filter.ByPattern(pattern), 1))) { + } else if (myRootTree.Collection.hasBooks(new Filter.ByPattern(pattern))) { if (oldSearchResults != null) { oldSearchResults.removeSelf(); } diff --git a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java index 335d95a9a..612e7a70d 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java +++ b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java @@ -144,12 +144,12 @@ public class BookCollectionShadow extends AbstractBookCollection implements Serv } } - public synchronized boolean hasBooks(Query query) { + public synchronized boolean hasBooks(Filter filter) { if (myInterface == null) { return false; } try { - return myInterface.hasBooks(SerializerUtil.serialize(query)); + return myInterface.hasBooks(SerializerUtil.serialize(new Query(filter, 1))); } catch (RemoteException e) { return false; } diff --git a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java index 1b4d49474..7f9e75029 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java +++ b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java @@ -143,7 +143,7 @@ public class LibraryService extends Service { } public boolean hasBooks(String query) { - return myCollection.hasBooks(SerializerUtil.deserializeQuery(query)); + return myCollection.hasBooks(SerializerUtil.deserializeQuery(query).Filter); } public List recentBooks() { diff --git a/src/org/geometerplus/fbreader/book/BookCollection.java b/src/org/geometerplus/fbreader/book/BookCollection.java index e2c74facb..79f5ae7f5 100644 --- a/src/org/geometerplus/fbreader/book/BookCollection.java +++ b/src/org/geometerplus/fbreader/book/BookCollection.java @@ -230,25 +230,17 @@ public class BookCollection extends AbstractBookCollection { } } - public boolean hasBooks(Query query) { + public boolean hasBooks(Filter filter) { final List allBooks; synchronized (myBooksByFile) { allBooks = new ArrayList(myBooksByFile.values()); } - final int start = query.Page * query.Limit; - if (query.Filter instanceof Filter.Empty) { - return allBooks.size() > 0; - } else { - int count = 0; - final List filtered = new ArrayList(query.Limit); - for (Book b : allBooks) { - if (query.Filter.matches(b) && count >= start) { - return true; - } - ++count; + for (Book b : allBooks) { + if (filter.matches(b)) { + return true; } - return false; } + return false; } public List titles(Query query) { diff --git a/src/org/geometerplus/fbreader/book/IBookCollection.java b/src/org/geometerplus/fbreader/book/IBookCollection.java index b7f4490a7..5efda74cf 100644 --- a/src/org/geometerplus/fbreader/book/IBookCollection.java +++ b/src/org/geometerplus/fbreader/book/IBookCollection.java @@ -52,7 +52,7 @@ public interface IBookCollection { int size(); List books(Query query); - boolean hasBooks(Query query); + boolean hasBooks(Filter filter); List titles(Query query); List recentBooks(); diff --git a/src/org/geometerplus/fbreader/book/Query.java b/src/org/geometerplus/fbreader/book/Query.java index 07ad950ba..25709c16a 100644 --- a/src/org/geometerplus/fbreader/book/Query.java +++ b/src/org/geometerplus/fbreader/book/Query.java @@ -20,9 +20,9 @@ package org.geometerplus.fbreader.book; public class Query { - final Filter Filter; - final int Limit; - final int Page; + public final Filter Filter; + public final int Limit; + public final int Page; public Query(Filter filter, int limit) { this(filter, limit, 0); diff --git a/src/org/geometerplus/fbreader/library/FavoritesTree.java b/src/org/geometerplus/fbreader/library/FavoritesTree.java index 7701400d4..76dad81d5 100644 --- a/src/org/geometerplus/fbreader/library/FavoritesTree.java +++ b/src/org/geometerplus/fbreader/library/FavoritesTree.java @@ -58,10 +58,9 @@ public class FavoritesTree extends FilteredTree { @Override public Status getOpeningStatus() { - if (!Collection.labels().contains(Book.FAVORITE_LABEL)) { - return Status.CANNOT_OPEN; - } - return Status.ALWAYS_RELOAD_BEFORE_OPENING; + return Collection.hasBooks(new Filter.ByLabel(Book.FAVORITE_LABEL)) + ? Status.ALWAYS_RELOAD_BEFORE_OPENING + : Status.CANNOT_OPEN; } @Override