Example usage for com.badlogic.gdx.utils LongMap remove

List of usage examples for com.badlogic.gdx.utils LongMap remove

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils LongMap remove.

Prototype

public V remove(long key) 

Source Link

Usage

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  ww  w .  jav  a2 s.c  o 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;

}