private List<FahrzeitEvent> addFahrtInfoToFahrzeitEvents(List<FahrtEvent> fahrtEvents,List<FahrzeitEvent> fahrzeitEvents,boolean keepFahrzeitEventsWithoutFahrtEvent){
  List<FahrzeitEvent> fahrzeitEventsOut=new LinkedList<FahrzeitEvent>();
  Map<String,FahrtEvent> rblDateKursDateTimeIst2FahrtEventMap=new HashMap<String,FahrtEvent>();
  Set<String> searchStrings=new TreeSet<String>();
  for (  FahrtEvent fahrtEvent : fahrtEvents) {
    String searchId=String.valueOf(fahrtEvent.getRblDate()) + String.valueOf(fahrtEvent.getKurs()) + fahrtEvent.getDepartureDateIst()+ fahrtEvent.getDepartureTimeIst();
    if (searchStrings.contains(searchId)) {
      log.warn("Search string already exists. This should not happen. " + searchId);
    }
 else {
      searchStrings.add(searchId);
      rblDateKursDateTimeIst2FahrtEventMap.put(searchId,fahrtEvent);
    }
  }
  int numberOfMissingFahrtEvents=0;
  for (  FahrzeitEvent fahrzeitEvent : fahrzeitEvents) {
    String searchId=String.valueOf(fahrzeitEvent.getRblDate()) + String.valueOf(fahrzeitEvent.getKurs()) + fahrzeitEvent.getDepartureDateIst()+ fahrzeitEvent.getDepartureTimeIst();
    FahrtEvent fahrtEvent=rblDateKursDateTimeIst2FahrtEventMap.get(searchId);
    if (fahrtEvent == null) {
      numberOfMissingFahrtEvents++;
      if (keepFahrzeitEventsWithoutFahrtEvent) {
        fahrzeitEventsOut.add(fahrzeitEvent);
      }
    }
 else {
      fahrzeitEvent.add(fahrtEvent);
      fahrzeitEventsOut.add(fahrzeitEvent);
    }
  }
  log.info(numberOfMissingFahrtEvents + " fahrzeit events could not be linked to a fahrt event");
  log.info("Returning " + fahrzeitEventsOut.size() + " fahrzeitEvents");
  return fahrzeitEventsOut;
}

private List < FahrzeitEvent > addFahrtInfoToFahrzeitEvents ( List < FahrtEvent > fahrtEvents , List < FahrzeitEvent > fahrzeitEvents , boolean keepFahrzeitEventsWithoutFahrtEvent ) { List < FahrzeitEvent > fahrzeitEventsOut = new LinkedList < FahrzeitEvent > ( ) ; Map < String , FahrtEvent > rblDateKursDateTimeIst2FahrtEventMap = new HashMap < String , FahrtEvent > ( ) ; Set < String > searchStrings = new TreeSet < String > ( ) ; for ( FahrtEvent fahrtEvent : fahrtEvents ) { String searchId = String . valueOf ( fahrtEvent . getRblDate ( ) ) + String . valueOf ( fahrtEvent . getKurs ( ) ) + fahrtEvent . getDepartureDateIst ( ) + fahrtEvent . getDepartureTimeIst ( ) ; if ( searchStrings . contains ( searchId ) ) { log . warn ( "Search string already exists. This should not happen. " + searchId ) ; } else { searchStrings . add ( searchId ) ; rblDateKursDateTimeIst2FahrtEventMap . put ( searchId , fahrtEvent ) ; } } int numberOfMissingFahrtEvents = 0 ; for ( FahrzeitEvent fahrzeitEvent : fahrzeitEvents ) { String searchId = String . valueOf ( fahrzeitEvent . getRblDate ( ) ) + String . valueOf ( fahrzeitEvent . getKurs ( ) ) + fahrzeitEvent . getDepartureDateIst ( ) + fahrzeitEvent . getDepartureTimeIst ( ) ; FahrtEvent fahrtEvent = rblDateKursDateTimeIst2FahrtEventMap . get ( searchId ) ; if ( fahrtEvent == null ) { numberOfMissingFahrtEvents ++ ; if ( keepFahrzeitEventsWithoutFahrtEvent ) { fahrzeitEventsOut . add ( fahrzeitEvent ) ; } } else { fahrzeitEvent . add ( fahrtEvent ) ; fahrzeitEventsOut . add ( fahrzeitEvent ) ; } } log . info ( numberOfMissingFahrtEvents + " fahrzeit events could not be linked to a fahrt event" ) ; log . info ( "Returning " + fahrzeitEventsOut . size ( ) + " fahrzeitEvents" ) ; return fahrzeitEventsOut ; }
link fahrzeit events to the corresponding fahrt event
