protected List<PoiFilter> getFilters(SQLiteConnection conn) { ArrayList<PoiFilter> list = new ArrayList<PoiFilter>(); if (conn != null) { SQLiteCursor query = conn.rawQuery( "SELECT " + CATEGORIES_FILTER_ID + ", " + CATEGORIES_COL_CATEGORY + "," + CATEGORIES_COL_SUBCATEGORY + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ CATEGORIES_NAME, null); Map<String, Map<AmenityType, LinkedHashSet<String>>> map = new LinkedHashMap<String, Map<AmenityType, LinkedHashSet<String>>>(); if (query.moveToFirst()) { do { String filterId = query.getString(0); if (!map.containsKey(filterId)) { map.put(filterId, new LinkedHashMap<AmenityType, LinkedHashSet<String>>()); } Map<AmenityType, LinkedHashSet<String>> m = map.get(filterId); AmenityType a = AmenityType.fromString(query.getString(1)); String subCategory = query.getString(2); if (subCategory == null) { m.put(a, null); } else { if (m.get(a) == null) { m.put(a, new LinkedHashSet<String>()); } m.get(a).add(subCategory); } } while (query.moveToNext()); } query.close(); query = conn.rawQuery( "SELECT " + FILTER_COL_ID + ", " + FILTER_COL_NAME + "," + FILTER_COL_FILTERBYNAME + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ FILTER_NAME, null); if (query.moveToFirst()) { do { String filterId = query.getString(0); if (map.containsKey(filterId)) { PoiFilter filter = new PoiFilter(query.getString(1), filterId, map.get(filterId), application); filter.setFilterByName(query.getString(2)); list.add(filter); } } while (query.moveToNext()); } query.close(); } return list; }