@@ -44,21 +44,25 @@ public class AnalysisOutputListener implements IterationStartsListener, Iteratio
44
44
private final TravelTimeRecorder travelTimeRecorder ;
45
45
46
46
private final int analysisInterval ;
47
+ private final int travelTimeInterval ;
48
+
47
49
private boolean isAnalysisActive = false ;
50
+ private boolean isTravelTimeActive = false ;
48
51
49
52
private final DistanceUnit scenarioDistanceUnit ;
50
53
private final DistanceUnit analysisDistanceUnit ;
51
54
52
55
@ Inject
53
56
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 ) {
56
59
this .outputDirectory = outputDirectory ;
57
60
58
61
this .scenarioDistanceUnit = config .getDistanceUnit ();
59
62
this .analysisDistanceUnit = config .getAnalysisDistanceUnit ();
60
63
61
64
this .analysisInterval = config .getAnalysisInterval ();
65
+ this .travelTimeInterval = config .getTravelTimeRecordingInterval ();
62
66
63
67
this .tripAnalysisListener = tripListener ;
64
68
this .legAnalysisListener = legListener ;
@@ -70,15 +74,21 @@ public AnalysisOutputListener(EqasimConfigGroup config, OutputDirectoryHierarchy
70
74
@ Override
71
75
public void notifyIterationStarts (IterationStartsEvent event ) {
72
76
isAnalysisActive = false ;
77
+ isTravelTimeActive = false ;
73
78
74
79
if (analysisInterval > 0 ) {
75
80
if (event .getIteration () % analysisInterval == 0 || event .isLastIteration ()) {
76
81
isAnalysisActive = true ;
77
82
event .getServices ().getEvents ().addHandler (tripAnalysisListener );
78
83
event .getServices ().getEvents ().addHandler (legAnalysisListener );
79
84
event .getServices ().getEvents ().addHandler (ptAnalysisListener );
85
+ }
86
+ }
87
+
88
+ if (travelTimeInterval > 0 ) {
89
+ if (event .getIteration () % travelTimeInterval == 0 || event .isLastIteration ()) {
90
+ isTravelTimeActive = true ;
80
91
event .getServices ().getEvents ().addHandler (activityAnalysisListener );
81
- event .getServices ().getEvents ().addHandler (travelTimeRecorder );
82
92
}
83
93
}
84
94
}
@@ -91,7 +101,6 @@ public void notifyIterationEnds(IterationEndsEvent event) {
91
101
event .getServices ().getEvents ().removeHandler (legAnalysisListener );
92
102
event .getServices ().getEvents ().removeHandler (ptAnalysisListener );
93
103
event .getServices ().getEvents ().removeHandler (activityAnalysisListener );
94
- event .getServices ().getEvents ().removeHandler (travelTimeRecorder );
95
104
96
105
new TripWriter (tripAnalysisListener .getTripItems (), scenarioDistanceUnit , analysisDistanceUnit )
97
106
.write (outputDirectory .getIterationFilename (event .getIteration (), TRIPS_FILE_NAME ));
@@ -101,11 +110,16 @@ public void notifyIterationEnds(IterationEndsEvent event) {
101
110
102
111
new ActivityWriter (activityAnalysisListener .getActivityItems ())
103
112
.write (outputDirectory .getIterationFilename (event .getIteration (), ACTIVITIES_FILE_NAME ));
104
-
113
+
105
114
new PublicTransportLegWriter (ptAnalysisListener .getTripItems ())
106
115
.write (outputDirectory .getIterationFilename (event .getIteration (), PT_FILE_NAME ));
116
+ }
117
+
118
+ if (isTravelTimeActive ) {
119
+ event .getServices ().getEvents ().removeHandler (travelTimeRecorder );
107
120
108
- RecordedTravelTime .writeBinary (outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME ),
121
+ RecordedTravelTime .writeBinary (
122
+ outputDirectory .getIterationFilename (event .getIteration (), TRAVEL_TIMES_FILE_NAME ),
109
123
this .travelTimeRecorder .getTravelTime ());
110
124
}
111
125
} catch (IOException | InterruptedException e ) {
@@ -122,10 +136,11 @@ public void notifyShutdown(ShutdownEvent event) {
122
136
new File (outputDirectory .getOutputFilename (LEGS_FILE_NAME )).toPath ());
123
137
Files .copy (new File (outputDirectory .getIterationFilename (event .getIteration (), PT_FILE_NAME )).toPath (),
124
138
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 (),
126
141
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 ());
129
144
} catch (IOException e ) {
130
145
}
131
146
}
0 commit comments