From 3baf056b683db2f8a39452ddb0ef298a365a4a5a Mon Sep 17 00:00:00 2001 From: KiwiStone Date: Wed, 23 Oct 2013 01:10:07 +0200 Subject: - Added new comparator to handle popularity ratios - Added required resource strings - Added teh new comparator to the user interface option --- main/res/values-cs/strings.xml | 1 + main/res/values-de/strings.xml | 1 + main/res/values-es/strings.xml | 1 + main/res/values-fr/strings.xml | 1 + main/res/values-hu/strings.xml | 1 + main/res/values-it/strings.xml | 1 + main/res/values-nl/strings.xml | 1 + main/res/values-pl/strings.xml | 1 + main/res/values-pt/strings.xml | 1 + main/res/values-sk/strings.xml | 1 + main/res/values-sl/strings.xml | 1 + main/res/values-sv/strings.xml | 1 + main/res/values/strings.xml | 1 + .../sorting/ComparatorUserInterface.java | 1 + .../sorting/PopularityRatioComparator.java | 56 ++++++++++++++++++++++ 15 files changed, 70 insertions(+) create mode 100644 main/src/cgeo/geocaching/sorting/PopularityRatioComparator.java (limited to 'main') diff --git a/main/res/values-cs/strings.xml b/main/res/values-cs/strings.xml index 8cad9c0..de54d70 100644 --- a/main/res/values-cs/strings.xml +++ b/main/res/values-cs/strings.xml @@ -246,6 +246,7 @@ Terénu Velikosti Oblíbenosti + Oblíbenosti [%] Jména Geokódu Hodnocení diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml index d7cf5dc..55f9d36 100644 --- a/main/res/values-de/strings.xml +++ b/main/res/values-de/strings.xml @@ -246,6 +246,7 @@ Gelände Größe Beliebtheit + Beliebtheit [%] Name Geo-Code Bewertung diff --git a/main/res/values-es/strings.xml b/main/res/values-es/strings.xml index 0218762..c0220e4 100644 --- a/main/res/values-es/strings.xml +++ b/main/res/values-es/strings.xml @@ -216,6 +216,7 @@ terreno tamaño popularidad + popularidad [%] nombre Código valoración diff --git a/main/res/values-fr/strings.xml b/main/res/values-fr/strings.xml index dbbd8f9..bbb3ea5 100644 --- a/main/res/values-fr/strings.xml +++ b/main/res/values-fr/strings.xml @@ -246,6 +246,7 @@ terrain taille popularité + popularité [%] nom Geocode note diff --git a/main/res/values-hu/strings.xml b/main/res/values-hu/strings.xml index 8957045..9fc5463 100644 --- a/main/res/values-hu/strings.xml +++ b/main/res/values-hu/strings.xml @@ -223,6 +223,7 @@ terep méret sikeresség + sikeresség [%] név osztályzat szavazat (saját osztályzat) diff --git a/main/res/values-it/strings.xml b/main/res/values-it/strings.xml index 21118f2..ff07d3e 100644 --- a/main/res/values-it/strings.xml +++ b/main/res/values-it/strings.xml @@ -246,6 +246,7 @@ Terreno Dimensione Popolarità + Popolarità [%] Nome Geo Code Voto diff --git a/main/res/values-nl/strings.xml b/main/res/values-nl/strings.xml index 29e7f04..6227ad5 100644 --- a/main/res/values-nl/strings.xml +++ b/main/res/values-nl/strings.xml @@ -246,6 +246,7 @@ Terrein Formaat Populariteit + Populariteit [%] Naam Geocode Waardering diff --git a/main/res/values-pl/strings.xml b/main/res/values-pl/strings.xml index 02764d5..8fa49da 100644 --- a/main/res/values-pl/strings.xml +++ b/main/res/values-pl/strings.xml @@ -246,6 +246,7 @@ terenu rozmiaru popularności + popularności [%] nazwy Kod skrytki oceny diff --git a/main/res/values-pt/strings.xml b/main/res/values-pt/strings.xml index 955e7c3..b2005ea 100644 --- a/main/res/values-pt/strings.xml +++ b/main/res/values-pt/strings.xml @@ -246,6 +246,7 @@ Terreno Tamanho Popularidade + Popularidade [%] Nome Geo Código Pontuação diff --git a/main/res/values-sk/strings.xml b/main/res/values-sk/strings.xml index 8208064..d653f95 100644 --- a/main/res/values-sk/strings.xml +++ b/main/res/values-sk/strings.xml @@ -223,6 +223,7 @@ terénu veľkosti obľúbenosti + obľúbenosti [%] názvu Geokódu hodnotenia diff --git a/main/res/values-sl/strings.xml b/main/res/values-sl/strings.xml index a2d5250..24ddf3b 100644 --- a/main/res/values-sl/strings.xml +++ b/main/res/values-sl/strings.xml @@ -246,6 +246,7 @@ Teren Velikost Številu favoritov + Številu favoritov [%] Imenu Geo kodi Glasovih diff --git a/main/res/values-sv/strings.xml b/main/res/values-sv/strings.xml index 334f200..68c7506 100644 --- a/main/res/values-sv/strings.xml +++ b/main/res/values-sv/strings.xml @@ -244,6 +244,7 @@ Terräng Storlek Favoriter + Favoriter [%] Namn Geo kod Betyg (GC-vote) diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index bd6076c..68de736 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -284,6 +284,7 @@ Terrain Size Popularity + Popularity [%] Name Geo Code Rating diff --git a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java index 3cdd393..99a535a 100644 --- a/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java +++ b/main/src/cgeo/geocaching/sorting/ComparatorUserInterface.java @@ -47,6 +47,7 @@ public class ComparatorUserInterface { register(R.string.caches_sort_inventory, InventoryComparator.class); register(R.string.caches_sort_name, NameComparator.class); register(R.string.caches_sort_favorites, PopularityComparator.class); + register(R.string.caches_sort_favorites_ratio, PopularityRatioComparator.class); register(R.string.caches_sort_rating, RatingComparator.class); register(R.string.caches_sort_size, SizeComparator.class); register(R.string.caches_sort_state, StateComparator.class); diff --git a/main/src/cgeo/geocaching/sorting/PopularityRatioComparator.java b/main/src/cgeo/geocaching/sorting/PopularityRatioComparator.java new file mode 100644 index 0000000..fab7bb1 --- /dev/null +++ b/main/src/cgeo/geocaching/sorting/PopularityRatioComparator.java @@ -0,0 +1,56 @@ +/** + * + */ +package cgeo.geocaching.sorting; + +import cgeo.geocaching.DataStore; +import cgeo.geocaching.Geocache; +import cgeo.geocaching.enumerations.LogType; + +/** + * sorts caches by popularity ratio (favorites per find in %). + * only caches with 10 finds and more are counted to obtain meaningful statistics + */ +public class PopularityRatioComparator extends AbstractCacheComparator { + + @Override + protected boolean canCompare(final Geocache cache1, final Geocache cache2) { + return true; + } + + @Override + protected int compareCaches(final Geocache cache1, final Geocache cache2) { + + float ratio1 = 0.0f; + float ratio2 = 0.0f; + + int finds1 = getFindsCount(cache1); + int finds2 = getFindsCount(cache2); + + if (finds1 != 0 && finds1 > 9) { + ratio1 = (((float) cache1.getFavoritePoints()) / ((float) finds1)); + } + if (finds2 != 0 && finds2 > 9) { + ratio2 = (((float) cache2.getFavoritePoints()) / ((float) finds2)); + } + + if ((ratio2 - ratio1) > 0.0f) { + return 1; + } else if ((ratio2 - ratio1) < 0.0f) { + return -1; + } + + return 0; + } + + private static int getFindsCount(Geocache cache) { + if (cache.getLogCounts().isEmpty()) { + cache.setLogCounts(DataStore.loadLogCounts(cache.getGeocode())); + } + Integer logged = cache.getLogCounts().get(LogType.FOUND_IT); + if (logged != null) { + return logged; + } + return 0; + } +} -- cgit v1.1