Skip to content

Commit

Permalink
remove sorting alphabetically because of poor performances (title is …
Browse files Browse the repository at this point in the history
…of type 'text' and cannot be indexed)
  • Loading branch information
Athou committed Jan 31, 2021
1 parent b45219a commit eec6f7d
Show file tree
Hide file tree
Showing 34 changed files with 18 additions and 100 deletions.
1 change: 0 additions & 1 deletion src/main/app/i18n/ar.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "إعادة انعاش",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "الترتيب حسب التاريخ تصاعدي / تنازلي",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only" : "العناوين فقط",
"expanded_view" : "عرض موسع",
"mark_all_as_read" : "اعتبر الكل مقروء",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/ca.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Actualitzar",
"refresh_all" : "Força l'actualització de tots els canals",
"sort_by_asc_desc" : "Ordenar per data asc/desc",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only" : "Només títols",
"expanded_view" : "Vista ampliada",
"mark_all_as_read" : "Marcar tots llegits",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/cs.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh " : " Obnovit",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc " : " Seřadit podle nejnovějšího/nejstaršího",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only " : " Zobrazit jenom titulky",
"expanded_view " : " Rozšířený náhled",
"mark_all_as_read " : " Označit vše jako přečtené",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Adnewyddu",
"refresh_all" : "Gorfodi ail-lwytho pob ffrwd",
"sort_by_asc_desc" : "Trefnu yn ôl dyddiad",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only" : "Teitlau yn unig",
"expanded_view" : "Golwg estynedig",
"mark_all_as_read" : "Nodi'r cyfan fel wedi ei ddarllen",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/da.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Opdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter efter dato ny/gammel",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only" : "Kun titler",
"expanded_view" : "Udvidet visning",
"mark_all_as_read" : "Marker alle som læst",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Aktualisieren",
"refresh_all" : "Erzwinge Aktualisierung aller Feeds",
"sort_by_asc_desc" : "Nach Datum sortieren (auf-/absteigend)",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Nur Überschriften",
"expanded_view" : "Ausgedehnte Ansicht",
"mark_all_as_read" : "Alle Artikel als gelesen markieren",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Refresh",
"refresh_all" : "Force refresh all my feeds",
"sort_by_asc_desc" : "Sort by date asc/desc",
"sort_by_abc_zyx" : "Sort alphabetically",
"titles_only" : "Titles only",
"expanded_view" : "Expanded view",
"mark_all_as_read" : "Mark all as read",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/es.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
"refresh" : "Actualizar",
"refresh_all" : "Forzar la actualización de todos mis canales.",
"sort_by_asc_desc" : "Ordenar por fecha asc/desc.",
"sort_by_abc_zyx" : "Ordenar alfabéticamente",
"titles_only" : "Sólo títulos",
"expanded_view" : "Vista expandida",
"mark_all_as_read" : "Marcar todos como leído",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/fa.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "تازه‌سازی",
"refresh_all" : "مجبورکردن تازه‌سازی همهٔ خوراک‌ها",
"sort_by_asc_desc" : "مرتب‌کردن بر اساس تاریخ به‌صورت صعودی/نزولی",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "فقط عنوان‌ها",
"expanded_view" : "نمای گسترش‌یافته",
"mark_all_as_read" : "علامت‌گذاری تمامی مطالب به‌عنوان خوانده‌شده",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/fi.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Päivitä",
"refresh_all" : "Pakota kaikkien syötteiden päivitys",
"sort_by_asc_desc" : "Järjestä päivämäärän mukaan nousevasti/laskevasti",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Näytä vain otsikot",
"expanded_view" : "Laajennettu näkymä",
"mark_all_as_read" : "Merkitse kaikki luetuiksi",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/fr.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Rafraîchir",
"refresh_all" : "Rafraîchir tous les flux",
"sort_by_asc_desc" : "Trier par date croissante/décroissante",
"sort_by_abc_zyx" : "Trier par ordre alphabétique",
"titles_only" : "Titres uniquement",
"expanded_view" : "Vue étendue",
"mark_all_as_read" : "Tout marquer comme lu",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/gl.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Actualizar",
"refresh_all" : "Forzar a actualización de todas as fontes ",
"sort_by_asc_desc" : "Ordenar por data asc/desc",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Só títulos",
"expanded_view" : "Vista expandida",
"mark_all_as_read" : "Marcar todos como lidos",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/glk.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "واج‌أری",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "تاریخˇ سر دچئن",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "خالی تیتران",
"expanded_view" : "واشاده نما",
"mark_all_as_read" : "همه‌ته مطالبه چاکون بخانده",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/hu.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Frissítés",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Rendezés időrend szerint",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Csak cím",
"expanded_view" : "Részletes nézet",
"mark_all_as_read" : "Az összes megjelölése olvasottként",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/id.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Segarkan",
"refresh_all" : "Memaksa menyegarkan semua umpan saya",
"sort_by_asc_desc" : "Urutkan menurut tanggal asc/desc",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Hanya Judul",
"expanded_view" : "Penglihatan diperluas",
"mark_all_as_read" : "Tandai semua sebagai telah dibaca",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/it.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Aggiorna",
"refresh_all" : "Forza l'aggiornamento di tutti i feed",
"sort_by_asc_desc" : "Ordina per data crescente/decrescente",
"sort_by_abc_zyx" : "Ordina alfabeticamente",
"titles_only" : "Solo i titoli",
"expanded_view" : "Espandi",
"mark_all_as_read" : "Segna tutti come già letti",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/ja.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "更新",
"refresh_all" : "全てのフィードを更新",
"sort_by_asc_desc" : "日時でソート",
"sort_by_abc_zyx" : "名前でソート",
"titles_only" : "タイトルのみ",
"expanded_view" : "拡張ビュー",
"mark_all_as_read" : "全て既読にする",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/ko.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "새로고침",
"refresh_all" : "모든 피드를 강제로 새로고침",
"sort_by_asc_desc" : "날짜별 오름차/내림차순 정렬",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "제목만 표시하기",
"expanded_view" : "Expanded View",
"mark_all_as_read" : "읽음으로 표시",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/ms.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Refresh",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Aturkan mengikut tarikh (baru/lama)",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Tajuk sahaja",
"expanded_view" : "Wide view",
"mark_all_as_read" : "Tanda kesemuanya telah dibaca",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/nb.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Oppdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter etter dato ny/gammel",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Kun titler",
"expanded_view" : "Utvidet visning",
"mark_all_as_read" : "Merk alle som lest",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/nl.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Vernieuwen",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorteer op datum opl/afl",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Alleen titels",
"expanded_view" : "Uitgebreide weergave",
"mark_all_as_read" : "Markeer alles als gelezen",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/nn.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Oppdater",
"refresh_all" : "Force refresh all my feeds ",
"sort_by_asc_desc" : "Sorter etter dato ny/gamal",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Berre titlar",
"expanded_view" : "Utvida visning",
"mark_all_as_read" : "Merk alle som lesne",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/pl.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Odswież",
"refresh_all" : "Odśwież teraz wszystkie kanały ",
"sort_by_asc_desc" : "Sortuj od najnowszego/najstarszego",
"sort_by_abc_zyx" : "Sortuj alfabetycznie",
"titles_only" : "Widok listy",
"expanded_view" : "Widok rozwinięty",
"mark_all_as_read" : "Oznacz wszystko jako przeczytane",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/pt.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Atualizar",
"refresh_all" : "Forçar atualização de todos os meus feeds",
"sort_by_asc_desc" : "Ordenar por data cresc/decres",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Somente títulos",
"expanded_view" : "Modo Expandido",
"mark_all_as_read" : "Marcar tudo como lido",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/ru.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Обновить",
"refresh_all" : "Обновить все подписки вручную",
"sort_by_asc_desc" : "Сначала новые/старые",
"sort_by_abc_zyx" : "По алфавиту",
"titles_only" : "Только заголовки",
"expanded_view" : "Развёрнутый вид",
"mark_all_as_read" : "Отметить всё как прочитанное",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/sk.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Obnoviť",
"refresh_all" : "Vynútené obnovenie všetkých položiek",
"sort_by_asc_desc" : "Zoradiť podľa najnovšieho/najstaršieho",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Náhľad titulkov",
"expanded_view" : "Rozšírený náhľad",
"mark_all_as_read" : "Označiť všetky ako prečítané",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/sv.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Uppdatera",
"refresh_all" : "Tvinga uppdatering av alla prenumerationer",
"sort_by_asc_desc" : "Sortera efter datum stigande/fallande",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Endast titlar",
"expanded_view" : "Expanderad vy",
"mark_all_as_read" : "Markera alla som lästa",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/tr.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "Yenile",
"refresh_all" : "Tüm yayınları yenilemek için zorla",
"sort_by_asc_desc" : "Tarihe göre sırala artan/azalan",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "Sadece başlıklar",
"expanded_view" : "Genişletilmiş görünüm",
"mark_all_as_read" : "Tümünü okundu işaretle",
Expand Down
1 change: 0 additions & 1 deletion src/main/app/i18n/zh.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
"refresh" : "刷新",
"refresh_all" : "刷新所有订阅",
"sort_by_asc_desc" : "按日期升序/降序排序",
"sort_by_abc_zyx" : "Sort Alphabetically",
"titles_only" : "仅显示标题",
"expanded_view" : "显示内容",
"mark_all_as_read" : "标记所有为已读",
Expand Down
4 changes: 0 additions & 4 deletions src/main/app/js/controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -529,10 +529,6 @@ module.controller('ToolbarCtrl', [
var settings = $scope.settingsService.settings;
settings.readingOrder = settings.readingOrder == 'desc' ? 'asc' : 'desc';
};
$scope.toggleAbcOrder = function() {
var settings = $scope.settingsService.settings;
settings.readingOrder = settings.readingOrder == 'abc' ? 'zyx' : 'abc';
};

$scope.toAdmin = function() {
$location.path('admin');
Expand Down
4 changes: 0 additions & 4 deletions src/main/app/templates/_toolbar.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,6 @@
ng-class="{'active' : settingsService.settings.readingOrder == 'asc' || settingsService.settings.readingOrder == 'desc'}">
<i ng-class="{'icon-arrow-up' : settingsService.settings.readingOrder == 'asc', 'icon-arrow-down': settingsService.settings.readingOrder != 'asc'}"></i>
</a>
<button type="button" class="btn btn-default" ng-click="toggleAbcOrder()" title="{{ 'toolbar.sort_by_abc_zyx' | translate }}"
ng-class="{'active' : settingsService.settings.readingOrder == 'abc' || settingsService.settings.readingOrder == 'zyx'}">
<i ng-class="{'icon-sort-by-alphabet' : settingsService.settings.readingOrder != 'zyx', 'icon-sort-by-alphabet-alt': settingsService.settings.readingOrder == 'zyx'}"></i>
</button>
</div>

<div class="btn-group" id="toolbar-read-view-settings">
Expand Down
64 changes: 15 additions & 49 deletions src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@
@Singleton
public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {

private FeedEntryDAO feedEntryDAO;
private FeedEntryTagDAO feedEntryTagDAO;
private CommaFeedConfiguration config;
private final FeedEntryDAO feedEntryDAO;
private final FeedEntryTagDAO feedEntryTagDAO;
private final CommaFeedConfiguration config;

private QFeedEntryStatus status = QFeedEntryStatus.feedEntryStatus;
private QFeedEntry entry = QFeedEntry.feedEntry;
private QFeedEntryContent content = QFeedEntryContent.feedEntryContent;
private QFeedEntryTag entryTag = QFeedEntryTag.feedEntryTag;
private final QFeedEntryStatus status = QFeedEntryStatus.feedEntryStatus;
private final QFeedEntry entry = QFeedEntry.feedEntry;
private final QFeedEntryContent content = QFeedEntryContent.feedEntryContent;
private final QFeedEntryTag entryTag = QFeedEntryTag.feedEntryTag;

@Inject
public FeedEntryStatusDAO(SessionFactory sessionFactory, FeedEntryDAO feedEntryDAO, FeedEntryTagDAO feedEntryTagDAO,
Expand All @@ -68,18 +68,6 @@ public int compare(FeedEntryStatus o1, FeedEntryStatus o2) {

private static final Comparator<FeedEntryStatus> STATUS_COMPARATOR_ASC = Ordering.from(STATUS_COMPARATOR_DESC).reverse();

private static final Comparator<FeedEntryStatus> STATUS_COMPARATOR_ABC = new Comparator<FeedEntryStatus>() {
@Override
public int compare(FeedEntryStatus o1, FeedEntryStatus o2) {
CompareToBuilder builder = new CompareToBuilder();
builder.append(o1.getEntry().getContent().getTitle(), o2.getEntry().getContent().getTitle());
builder.append(o1.getId(), o2.getId());
return builder.toComparison();
}
};

private static final Comparator<FeedEntryStatus> STATUS_COMPARATOR_ZYX = Ordering.from(STATUS_COMPARATOR_ABC).reverse();

public FeedEntryStatus getStatus(User user, FeedSubscription sub, FeedEntry entry) {
List<FeedEntryStatus> statuses = query().selectFrom(status).where(status.entry.eq(entry), status.subscription.eq(sub)).fetch();
FeedEntryStatus status = Iterables.getFirst(statuses, null);
Expand Down Expand Up @@ -113,12 +101,8 @@ public List<FeedEntryStatus> findStarred(User user, Date newerThan, int offset,

if (order == ReadingOrder.asc) {
query.orderBy(status.entryUpdated.asc(), status.id.asc());
} else if (order == ReadingOrder.desc) {
} else {
query.orderBy(status.entryUpdated.desc(), status.id.desc());
} else if (order == ReadingOrder.abc) {
query.orderBy(status.entry.content.title.asc(), status.id.desc());
} else { // order == ReadingOrder.xyz
query.orderBy(status.entry.content.title.desc(), status.id.desc());
}

query.offset(offset).limit(limit);
Expand Down Expand Up @@ -178,36 +162,27 @@ private JPAQuery<FeedEntry> buildQuery(User user, FeedSubscription sub, boolean
if (last != null) {
if (order == ReadingOrder.desc) {
query.where(entry.updated.gt(last.getEntryUpdated()));
} else if (order == ReadingOrder.asc) {
} else {
query.where(entry.updated.lt(last.getEntryUpdated()));
} else if (order == ReadingOrder.abc) {
query.join(entry.content, content);
query.where(content.title.lt(last.getEntry().getContent().getTitle()));
} else { // order == ReadingOrder.zyx
query.join(entry.content, content);
query.where(content.title.gt(last.getEntry().getContent().getTitle()));
}
} else if (order != null && (order == ReadingOrder.abc || order == ReadingOrder.zyx)) {
query.join(entry.content, content);
}

if (order != null) {
if (order == ReadingOrder.asc) {
query.orderBy(entry.updated.asc(), entry.id.asc());
} else if (order == ReadingOrder.desc) {
} else {
query.orderBy(entry.updated.desc(), entry.id.desc());
} else if (order == ReadingOrder.abc) {
query.orderBy(content.title.asc(), entry.id.asc());
} else { // order == ReadingOrder.zyx
query.orderBy(content.title.desc(), entry.id.desc());
}
}

if (offset > -1) {
query.offset(offset);
}

if (limit > -1) {
query.limit(limit);
}

setTimeout(query, config.getApplicationSettings().getQueryTimeout());
return query;
}
Expand All @@ -217,18 +192,9 @@ public List<FeedEntryStatus> findBySubscriptions(User user, List<FeedSubscriptio
boolean onlyIds, String tag) {
int capacity = offset + limit;

Comparator<FeedEntryStatus> comparator;
if (order == ReadingOrder.desc) {
comparator = STATUS_COMPARATOR_DESC;
} else if (order == ReadingOrder.abc) {
comparator = STATUS_COMPARATOR_ABC;
} else if (order == ReadingOrder.zyx) {
comparator = STATUS_COMPARATOR_ZYX;
} else {
comparator = STATUS_COMPARATOR_ASC;
}
Comparator<FeedEntryStatus> comparator = order == ReadingOrder.desc ? STATUS_COMPARATOR_DESC : STATUS_COMPARATOR_ASC;

FixedSizeSortedSet<FeedEntryStatus> set = new FixedSizeSortedSet<FeedEntryStatus>(capacity, comparator);
FixedSizeSortedSet<FeedEntryStatus> set = new FixedSizeSortedSet<>(capacity, comparator);
for (FeedSubscription sub : subs) {
FeedEntryStatus last = (order != null && set.isFull()) ? set.last() : null;
JPAQuery<FeedEntry> query = buildQuery(user, sub, unreadOnly, keywords, newerThan, -1, capacity, order, last, tag);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public enum ReadingMode {
}

public enum ReadingOrder {
asc, desc, abc, zyx
asc, desc
}

public enum ViewMode {
Expand Down

0 comments on commit eec6f7d

Please sign in to comment.