List of usage examples for com.badlogic.gdx.utils LongMap clear
public void clear()
From source file:de.longri.cachebox3.sqlite.dao.CacheListDAO.java
License:Open Source License
public CacheList ReadCacheList(CacheList cacheList, String join, String where, boolean withDescription, boolean fullDetails, boolean loadAllWaypoints) { if (cacheList == null) return null; // Clear List before read cacheList.clear();/*from w ww .j av a 2s .co m*/ boolean error = false; log.trace("ReadCacheList 1.Waypoints"); LongMap<CB_List<Waypoint>> waypoints = new LongMap<CB_List<Waypoint>>(); // zuerst alle Waypoints einlesen CB_List<Waypoint> wpList = new CB_List<Waypoint>(); long aktCacheID = -1; String sql = fullDetails ? WaypointDAO.SQL_WP_FULL : WaypointDAO.SQL_WP; if (!((fullDetails || loadAllWaypoints))) { // when CacheList should be loaded without full details and without all Waypoints // do not load all waypoints from db! sql += " WHERE IsStart=\"true\" or Type=" + CacheTypes.Final.ordinal(); // StartWaypoint or CacheTypes.Final } sql += " ORDER BY 'CacheId'"; SQLiteGdxDatabaseCursor reader = Database.Data.rawQuery(sql, null); if (reader == null) return cacheList; reader.moveToFirst(); while (!reader.isAfterLast()) { WaypointDAO waypointDAO = new WaypointDAO(); Waypoint wp = waypointDAO.getWaypoint(reader, fullDetails); if (!(fullDetails || loadAllWaypoints)) { // wenn keine FullDetails geladen werden sollen dann sollen nur die Finals und Start-Waypoints geladen werden if (!(wp.IsStart || wp.Type == CacheTypes.Final)) { reader.moveToNext(); continue; } } if (wp.CacheId != aktCacheID) { aktCacheID = wp.CacheId; wpList = new CB_List<Waypoint>(); waypoints.put(aktCacheID, wpList); } wpList.add(wp); reader.moveToNext(); } reader.close(); log.debug(wpList.size() + " Waypoints readed!"); log.debug("ReadCacheList 2.Caches"); try { if (fullDetails) { sql = SQL.SQL_GET_CACHE + ", " + SQL.SQL_DETAILS; if (withDescription) { // load Cache with Description, Solver, Notes for Transfering Data from Server to ACB sql += "," + SQL.SQL_GET_DETAIL_WITH_DESCRIPTION; } } else { sql = SQL.SQL_GET_CACHE; } sql += " FROM `Caches` AS `c` " + join + " " + ((where.length() > 0) ? "WHERE " + where : where); reader = Database.Data.rawQuery(sql, null); } catch (Exception e) { log.error("CacheList.LoadCaches() sql+ \n" + sql, e); error = true; } if (!error) { reader.moveToFirst(); CacheDAO cacheDAO = new CacheDAO(); while (!reader.isAfterLast()) { Cache cache = cacheDAO.ReadFromCursor(reader, fullDetails, withDescription); boolean doAdd = true; if (FilterInstances.hasCorrectedCoordinates != 0) { if (waypoints.containsKey(cache.Id)) { CB_List<Waypoint> tmpwaypoints = waypoints.get(cache.Id); for (int i = 0, n = tmpwaypoints.size(); i < n; i++) { cache.waypoints.add(tmpwaypoints.get(i)); } } boolean hasCorrectedCoordinates = cache.CorrectedCoordiantesOrMysterySolved(); if (FilterInstances.hasCorrectedCoordinates < 0) { // show only those without corrected ones if (hasCorrectedCoordinates) doAdd = false; } else if (FilterInstances.hasCorrectedCoordinates > 0) { // only those with corrected ones if (!hasCorrectedCoordinates) doAdd = false; } } if (doAdd) { cacheList.add(cache); cache.waypoints.clear(); if (waypoints.containsKey(cache.Id)) { CB_List<Waypoint> tmpwaypoints = waypoints.get(cache.Id); for (int i = 0, n = tmpwaypoints.size(); i < n; i++) { cache.waypoints.add(tmpwaypoints.get(i)); } waypoints.remove(cache.Id); } } // ++Global.CacheCount; reader.moveToNext(); } reader.close(); } else { log.error("Corrupt database try cache by cache"); // get all id's reader = Database.Data.rawQuery(SQL.SQL_ALL_CACHE_IDS, null); reader.moveToFirst(); ArrayList<Long> idList = new ArrayList<Long>(reader.getCount()); while (!reader.isAfterLast()) { idList.add(reader.getLong(0)); reader.moveToNext(); } CacheDAO cacheDAO = new CacheDAO(); for (Long id : idList) { Cache cache = null; try { cache = cacheDAO.getFromDbByCacheId(id); } catch (Exception e) { log.error("Can't read Cache (id:" + id + ") from database."); try { Database.Data.delete("Caches", "id=" + id, null); } catch (Exception e1) { log.error("Can't delete this Cache. Skip it!"); } continue; } boolean doAdd = true; if (FilterInstances.hasCorrectedCoordinates != 0) { if (waypoints.containsKey(cache.Id)) { CB_List<Waypoint> tmpwaypoints = waypoints.get(cache.Id); for (int i = 0, n = tmpwaypoints.size(); i < n; i++) { cache.waypoints.add(tmpwaypoints.get(i)); } } boolean hasCorrectedCoordinates = cache.CorrectedCoordiantesOrMysterySolved(); if (FilterInstances.hasCorrectedCoordinates < 0) { // show only those without corrected ones if (hasCorrectedCoordinates) doAdd = false; } else if (FilterInstances.hasCorrectedCoordinates > 0) { // only those with corrected ones if (!hasCorrectedCoordinates) doAdd = false; } } if (doAdd) { cacheList.add(cache); cache.waypoints.clear(); if (waypoints.containsKey(cache.Id)) { CB_List<Waypoint> tmpwaypoints = waypoints.get(cache.Id); for (int i = 0, n = tmpwaypoints.size(); i < n; i++) { cache.waypoints.add(tmpwaypoints.get(i)); } waypoints.remove(cache.Id); } } } } // clear other never used WP`s from Mem waypoints.clear(); waypoints = null; // do it manual (or automated after fix), got hanging app on startup // log.debug( "ReadCacheList 3.Sorting"); try { // Collections.sort(cacheList); } catch ( Exception e) { // log.error( "CacheListDAO.ReadCacheList()", "Sort ERROR", e); } // log.debug( "ReadCacheList 4. ready"); return cacheList; }