private static void saveWaypointsWithoutTransaction(final Geocache cache) {
        final String geocode = cache.getGeocode();

        final List<Waypoint> waypoints = cache.getWaypoints();
        final List<String> currentWaypointIds = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(waypoints)) {
            for (final Waypoint waypoint : waypoints) {
                final ContentValues values = createWaypointValues(geocode, waypoint);

                if (waypoint.isNewWaypoint()) {
                    final long rowId = database.insert(dbTableWaypoints, null, values);
                    waypoint.setId((int) rowId);
                } else {
                    database.update(dbTableWaypoints, values, "_id = ?", new String[]{Integer.toString(waypoint.getId(), 10)});
                }
                currentWaypointIds.add(Integer.toString(waypoint.getId()));
            }

        }
        removeOutdatedWaypointsOfCache(cache, currentWaypointIds);
    }
Persists the given {@code location} into the database.

@param location a location to save
main/src/main/java/cgeo/geocaching/storage/DataStore.java