From fb453e599fed716636b6056739f17e318d55d25c Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sat, 21 Apr 2012 11:27:29 +0200 Subject: refactorings * always use CacheAttribute for attribute strings * avoid concatenation in append * use SparseArray instead of maps --- .../src/cgeo/calendar/CalendarActivity.java | 17 +++++++++-------- main/src/cgeo/geocaching/CacheCache.java | 2 +- main/src/cgeo/geocaching/CacheDetailActivity.java | 21 +++++---------------- main/src/cgeo/geocaching/cgData.java | 3 +-- main/src/cgeo/geocaching/cgeoimages.java | 4 ++-- .../geocaching/enumerations/CacheAttribute.java | 12 +++++++++--- .../src/cgeo/geocaching/export/FieldnoteExport.java | 2 +- main/src/cgeo/geocaching/export/GpxExport.java | 12 ++++++------ main/src/cgeo/geocaching/maps/CGeoMap.java | 7 +++---- .../cgeo/geocaching/maps/MapProviderFactory.java | 10 ++++++++-- main/src/cgeo/geocaching/ui/CacheListAdapter.java | 13 +++++++------ .../geocaching/enumerations/CacheAttributeTest.java | 10 ++++++++++ 12 files changed, 62 insertions(+), 51 deletions(-) diff --git a/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java b/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java index 61f257f..6e7be52 100644 --- a/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java +++ b/cgeo-calendar/src/cgeo/calendar/CalendarActivity.java @@ -12,14 +12,13 @@ import android.text.Html; import android.text.Spanned; import android.text.style.ImageSpan; import android.util.Log; +import android.util.SparseArray; import android.view.Gravity; import android.widget.Toast; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Date; -import java.util.HashMap; -import java.util.Map; public final class CalendarActivity extends Activity { private static final String LOG_TAG = "cgeo.calendar"; @@ -93,7 +92,7 @@ public final class CalendarActivity extends Activity { return; } - final Map calendars = new HashMap(); + final SparseArray calendars = new SparseArray(); cursor.moveToFirst(); final int indexId = cursor.getColumnIndex("_id"); @@ -115,20 +114,22 @@ public final class CalendarActivity extends Activity { } } while (cursor.moveToNext()); - if (calendars.isEmpty()) { + if (calendars.size() == 0) { showToast(getResources().getString(R.string.event_fail)); finish(); return; } - final CharSequence[] items = calendars.values().toArray(new CharSequence[calendars.size()]); + final String[] items = new String[calendars.size()]; + for (int i = 0; i < calendars.size(); i++) { + items[i] = calendars.valueAt(i); + } final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.calendars); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { - final Integer[] keys = calendars.keySet().toArray(new Integer[calendars.size()]); - final Integer calendarId = keys[item]; + final int calendarId = calendars.keyAt(item); addToCalendar(calendarId); finish(); } @@ -209,7 +210,7 @@ public final class CalendarActivity extends Activity { * @param calendarId * The selected calendar */ - private void addToCalendar(Integer calendarId) { + private void addToCalendar(int calendarId) { try { final Uri calendarProvider = Compatibility.getCalendarEventsProviderURI(); diff --git a/main/src/cgeo/geocaching/CacheCache.java b/main/src/cgeo/geocaching/CacheCache.java index 41380fa..cce1943 100644 --- a/main/src/cgeo/geocaching/CacheCache.java +++ b/main/src/cgeo/geocaching/CacheCache.java @@ -106,7 +106,7 @@ public class CacheCache { return StringUtils.join(cachesCache.keySet(), ' '); } - private class CacheRemoveHandler implements RemoveHandler { + private static class CacheRemoveHandler implements RemoveHandler { @Override public void onRemove(cgCache removed) { diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 7a74dbc..92df3be 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -1217,11 +1217,6 @@ public class CacheDetailActivity extends AbstractActivity { noAttributeIconsFound = true; for (String attributeName : cache.getAttributes()) { - boolean strikethru = attributeName.endsWith("_no"); - // cut off _yes / _no - if (attributeName.endsWith("_no") || attributeName.endsWith("_yes")) { - attributeName = attributeName.substring(0, attributeName.lastIndexOf('_')); - } // check if another attribute icon fits in this row attributeRow.measure(0, 0); int rowWidth = attributeRow.getMeasuredWidth(); @@ -1233,7 +1228,8 @@ public class CacheDetailActivity extends AbstractActivity { rows.addView(attributeRow); } - CacheAttribute attrib = CacheAttribute.getByGcRawName(attributeName); + final boolean strikethru = !CacheAttribute.isEnabled(attributeName); + final CacheAttribute attrib = CacheAttribute.getByGcRawName(CacheAttribute.trimAttributeName(attributeName)); if (attrib != CacheAttribute.UNKNOWN) { noAttributeIconsFound = false; Drawable d = res.getDrawable(attrib.drawableId); @@ -1275,18 +1271,11 @@ public class CacheDetailActivity extends AbstractActivity { final List attributes = cache.getAttributes(); for (String attributeName : attributes) { - boolean negated = attributeName.endsWith("_no"); - // cut off _yes / _no - if (attributeName.endsWith("_no") || attributeName.endsWith("_yes")) { - attributeName = attributeName.substring(0, attributeName.lastIndexOf('_')); - } + final boolean enabled = CacheAttribute.isEnabled(attributeName); // search for a translation of the attribute - CacheAttribute attrib = CacheAttribute.getByGcRawName(attributeName); + CacheAttribute attrib = CacheAttribute.getByGcRawName(CacheAttribute.trimAttributeName(attributeName)); if (attrib != CacheAttribute.UNKNOWN) { - String translated = res.getString(negated ? attrib.stringIdNo : attrib.stringIdYes); - if (StringUtils.isNotBlank(translated)) { - attributeName = translated; - } + attributeName = attrib.getL10n(enabled); } if (buffer.length() > 0) { buffer.append('\n'); diff --git a/main/src/cgeo/geocaching/cgData.java b/main/src/cgeo/geocaching/cgData.java index c70b19f..71e9849 100644 --- a/main/src/cgeo/geocaching/cgData.java +++ b/main/src/cgeo/geocaching/cgData.java @@ -3096,8 +3096,7 @@ public class cgData { query.append(i > 0 ? ", " : "").append(dbTableWaypoints).append('.').append(WAYPOINT_COLUMNS[i]).append(' '); } query.append(" FROM ").append(dbTableWaypoints).append(", ").append(dbTableCaches).append(" WHERE ").append(dbTableWaypoints).append("._id == ").append(dbTableCaches).append("._id and ").append(where); - Cursor cursor = databaseRO.rawQuery( - query.toString(), null); + Cursor cursor = databaseRO.rawQuery(query.toString(), null); if (cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); diff --git a/main/src/cgeo/geocaching/cgeoimages.java b/main/src/cgeo/geocaching/cgeoimages.java index bac0cad..10b8b21 100644 --- a/main/src/cgeo/geocaching/cgeoimages.java +++ b/main/src/cgeo/geocaching/cgeoimages.java @@ -19,6 +19,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.text.Html; +import android.util.SparseArray; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; @@ -34,7 +35,6 @@ import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; import java.util.List; public class cgeoimages extends AbstractActivity { @@ -51,7 +51,7 @@ public class cgeoimages extends AbstractActivity { private LinearLayout imagesView = null; private int count = 0; private int countDone = 0; - private final HashMap images = new HashMap(); + private final SparseArray images = new SparseArray(); private BitmapDrawable currentDrawable; private cgImage currentImage; diff --git a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java index 459c829..4a502fb 100644 --- a/main/src/cgeo/geocaching/enumerations/CacheAttribute.java +++ b/main/src/cgeo/geocaching/enumerations/CacheAttribute.java @@ -3,6 +3,8 @@ package cgeo.geocaching.enumerations; import cgeo.geocaching.R; import cgeo.geocaching.cgeoapplication; +import org.apache.commons.lang3.StringUtils; + import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -76,9 +78,9 @@ public enum CacheAttribute { FRONTYARD(65, "frontyard", R.drawable.attribute_frontyard, R.string.attribute_frontyard_yes, R.string.attribute_frontyard_no), TEAMWORK(66, "teamwork", R.drawable.attribute_teamwork, R.string.attribute_teamwork_yes, R.string.attribute_teamwork_no); - public static final String INTERNAL_PRE = "attribute_"; - public static final String INTERNAL_YES = "_yes"; - public static final String INTERNAL_NO = "_no"; + private static final String INTERNAL_PRE = "attribute_"; + private static final String INTERNAL_YES = "_yes"; + private static final String INTERNAL_NO = "_no"; public final int id; public final String gcRawName; @@ -131,4 +133,8 @@ public enum CacheAttribute { } return attributeName.replace(INTERNAL_PRE, "").replace(INTERNAL_YES, "").replace(INTERNAL_NO, "").trim(); } + + public static boolean isEnabled(final String attributeName) { + return !StringUtils.endsWithIgnoreCase(attributeName, INTERNAL_NO); + } } diff --git a/main/src/cgeo/geocaching/export/FieldnoteExport.java b/main/src/cgeo/geocaching/export/FieldnoteExport.java index 05fb828..50cc620 100644 --- a/main/src/cgeo/geocaching/export/FieldnoteExport.java +++ b/main/src/cgeo/geocaching/export/FieldnoteExport.java @@ -161,7 +161,7 @@ class FieldnoteExport extends AbstractExport { } } - fieldNoteBuffer.append("\n"); + fieldNoteBuffer.append('\n'); if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { exportLocation.mkdirs(); diff --git a/main/src/cgeo/geocaching/export/GpxExport.java b/main/src/cgeo/geocaching/export/GpxExport.java index 2c833a2..90ff7a0 100644 --- a/main/src/cgeo/geocaching/export/GpxExport.java +++ b/main/src/cgeo/geocaching/export/GpxExport.java @@ -1,8 +1,8 @@ package cgeo.geocaching.export; +import cgeo.geocaching.LogEntry; import cgeo.geocaching.R; import cgeo.geocaching.cgCache; -import cgeo.geocaching.LogEntry; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.activity.Progress; @@ -90,8 +90,8 @@ class GpxExport extends AbstractExport { } gpx.append(""); + gpx.append("lat=\"").append(cache.getCoords().getLatitude()).append("\" "); + gpx.append("lon=\"").append(cache.getCoords().getLongitude()).append("\">"); gpx.append("