@@ -44,21 +44,25 @@ public class AnalysisOutputListener implements IterationStartsListener, Iteratio
4444 private final TravelTimeRecorder travelTimeRecorder ;
4545
4646 private final int analysisInterval ;
47+ private final int travelTimeInterval ;
48+
4749 private boolean isAnalysisActive = false ;
50+ private boolean isTravelTimeActive = false ;
4851
4952 private final DistanceUnit scenarioDistanceUnit ;
5053 private final DistanceUnit analysisDistanceUnit ;
5154
5255 @ Inject
5356 public AnalysisOutputListener (EqasimConfigGroup config , OutputDirectoryHierarchy outputDirectory ,
54- TripListener tripListener , LegListener legListener , PublicTransportLegListener ptListener ,
55- ActivityListener activityAnalysisListener , TravelTimeRecorder travelTimeRecorder ) {
57+ TripListener tripListener , LegListener legListener , PublicTransportLegListener ptListener ,
58+ ActivityListener activityAnalysisListener , TravelTimeRecorder travelTimeRecorder ) {
5659 this .outputDirectory = outputDirectory ;
5760
5861 this .scenarioDistanceUnit = config .getDistanceUnit ();
5962 this .analysisDistanceUnit = config .getAnalysisDistanceUnit ();
6063
6164 this .analysisInterval = config .getAnalysisInterval ();
65+ this .travelTimeInterval = config .getTravelTimeRecordingInterval ();
6266
6367 this .tripAnalysisListener = tripListener ;
6468 this .legAnalysisListener = legListener ;
@@ -70,15 +74,21 @@ public AnalysisOutputListener(EqasimConfigGroup config, OutputDirectoryHierarchy
7074 @ Override
7175 public void notifyIterationStarts (IterationStartsEvent event ) {
7276 isAnalysisActive = false ;
77+ isTravelTimeActive = false ;
7378
7479 if (analysisInterval > 0 ) {
7580 if (event .getIteration () % analysisInterval == 0 || event .isLastIteration ()) {
7681 isAnalysisActive = true ;
7782 event .getServices ().getEvents ().addHandler (tripAnalysisListener );
7883 event .getServices ().getEvents ().addHandler (legAnalysisListener );
7984 event .getServices ().getEvents ().addHandler (ptAnalysisListener );
85+ }
86+ }
87+
88+ if (travelTimeInterval > 0 ) {
89+ if (event .getIteration () % travelTimeInterval == 0 || event .isLastIteration ()) {
90+ isTravelTimeActive = true ;
8091 event .getServices ().getEvents ().addHandler (activityAnalysisListener );
81- event .getServices ().getEvents ().addHandler (travelTimeRecorder );
8292 }
8393 }
8494 }
@@ -91,7 +101,6 @@ public void notifyIterationEnds(IterationEndsEvent event) {
91101 event .getServices ().getEvents ().removeHandler (legAnalysisListener );
92102 event .getServices ().getEvents ().removeHandler (ptAnalysisListener );
93103 event .getServices ().getEvents ().removeHandler (activityAnalysisListener );
94- event .getServices ().getEvents ().removeHandler (travelTimeRecorder );
95104
96105 new TripWriter (tripAnalysisListener .getTripItems (), scenarioDistanceUnit , analysisDistanceUnit )
97106 .write (outputDirectory .getIterationFilename (event .getIteration (), TRIPS_FILE_NAME ));
@@ -101,11 +110,16 @@ public void notifyIterationEnds(IterationEndsEvent event) {
101110
102111 new ActivityWriter (activityAnalysisListener .getActivityItems ())
103112 .write (outputDirectory .getIterationFilename (event .getIteration (), ACTIVITIES_FILE_NAME ));
104-
113+
105114 new PublicTransportLegWriter (ptAnalysisListener .getTripItems ())
106115 .write (outputDirectory .getIterationFilename (event .getIteration (), PT_FILE_NAME ));
116+ }
117+
118+ if (isTravelTimeActive ) {
119+ event .getServices ().getEvents ().removeHandler (travelTimeRecorder );
107120
108- RecordedTravelTime .writeBinary (outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME ),
121+ RecordedTravelTime .writeBinary (
122+ outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME ),
109123 this .travelTimeRecorder .getTravelTime ());
110124 }
111125 } catch (IOException | InterruptedException e ) {
@@ -122,10 +136,11 @@ public void notifyShutdown(ShutdownEvent event) {
122136 new File (outputDirectory .getOutputFilename (LEGS_FILE_NAME )).toPath ());
123137 Files .copy (new File (outputDirectory .getIterationFilename (event .getIteration (), PT_FILE_NAME )).toPath (),
124138 new File (outputDirectory .getOutputFilename (PT_FILE_NAME )).toPath ());
125- Files .copy (new File (outputDirectory .getIterationFilename (event .getIteration (), ACTIVITIES_FILE_NAME )).toPath (),
139+ Files .copy (
140+ new File (outputDirectory .getIterationFilename (event .getIteration (), ACTIVITIES_FILE_NAME )).toPath (),
126141 new File (outputDirectory .getOutputFilename (ACTIVITIES_FILE_NAME )).toPath ());
127- Files .copy (new File (outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME )). toPath (),
128- new File (outputDirectory .getOutputFilename (TRAVEL_TIMES_FILE_NAME )).toPath ());
142+ Files .copy (new File (outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME ))
143+ . toPath (), new File (outputDirectory .getOutputFilename (TRAVEL_TIMES_FILE_NAME )).toPath ());
129144 } catch (IOException e ) {
130145 }
131146 }
0 commit comments