From 3d7fd1b52ad3566730ca36ea48b6f7a1eee7d83c Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Sat, 9 Feb 2013 20:00:39 +0400 Subject: [PATCH] library tree summaries --- .../android/fbreader/BookmarksActivity.java | 4 +- .../libraryService/BookCollectionShadow.java | 44 +++++++++++ .../libraryService/LibraryInterface.aidl | 4 + .../libraryService/LibraryService.java | 16 ++++ src/org/geometerplus/fbreader/book/Book.java | 18 ++--- .../fbreader/book/BookCollection.java | 75 +++++++++++++++++++ .../fbreader/book/FileInfoSet.java | 4 +- .../fbreader/book/IBookCollection.java | 4 + .../fbreader/library/AuthorTree.java | 7 ++ .../fbreader/library/BookTree.java | 5 ++ .../fbreader/library/RootTree.java | 5 ++ .../fbreader/library/SeriesTree.java | 7 ++ .../fbreader/library/TagTree.java | 7 ++ .../fbreader/library/TitleTree.java | 27 ++++--- .../fbreader/network/NetworkTree.java | 16 ++++ .../fbreader/network/opds/OPDSBasketItem.java | 4 +- .../network/opds/OPDSCustomNetworkLink.java | 8 +- .../network/opds/OPDSNetworkLink.java | 1 - .../network/opds/URLRewritingRule.java | 4 +- .../fbreader/network/tree/RootTree.java | 5 ++ .../fbreader/network/urlInfo/UrlInfo.java | 6 +- .../network/urlInfo/UrlInfoWithDate.java | 10 +-- .../geometerplus/fbreader/tree/FBTree.java | 21 +----- .../zlibrary/core/money/Money.java | 6 +- .../core/network/ZLNetworkManager.java | 26 +++---- .../core/options/ZLStringListOption.java | 8 +- .../zlibrary/core/util/MimeType.java | 8 +- .../util/{ZLMiscUtil.java => MiscUtil.java} | 6 +- 28 files changed, 272 insertions(+), 84 deletions(-) rename src/org/geometerplus/zlibrary/core/util/{ZLMiscUtil.java => MiscUtil.java} (93%) diff --git a/src/org/geometerplus/android/fbreader/BookmarksActivity.java b/src/org/geometerplus/android/fbreader/BookmarksActivity.java index f765182b9..0cbc10167 100644 --- a/src/org/geometerplus/android/fbreader/BookmarksActivity.java +++ b/src/org/geometerplus/android/fbreader/BookmarksActivity.java @@ -27,7 +27,7 @@ import android.view.*; import android.widget.*; import android.content.*; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.zlibrary.core.resources.ZLResource; import org.geometerplus.zlibrary.core.options.ZLStringOption; @@ -120,7 +120,7 @@ public class BookmarksActivity extends TabActivity implements MenuItem.OnMenuIte final LinkedList bookmarks = new LinkedList(); pattern = pattern.toLowerCase(); for (Bookmark b : myAllBooksBookmarks) { - if (ZLMiscUtil.matchesIgnoreCase(b.getText(), pattern)) { + if (MiscUtil.matchesIgnoreCase(b.getText(), pattern)) { bookmarks.add(b); } } diff --git a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java index 67f8da513..8a9f1afe7 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java +++ b/src/org/geometerplus/android/fbreader/libraryService/BookCollectionShadow.java @@ -299,6 +299,50 @@ public class BookCollectionShadow extends AbstractBookCollection implements Serv } } + public synchronized List titlesForAuthor(Author author, int limit) { + if (myInterface == null) { + return Collections.emptyList(); + } + try { + return myInterface.titlesForAuthor(Util.authorToString(author), limit); + } catch (RemoteException e) { + return Collections.emptyList(); + } + } + + public synchronized List titlesForSeries(String series, int limit) { + if (myInterface == null) { + return Collections.emptyList(); + } + try { + return myInterface.titlesForSeries(series, limit); + } catch (RemoteException e) { + return Collections.emptyList(); + } + } + + public synchronized List titlesForTag(Tag tag, int limit) { + if (myInterface == null) { + return Collections.emptyList(); + } + try { + return myInterface.titlesForTag(Util.tagToString(tag), limit); + } catch (RemoteException e) { + return Collections.emptyList(); + } + } + + public synchronized List titlesForTitlePrefix(String prefix, int limit) { + if (myInterface == null) { + return Collections.emptyList(); + } + try { + return myInterface.titlesForTitlePrefix(prefix, limit); + } catch (RemoteException e) { + return Collections.emptyList(); + } + } + public synchronized boolean saveBook(Book book, boolean force) { if (myInterface == null) { return false; diff --git a/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl b/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl index 0f870002c..24f1d2375 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl +++ b/src/org/geometerplus/android/fbreader/libraryService/LibraryInterface.aidl @@ -26,6 +26,10 @@ interface LibraryInterface { List series(); List tags(); List titles(); + List titlesForAuthor(in String author, int limit); + List titlesForSeries(in String series, int limit); + List titlesForTag(in String tag, int limit); + List titlesForTitlePrefix(in String prefix, int limit); boolean saveBook(in String book, in boolean force); void removeBook(in String book, in boolean deleteFromDisk); diff --git a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java index 6f1ad649b..abd1c4d4a 100644 --- a/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java +++ b/src/org/geometerplus/android/fbreader/libraryService/LibraryService.java @@ -189,6 +189,22 @@ public class LibraryService extends Service { return myCollection.titles(); } + public List titlesForAuthor(String author, int limit) { + return myCollection.titlesForAuthor(Util.stringToAuthor(author), limit); + } + + public List titlesForSeries(String series, int limit) { + return myCollection.titlesForSeries(series, limit); + } + + public List titlesForTag(String tag, int limit) { + return myCollection.titlesForTag(Util.stringToTag(tag), limit); + } + + public List titlesForTitlePrefix(String prefix, int limit) { + return myCollection.titlesForTitlePrefix(prefix, limit); + } + public boolean saveBook(String book, boolean force) { return myCollection.saveBook(SerializerUtil.deserializeBook(book), force); } diff --git a/src/org/geometerplus/fbreader/book/Book.java b/src/org/geometerplus/fbreader/book/Book.java index fb9c4f815..d18c0c329 100644 --- a/src/org/geometerplus/fbreader/book/Book.java +++ b/src/org/geometerplus/fbreader/book/Book.java @@ -27,9 +27,9 @@ import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; import org.geometerplus.zlibrary.core.filesystem.*; import org.geometerplus.zlibrary.core.image.ZLImage; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.zlibrary.text.view.ZLTextPosition; @@ -288,7 +288,7 @@ public class Book { } public void setTitle(String title) { - if (!ZLMiscUtil.equals(myTitle, title)) { + if (!MiscUtil.equals(myTitle, title)) { myTitle = title; myIsSaved = false; } @@ -326,7 +326,7 @@ public class Book { } public void setLanguage(String language) { - if (!ZLMiscUtil.equals(myLanguage, language)) { + if (!MiscUtil.equals(myLanguage, language)) { myLanguage = language; myIsSaved = false; } @@ -350,7 +350,7 @@ public class Book { } public void setEncoding(String encoding) { - if (!ZLMiscUtil.equals(myEncoding, encoding)) { + if (!MiscUtil.equals(myEncoding, encoding)) { myEncoding = encoding; myIsSaved = false; } @@ -391,27 +391,27 @@ public class Book { } public boolean matches(String pattern) { - if (myTitle != null && ZLMiscUtil.matchesIgnoreCase(myTitle, pattern)) { + if (myTitle != null && MiscUtil.matchesIgnoreCase(myTitle, pattern)) { return true; } - if (mySeriesInfo != null && ZLMiscUtil.matchesIgnoreCase(mySeriesInfo.Title, pattern)) { + if (mySeriesInfo != null && MiscUtil.matchesIgnoreCase(mySeriesInfo.Title, pattern)) { return true; } if (myAuthors != null) { for (Author author : myAuthors) { - if (ZLMiscUtil.matchesIgnoreCase(author.DisplayName, pattern)) { + if (MiscUtil.matchesIgnoreCase(author.DisplayName, pattern)) { return true; } } } if (myTags != null) { for (Tag tag : myTags) { - if (ZLMiscUtil.matchesIgnoreCase(tag.Name, pattern)) { + if (MiscUtil.matchesIgnoreCase(tag.Name, pattern)) { return true; } } } - if (ZLMiscUtil.matchesIgnoreCase(File.getLongName(), pattern)) { + if (MiscUtil.matchesIgnoreCase(File.getLongName(), pattern)) { return true; } return false; diff --git a/src/org/geometerplus/fbreader/book/BookCollection.java b/src/org/geometerplus/fbreader/book/BookCollection.java index b224bd0cb..bbf6594a6 100644 --- a/src/org/geometerplus/fbreader/book/BookCollection.java +++ b/src/org/geometerplus/fbreader/book/BookCollection.java @@ -344,6 +344,81 @@ public class BookCollection extends AbstractBookCollection { } } + public List titlesForAuthor(Author author, int limit) { + if (limit <= 0) { + return Collections.emptyList(); + } + final ArrayList titles = new ArrayList(limit); + final boolean isNull = Author.NULL.equals(author); + synchronized (myBooksByFile) { + for (Book b : myBooksByFile.values()) { + if (isNull ? b.authors().isEmpty() : b.authors().contains(author)) { + titles.add(b.getTitle()); + if (--limit == 0) { + break; + } + } + } + } + return titles; + } + + public List titlesForSeries(String series, int limit) { + if (limit <= 0) { + return Collections.emptyList(); + } + final ArrayList titles = new ArrayList(limit); + synchronized (myBooksByFile) { + for (Book b : myBooksByFile.values()) { + final SeriesInfo info = b.getSeriesInfo(); + if (info != null && series.equals(info.Title)) { + titles.add(b.getTitle()); + if (--limit == 0) { + break; + } + } + } + } + return titles; + } + + public List titlesForTag(Tag tag, int limit) { + if (limit <= 0) { + return Collections.emptyList(); + } + final ArrayList titles = new ArrayList(limit); + final boolean isNull = Tag.NULL.equals(tag); + synchronized (myBooksByFile) { + for (Book b : myBooksByFile.values()) { + if (isNull ? b.tags().isEmpty() : b.tags().contains(tag)) { + titles.add(b.getTitle()); + if (--limit == 0) { + break; + } + } + } + } + return titles; + } + + public List titlesForTitlePrefix(String prefix, int limit) { + if (limit <= 0) { + return Collections.emptyList(); + } + final ArrayList titles = new ArrayList(limit); + synchronized (myBooksByFile) { + for (Book b : myBooksByFile.values()) { + if (prefix.equals(TitleUtil.firstTitleLetter(b))) { + titles.add(b.getTitle()); + if (--limit == 0) { + break; + } + } + } + } + return titles; + } + public Book getRecentBook(int index) { List recentIds = myDatabase.loadRecentBookIds(); return recentIds.size() > index ? getBookById(recentIds.get(index)) : null; diff --git a/src/org/geometerplus/fbreader/book/FileInfoSet.java b/src/org/geometerplus/fbreader/book/FileInfoSet.java index f0221c182..cd70f8709 100644 --- a/src/org/geometerplus/fbreader/book/FileInfoSet.java +++ b/src/org/geometerplus/fbreader/book/FileInfoSet.java @@ -21,7 +21,7 @@ package org.geometerplus.fbreader.book; import java.util.*; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.zlibrary.core.filesystem.*; public final class FileInfoSet { @@ -48,7 +48,7 @@ public final class FileInfoSet { return false; } Pair p = (Pair)o; - return (myName.equals(p.myName)) && ZLMiscUtil.equals(myParent, p.myParent); + return myName.equals(p.myName) && MiscUtil.equals(myParent, p.myParent); } } diff --git a/src/org/geometerplus/fbreader/book/IBookCollection.java b/src/org/geometerplus/fbreader/book/IBookCollection.java index 2fd85fd6e..82d40fb5b 100644 --- a/src/org/geometerplus/fbreader/book/IBookCollection.java +++ b/src/org/geometerplus/fbreader/book/IBookCollection.java @@ -67,6 +67,10 @@ public interface IBookCollection { List series(); List tags(); List titles(); + List titlesForAuthor(Author author, int limit); + List titlesForSeries(String series, int limit); + List titlesForTag(Tag tag, int limit); + List titlesForTitlePrefix(String prefix, int limit); boolean saveBook(Book book, boolean force); void removeBook(Book book, boolean deleteFromDisk); diff --git a/src/org/geometerplus/fbreader/library/AuthorTree.java b/src/org/geometerplus/fbreader/library/AuthorTree.java index 7cfffba6c..af67f99ab 100644 --- a/src/org/geometerplus/fbreader/library/AuthorTree.java +++ b/src/org/geometerplus/fbreader/library/AuthorTree.java @@ -22,6 +22,8 @@ package org.geometerplus.fbreader.library; import java.util.Collections; import java.util.List; +import org.geometerplus.zlibrary.core.util.MiscUtil; + import org.geometerplus.fbreader.book.*; public class AuthorTree extends LibraryTree { @@ -43,6 +45,11 @@ public class AuthorTree extends LibraryTree { ? Library.resource().getResource("unknownAuthor").getValue() : Author.DisplayName; } + @Override + public String getSummary() { + return MiscUtil.join(Collection.titlesForAuthor(Author, 5), ", "); + } + @Override protected String getStringId() { return "@AuthorTree" + getSortKey(); diff --git a/src/org/geometerplus/fbreader/library/BookTree.java b/src/org/geometerplus/fbreader/library/BookTree.java index 3d54a2a6b..3fc308c6e 100644 --- a/src/org/geometerplus/fbreader/library/BookTree.java +++ b/src/org/geometerplus/fbreader/library/BookTree.java @@ -47,6 +47,11 @@ public class BookTree extends LibraryTree { return Book.getTitle(); } + @Override + public String getSummary() { + return ""; + } + @Override public Book getBook() { return Book; diff --git a/src/org/geometerplus/fbreader/library/RootTree.java b/src/org/geometerplus/fbreader/library/RootTree.java index a5387035d..116bbdd25 100644 --- a/src/org/geometerplus/fbreader/library/RootTree.java +++ b/src/org/geometerplus/fbreader/library/RootTree.java @@ -31,6 +31,11 @@ class RootTree extends LibraryTree { return Library.resource().getValue(); } + @Override + public String getSummary() { + return Library.resource().getValue(); + } + @Override protected String getStringId() { return "@FBReaderLibraryRoot"; diff --git a/src/org/geometerplus/fbreader/library/SeriesTree.java b/src/org/geometerplus/fbreader/library/SeriesTree.java index f19b02e84..0fc14db11 100644 --- a/src/org/geometerplus/fbreader/library/SeriesTree.java +++ b/src/org/geometerplus/fbreader/library/SeriesTree.java @@ -21,6 +21,8 @@ package org.geometerplus.fbreader.library; import java.util.Collections; +import org.geometerplus.zlibrary.core.util.MiscUtil; + import org.geometerplus.fbreader.book.*; public final class SeriesTree extends LibraryTree { @@ -41,6 +43,11 @@ public final class SeriesTree extends LibraryTree { return Series; } + @Override + public String getSummary() { + return MiscUtil.join(Collection.titlesForSeries(Series, 5), ", "); + } + @Override protected String getStringId() { return "@SeriesTree " + getName(); diff --git a/src/org/geometerplus/fbreader/library/TagTree.java b/src/org/geometerplus/fbreader/library/TagTree.java index e3d69f01c..4f90b298e 100644 --- a/src/org/geometerplus/fbreader/library/TagTree.java +++ b/src/org/geometerplus/fbreader/library/TagTree.java @@ -21,6 +21,8 @@ package org.geometerplus.fbreader.library; import java.util.List; +import org.geometerplus.zlibrary.core.util.MiscUtil; + import org.geometerplus.fbreader.book.*; public final class TagTree extends LibraryTree { @@ -42,6 +44,11 @@ public final class TagTree extends LibraryTree { ? Library.resource().getResource("booksWithNoTags").getValue() : Tag.Name; } + @Override + public String getSummary() { + return MiscUtil.join(Collection.titlesForTag(Tag, 5), ", "); + } + @Override protected String getStringId() { return "@TagTree " + getName(); diff --git a/src/org/geometerplus/fbreader/library/TitleTree.java b/src/org/geometerplus/fbreader/library/TitleTree.java index dbf2136b3..acfc68ce9 100644 --- a/src/org/geometerplus/fbreader/library/TitleTree.java +++ b/src/org/geometerplus/fbreader/library/TitleTree.java @@ -19,34 +19,41 @@ package org.geometerplus.fbreader.library; +import org.geometerplus.zlibrary.core.util.MiscUtil; + import org.geometerplus.fbreader.book.*; public final class TitleTree extends LibraryTree { - public final String Title; + public final String Prefix; - TitleTree(IBookCollection collection, String title) { + TitleTree(IBookCollection collection, String prefix) { super(collection); - Title = title; + Prefix = prefix; } - TitleTree(LibraryTree parent, String title, int position) { + TitleTree(LibraryTree parent, String prefix, int position) { super(parent, position); - Title = title; + Prefix = prefix; } @Override public String getName() { - return Title; + return Prefix; + } + + @Override + public String getSummary() { + return MiscUtil.join(Collection.titlesForTitlePrefix(Prefix, 5), ", "); } @Override protected String getStringId() { - return "@TitleTree " + getName(); + return "@PrefixTree " + getName(); } @Override public boolean containsBook(Book book) { - return Title.equals(TitleUtil.firstTitleLetter(book)); + return Prefix.equals(TitleUtil.firstTitleLetter(book)); } @Override @@ -58,7 +65,7 @@ public final class TitleTree extends LibraryTree { public void waitForOpening() { clear(); - for (Book b : Collection.booksForTitlePrefix(Title)) { + for (Book b : Collection.booksForTitlePrefix(Prefix)) { createBookWithAuthorsSubTree(b); } } @@ -68,7 +75,7 @@ public final class TitleTree extends LibraryTree { switch (event) { case Added: return - Title.equals(TitleUtil.firstTitleLetter(book)) && + Prefix.equals(TitleUtil.firstTitleLetter(book)) && createBookWithAuthorsSubTree(book); case Removed: // TODO: implement diff --git a/src/org/geometerplus/fbreader/network/NetworkTree.java b/src/org/geometerplus/fbreader/network/NetworkTree.java index eaf8af3b8..601513ad2 100644 --- a/src/org/geometerplus/fbreader/network/NetworkTree.java +++ b/src/org/geometerplus/fbreader/network/NetworkTree.java @@ -39,6 +39,22 @@ public abstract class NetworkTree extends FBTree { super(parent, position); } + @Override + public String getSummary() { + StringBuilder builder = new StringBuilder(); + int count = 0; + for (FBTree subtree : subTrees()) { + if (count++ > 0) { + builder.append(", "); + } + builder.append(subtree.getName()); + if (count == 5) { + break; + } + } + return builder.toString(); + } + public INetworkLink getLink() { final NetworkTree parent = (NetworkTree)Parent; return parent != null ? parent.getLink() : null; diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSBasketItem.java b/src/org/geometerplus/fbreader/network/opds/OPDSBasketItem.java index c8c62c072..6e2c5d3e9 100644 --- a/src/org/geometerplus/fbreader/network/opds/OPDSBasketItem.java +++ b/src/org/geometerplus/fbreader/network/opds/OPDSBasketItem.java @@ -23,7 +23,7 @@ import java.util.List; import org.geometerplus.zlibrary.core.network.ZLNetworkException; import org.geometerplus.zlibrary.core.util.MimeType; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.fbreader.network.BasketItem; import org.geometerplus.fbreader.network.urlInfo.*; @@ -54,7 +54,7 @@ class OPDSBasketItem extends BasketItem { if (url == null) { return; } - url = url.replace("{ids}", ZLMiscUtil.listToString(ids, ",")); + url = url.replace("{ids}", MiscUtil.join(ids, ",")); final OPDSCatalogItem.State state = opdsLink.createOperationData(loader); doLoadChildren(state, opdsLink.createNetworkData(url, MimeType.APP_ATOM_XML, state)); diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSCustomNetworkLink.java b/src/org/geometerplus/fbreader/network/opds/OPDSCustomNetworkLink.java index fc05b6137..1dcd4fe66 100644 --- a/src/org/geometerplus/fbreader/network/opds/OPDSCustomNetworkLink.java +++ b/src/org/geometerplus/fbreader/network/opds/OPDSCustomNetworkLink.java @@ -25,7 +25,7 @@ import java.util.*; import org.geometerplus.zlibrary.core.network.*; import org.geometerplus.zlibrary.core.util.MimeType; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.fbreader.network.ICustomNetworkLink; import org.geometerplus.fbreader.network.NetworkException; @@ -60,17 +60,17 @@ public class OPDSCustomNetworkLink extends OPDSNetworkLink implements ICustomNet } public final void setSiteName(String name) { - myHasChanges = myHasChanges || !ZLMiscUtil.equals(mySiteName, name); + myHasChanges = myHasChanges || !MiscUtil.equals(mySiteName, name); mySiteName = name; } public final void setSummary(String summary) { - myHasChanges = myHasChanges || !ZLMiscUtil.equals(mySummary, summary); + myHasChanges = myHasChanges || !MiscUtil.equals(mySummary, summary); mySummary = summary; } public final void setTitle(String title) { - myHasChanges = myHasChanges || !ZLMiscUtil.equals(myTitle, title); + myHasChanges = myHasChanges || !MiscUtil.equals(myTitle, title); myTitle = title; } diff --git a/src/org/geometerplus/fbreader/network/opds/OPDSNetworkLink.java b/src/org/geometerplus/fbreader/network/opds/OPDSNetworkLink.java index f33e5bb98..f2a260edf 100644 --- a/src/org/geometerplus/fbreader/network/opds/OPDSNetworkLink.java +++ b/src/org/geometerplus/fbreader/network/opds/OPDSNetworkLink.java @@ -28,7 +28,6 @@ import java.io.UnsupportedEncodingException; import org.geometerplus.zlibrary.core.network.ZLNetworkException; import org.geometerplus.zlibrary.core.network.ZLNetworkRequest; import org.geometerplus.zlibrary.core.util.MimeType; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; import org.geometerplus.fbreader.network.*; import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; diff --git a/src/org/geometerplus/fbreader/network/opds/URLRewritingRule.java b/src/org/geometerplus/fbreader/network/opds/URLRewritingRule.java index fc5697562..038d431f0 100644 --- a/src/org/geometerplus/fbreader/network/opds/URLRewritingRule.java +++ b/src/org/geometerplus/fbreader/network/opds/URLRewritingRule.java @@ -110,8 +110,8 @@ class URLRewritingRule { final URLRewritingRule rule = (URLRewritingRule) o; if (Type != rule.Type || Apply != rule.Apply - || !ZLMiscUtil.equals(Name, rule.Name) - || !ZLMiscUtil.equals(Value, rule.Value)) { + || !MiscUtil.equals(Name, rule.Name) + || !MiscUtil.equals(Value, rule.Value)) { return false; } return true; diff --git a/src/org/geometerplus/fbreader/network/tree/RootTree.java b/src/org/geometerplus/fbreader/network/tree/RootTree.java index 40f064759..cec497e9f 100644 --- a/src/org/geometerplus/fbreader/network/tree/RootTree.java +++ b/src/org/geometerplus/fbreader/network/tree/RootTree.java @@ -36,6 +36,11 @@ public final class RootTree extends NetworkTree { return NetworkLibrary.resource().getValue(); } + @Override + public String getSummary() { + return NetworkLibrary.resource().getValue(); + } + @Override protected String getStringId() { return myId; diff --git a/src/org/geometerplus/fbreader/network/urlInfo/UrlInfo.java b/src/org/geometerplus/fbreader/network/urlInfo/UrlInfo.java index 24f787f33..78fe7af81 100644 --- a/src/org/geometerplus/fbreader/network/urlInfo/UrlInfo.java +++ b/src/org/geometerplus/fbreader/network/urlInfo/UrlInfo.java @@ -21,7 +21,7 @@ package org.geometerplus.fbreader.network.urlInfo; import java.io.Serializable; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.zlibrary.core.util.MimeType; public class UrlInfo implements Serializable { @@ -71,11 +71,11 @@ public class UrlInfo implements Serializable { return false; } final UrlInfo info = (UrlInfo)o; - return InfoType == info.InfoType && ZLMiscUtil.equals(Url, info.Url); + return InfoType == info.InfoType && MiscUtil.equals(Url, info.Url); } @Override public int hashCode() { - return InfoType.hashCode() + ZLMiscUtil.hashCode(Url); + return InfoType.hashCode() + MiscUtil.hashCode(Url); } } diff --git a/src/org/geometerplus/fbreader/network/urlInfo/UrlInfoWithDate.java b/src/org/geometerplus/fbreader/network/urlInfo/UrlInfoWithDate.java index 80b0a6d5f..da01ccd0f 100644 --- a/src/org/geometerplus/fbreader/network/urlInfo/UrlInfoWithDate.java +++ b/src/org/geometerplus/fbreader/network/urlInfo/UrlInfoWithDate.java @@ -22,7 +22,7 @@ package org.geometerplus.fbreader.network.urlInfo; import java.util.Date; import org.geometerplus.zlibrary.core.util.MimeType; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; public final class UrlInfoWithDate extends UrlInfo { private static final long serialVersionUID = -896768978957787222L; @@ -52,13 +52,13 @@ public final class UrlInfoWithDate extends UrlInfo { final UrlInfoWithDate info = (UrlInfoWithDate)o; return InfoType == info.InfoType && - ZLMiscUtil.equals(Url, info.Url) && - ZLMiscUtil.equals(Mime, info.Mime) && - ZLMiscUtil.equals(Updated, info.Updated); + MiscUtil.equals(Url, info.Url) && + MiscUtil.equals(Mime, info.Mime) && + MiscUtil.equals(Updated, info.Updated); } @Override public int hashCode() { - return InfoType.hashCode() + ZLMiscUtil.hashCode(Url) + ZLMiscUtil.hashCode(Mime) + ZLMiscUtil.hashCode(Updated); + return InfoType.hashCode() + MiscUtil.hashCode(Url) + MiscUtil.hashCode(Mime) + MiscUtil.hashCode(Updated); } } diff --git a/src/org/geometerplus/fbreader/tree/FBTree.java b/src/org/geometerplus/fbreader/tree/FBTree.java index 8872317c2..901da9d35 100644 --- a/src/org/geometerplus/fbreader/tree/FBTree.java +++ b/src/org/geometerplus/fbreader/tree/FBTree.java @@ -21,9 +21,9 @@ package org.geometerplus.fbreader.tree; import java.io.Serializable; -import org.geometerplus.zlibrary.core.tree.ZLTree; import org.geometerplus.zlibrary.core.image.ZLImage; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.tree.ZLTree; +import org.geometerplus.zlibrary.core.util.MiscUtil; public abstract class FBTree extends ZLTree implements Comparable { public static class Key implements Serializable { @@ -49,7 +49,7 @@ public abstract class FBTree extends ZLTree implements Comparable implements Comparable 0) { - builder.append(", "); - } - builder.append(subtree.getName()); - if (count == 5) { - break; - } - } - return builder.toString(); - } + public abstract String getSummary(); protected ZLImage createCover() { return null; diff --git a/src/org/geometerplus/zlibrary/core/money/Money.java b/src/org/geometerplus/zlibrary/core/money/Money.java index 074d058f2..a8fda975e 100644 --- a/src/org/geometerplus/zlibrary/core/money/Money.java +++ b/src/org/geometerplus/zlibrary/core/money/Money.java @@ -23,7 +23,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.Locale; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; public class Money implements Comparable, Serializable { public static final Money ZERO = new Money(); @@ -133,12 +133,12 @@ public class Money implements Comparable, Serializable { if (Amount.equals(ZERO.Amount)) { return m.Amount.equals(ZERO.Amount); } - return Amount.equals(m.Amount) && ZLMiscUtil.equals(Currency, m.Currency); + return Amount.equals(m.Amount) && MiscUtil.equals(Currency, m.Currency); } @Override public int hashCode() { - return Amount.hashCode() + ZLMiscUtil.hashCode(Currency); + return Amount.hashCode() + MiscUtil.hashCode(Currency); } @Override diff --git a/src/org/geometerplus/zlibrary/core/network/ZLNetworkManager.java b/src/org/geometerplus/zlibrary/core/network/ZLNetworkManager.java index c56e7a75c..1349f4ec6 100644 --- a/src/org/geometerplus/zlibrary/core/network/ZLNetworkManager.java +++ b/src/org/geometerplus/zlibrary/core/network/ZLNetworkManager.java @@ -38,7 +38,7 @@ import org.apache.http.params.*; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.BasicHttpContext; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; import org.geometerplus.zlibrary.core.util.ZLNetworkUtil; import org.geometerplus.zlibrary.core.options.ZLStringOption; @@ -76,9 +76,9 @@ public class ZLNetworkManager { } return myScope.getPort() == scope.getPort() && - ZLMiscUtil.equals(myScope.getHost(), scope.getHost()) && - ZLMiscUtil.equals(myScope.getScheme(), scope.getScheme()) && - ZLMiscUtil.equals(myScope.getRealm(), scope.getRealm()); + MiscUtil.equals(myScope.getHost(), scope.getHost()) && + MiscUtil.equals(myScope.getScheme(), scope.getScheme()) && + MiscUtil.equals(myScope.getRealm(), scope.getRealm()); } public int hashCode() { @@ -87,9 +87,9 @@ public class ZLNetworkManager { } return myScope.getPort() + - ZLMiscUtil.hashCode(myScope.getHost()) + - ZLMiscUtil.hashCode(myScope.getScheme()) + - ZLMiscUtil.hashCode(myScope.getRealm()); + MiscUtil.hashCode(myScope.getHost()) + + MiscUtil.hashCode(myScope.getScheme()) + + MiscUtil.hashCode(myScope.getRealm()); } } @@ -199,17 +199,17 @@ public class ZLNetworkManager { } final Key k = (Key)o; return - ZLMiscUtil.equals(Domain, k.Domain) && - ZLMiscUtil.equals(Path, k.Path) && - ZLMiscUtil.equals(Name, k.Name); + MiscUtil.equals(Domain, k.Domain) && + MiscUtil.equals(Path, k.Path) && + MiscUtil.equals(Name, k.Name); } @Override public int hashCode() { return - ZLMiscUtil.hashCode(Domain) + - ZLMiscUtil.hashCode(Path) + - ZLMiscUtil.hashCode(Name); + MiscUtil.hashCode(Domain) + + MiscUtil.hashCode(Path) + + MiscUtil.hashCode(Name); } }; diff --git a/src/org/geometerplus/zlibrary/core/options/ZLStringListOption.java b/src/org/geometerplus/zlibrary/core/options/ZLStringListOption.java index a490fc379..2a7b0514d 100644 --- a/src/org/geometerplus/zlibrary/core/options/ZLStringListOption.java +++ b/src/org/geometerplus/zlibrary/core/options/ZLStringListOption.java @@ -21,7 +21,7 @@ package org.geometerplus.zlibrary.core.options; import java.util.*; -import org.geometerplus.zlibrary.core.util.ZLMiscUtil; +import org.geometerplus.zlibrary.core.util.MiscUtil; public class ZLStringListOption extends ZLOption { private final List myDefaultValue; @@ -44,9 +44,9 @@ public class ZLStringListOption extends ZLOption { public List getValue() { if (!myIsSynchronized) { - final String value = getConfigValue(ZLMiscUtil.listToString(myDefaultValue, myDelimiter)); + final String value = getConfigValue(MiscUtil.join(myDefaultValue, myDelimiter)); if (value != null) { - myValue = ZLMiscUtil.stringToList(value, myDelimiter); + myValue = MiscUtil.split(value, myDelimiter); } myIsSynchronized = true; } @@ -64,7 +64,7 @@ public class ZLStringListOption extends ZLOption { if (value.equals(myDefaultValue)) { unsetConfigValue(); } else { - setConfigValue(ZLMiscUtil.listToString(value, myDelimiter)); + setConfigValue(MiscUtil.join(value, myDelimiter)); } myIsSynchronized = true; } diff --git a/src/org/geometerplus/zlibrary/core/util/MimeType.java b/src/org/geometerplus/zlibrary/core/util/MimeType.java index edcf311b5..a2fec6d28 100644 --- a/src/org/geometerplus/zlibrary/core/util/MimeType.java +++ b/src/org/geometerplus/zlibrary/core/util/MimeType.java @@ -149,17 +149,17 @@ public final class MimeType { } final MimeType type = (MimeType)o; return - ZLMiscUtil.equals(Name, type.Name) && - ZLMiscUtil.mapsEquals(myParameters, type.myParameters); + MiscUtil.equals(Name, type.Name) && + MiscUtil.mapsEquals(myParameters, type.myParameters); } public boolean weakEquals(MimeType type) { - return ZLMiscUtil.equals(Name, type.Name); + return MiscUtil.equals(Name, type.Name); } @Override public int hashCode() { - return ZLMiscUtil.hashCode(Name); + return MiscUtil.hashCode(Name); } @Override diff --git a/src/org/geometerplus/zlibrary/core/util/ZLMiscUtil.java b/src/org/geometerplus/zlibrary/core/util/MiscUtil.java similarity index 93% rename from src/org/geometerplus/zlibrary/core/util/ZLMiscUtil.java rename to src/org/geometerplus/zlibrary/core/util/MiscUtil.java index 744aa0615..7f7817301 100644 --- a/src/org/geometerplus/zlibrary/core/util/ZLMiscUtil.java +++ b/src/org/geometerplus/zlibrary/core/util/MiscUtil.java @@ -21,7 +21,7 @@ package org.geometerplus.zlibrary.core.util; import java.util.*; -public abstract class ZLMiscUtil { +public abstract class MiscUtil { public static boolean equals(T o0, T o1) { return o0 == null ? o1 == null : o0.equals(o1); } @@ -67,7 +67,7 @@ public abstract class ZLMiscUtil { (text.toLowerCase().indexOf(lowerCasePattern) >= 0); } - public static String listToString(List list, String delimiter) { + public static String join(List list, String delimiter) { if (list == null || list.isEmpty()) { return ""; } @@ -84,7 +84,7 @@ public abstract class ZLMiscUtil { return builder.toString(); } - public static List stringToList(String str, String delimiter) { + public static List split(String str, String delimiter) { if (str == null || "".equals(str)) { return Collections.emptyList(); }