private synchronized void updateLocalTradeSessions(Collection<TradeSession> remoteList) {
    // Get all the local sessions
    Collection<TradeSession> localList = _db.getAll();

    // Iterate over local items to find records to delete or update locally
    Iterator<TradeSession> localIt = localList.iterator();
    while (localIt.hasNext()) {
      TradeSession localItem = localIt.next();
      TradeSession remoteItem = findAndEliminate(localItem, remoteList);
      if (remoteItem == null) {
        // A local item is not in the remote list, remove it locally
        _db.delete(localItem.id);
      } else {
        // A local item is in the new list, see if it needs to be updated
        if (needsUpdate(localItem, remoteItem)) {
          _db.update(remoteItem);
        }
      }
    }

    // Iterate over remaining remote items and insert them
    Iterator<TradeSession> remoteIt = remoteList.iterator();
    while (remoteIt.hasNext()) {
      TradeSession remoteItem = remoteIt.next();
      _db.insert(remoteItem);
    }
  }
 public synchronized Collection<TradeSession> getLocalTradeSessions() {
   return _db.getAll();
 }