public void mergeFromOsmPois(List<Poi> remotePois,Box box){
  List<Poi> toMergePois=new ArrayList<>();
  Map<String,Poi> remotePoisMap=new HashMap<>();
  for (  Poi poi : remotePois) {
    remotePoisMap.put(poi.getBackendId(),poi);
  }
  List<Poi> localPois=poiDao.queryForAllInRect(box);
  Map<String,Poi> localPoisMap=new ConcurrentHashMap<>();
  for (  Poi localPoi : localPois) {
    localPoisMap.put(localPoi.getBackendId(),localPoi);
  }
  for (  Poi remotePoi : remotePois) {
    Poi localPoi=localPoisMap.remove(remotePoi.getBackendId());
    Long localVersion=-1L;
    if (localPoi != null && localPoi.getVersion() != null) {
      localVersion=Long.valueOf(localPoi.getVersion());
    }
    if (Long.valueOf(remotePoi.getVersion()) > localVersion) {
      if (localPoi != null) {
        remotePoi.setId(localPoi.getId());
      }
      toMergePois.add(remotePoi);
    }
  }
  poiDao.delete(localPoisMap.values());
  savePois(toMergePois);
}

public void mergeFromOsmPois ( List < Poi > remotePois , Box box ) { List < Poi > toMergePois = new ArrayList < > ( ) ; Map < String , Poi > remotePoisMap = new HashMap < > ( ) ; for ( Poi poi : remotePois ) { remotePoisMap . put ( poi . getBackendId ( ) , poi ) ; } List < Poi > localPois = poiDao . queryForAllInRect ( box ) ; Map < String , Poi > localPoisMap = new ConcurrentHashMap < > ( ) ; for ( Poi localPoi : localPois ) { localPoisMap . put ( localPoi . getBackendId ( ) , localPoi ) ; } for ( Poi remotePoi : remotePois ) { Poi localPoi = localPoisMap . remove ( remotePoi . getBackendId ( ) ) ; Long localVersion = - 1L ; if ( localPoi != null && localPoi . getVersion ( ) != null ) { localVersion = Long . valueOf ( localPoi . getVersion ( ) ) ; } if ( Long . valueOf ( remotePoi . getVersion ( ) ) > localVersion ) { if ( localPoi != null ) { remotePoi . setId ( localPoi . getId ( ) ) ; } toMergePois . add ( remotePoi ) ; } } poiDao . delete ( localPoisMap . values ( ) ) ; savePois ( toMergePois ) ; }
merge pois in parameters to those already in the database .
