MATSIM
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.utils.eventsfilecomparison.FingerprintEventHandler Class Reference
Inheritance diagram for org.matsim.utils.eventsfilecomparison.FingerprintEventHandler:
Inheritance graph
[legend]

Public Member Functions

 FingerprintEventHandler ()
 
 FingerprintEventHandler (EventFingerprint compareFingerprint)
 
EventFingerprint getEventFingerprint ()
 
ComparisonResult getComparisonResult ()
 
String getComparisonMessage ()
 
void handleEvent (Event event)
 
default void reset (int iteration)
 

Private Member Functions

void accumulateHash ()
 
String toLexicographicSortedString (Event event)
 

Private Attributes

final EventFingerprint eventFingerprint = new EventFingerprint()
 
final List< String > hashAccumulationList = new ArrayList<>()
 
final EventFingerprint compareFingerprint
 
FloatListIterator iterator = null
 
ComparisonResult comparisonResult
 
String comparisonMessage
 

Static Private Attributes

static final float EPS = 1e-8f
 

Detailed Description

Handler for creating and comparing EventFingerprint.

Definition at line 13 of file FingerprintEventHandler.java.

Constructor & Destructor Documentation

◆ FingerprintEventHandler() [1/2]

org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.FingerprintEventHandler ( )

Definition at line 43 of file FingerprintEventHandler.java.

43  {
44  this.compareFingerprint = null;
45  }

◆ FingerprintEventHandler() [2/2]

org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.FingerprintEventHandler ( EventFingerprint  compareFingerprint)

Member Function Documentation

◆ getEventFingerprint()

EventFingerprint org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.getEventFingerprint ( )

◆ getComparisonResult()

ComparisonResult org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.getComparisonResult ( )

◆ getComparisonMessage()

String org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.getComparisonMessage ( )

◆ handleEvent()

void org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.handleEvent ( Event  event)

Implements org.matsim.core.events.handler.BasicEventHandler.

Definition at line 73 of file FingerprintEventHandler.java.

References org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.accumulateHash(), org.matsim.utils.eventsfilecomparison.ComparisonResult.DIFFERENT_TIMESTEPS, org.matsim.api.core.v01.events.Event.getEventType(), org.matsim.api.core.v01.events.Event.getTime(), and org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.toLexicographicSortedString().

73  {
74 
75 
76  String lexicographicSortedString = toLexicographicSortedString(event);
77 
78  if (compareFingerprint != null) {
79  if (iterator == null) {
80  this.iterator = compareFingerprint.timeArray.iterator();
81  }
82 
83  if (this.comparisonResult == null) {
84  if (iterator.hasNext()) {
85  float entry = iterator.nextFloat();
86  //Comparing floats with precision
87  if (Math.abs((float) event.getTime() - entry) >= EPS) {
88  this.comparisonResult = ComparisonResult.DIFFERENT_TIMESTEPS;
89  this.comparisonMessage = "Difference occurred in this event time=" + event.getTime() + lexicographicSortedString;
90  }
91  } else {
92  this.comparisonResult = ComparisonResult.DIFFERENT_TIMESTEPS;
93  this.comparisonMessage = "Additional event time=" + event.getTime() + lexicographicSortedString;
94  }
95  }
96  }
97 
98  eventFingerprint.addEventType(event.getEventType());
99 
100 
101  //First timestep, nothing to accumulate
102  if (eventFingerprint.timeArray.isEmpty()) {
103  hashAccumulationList.add(lexicographicSortedString);
104  } else {
105  float lastTime = eventFingerprint.timeArray.getFloat(eventFingerprint.timeArray.size() - 1);
106  //If new time is the same as previous, add to accumulation list, event hash calculation is not ready
107  if (lastTime == event.getTime()) {
108  hashAccumulationList.add(lexicographicSortedString);
109  }
110  //if new time differs from previous, all hash can be calculated
111  else {
112  accumulateHash();
113  hashAccumulationList.add(lexicographicSortedString);
114  }
115  }
116 
117  eventFingerprint.addTimeStamp(event.getTime());
118 
119  //eventFingerprint.addHashCode(lexicographicSortedString);
120  }
Here is the call graph for this function:

◆ accumulateHash()

void org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.accumulateHash ( )
private

◆ toLexicographicSortedString()

String org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.toLexicographicSortedString ( Event  event)
private

Definition at line 183 of file FingerprintEventHandler.java.

References org.matsim.api.core.v01.events.Event.ATTRIBUTE_TIME, org.matsim.api.core.v01.events.Event.ATTRIBUTE_X, org.matsim.api.core.v01.events.Event.ATTRIBUTE_Y, and org.matsim.api.core.v01.events.Event.getAttributes().

Referenced by org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.handleEvent().

183  {
184  List<String> strings = new ArrayList<String>();
185  for (Map.Entry<String, String> e : event.getAttributes().entrySet()) {
186  StringBuilder tmp = new StringBuilder();
187  final String key = e.getKey();
188 
189  // don't look at certain attributes
190  switch (key) {
191  case Event.ATTRIBUTE_X:
192  case Event.ATTRIBUTE_Y:
193  case Event.ATTRIBUTE_TIME:
194  continue;
195  }
196 
197  tmp.append(key);
198  tmp.append("=");
199  tmp.append(e.getValue());
200  strings.add(tmp.toString());
201  }
202  Collections.sort(strings);
203  StringBuilder eventStr = new StringBuilder();
204  for (String str : strings) {
205  eventStr.append(" | ");
206  eventStr.append(str);
207  }
208 
209  eventStr.append(" | ");
210  return eventStr.toString();
211  }
Here is the call graph for this function:

◆ reset()

default void org.matsim.core.events.handler.EventHandler.reset ( int  iteration)
inherited

Gives the event handler the possibility to clean up its internal state. Within a Controler-Simulation, this is called before the mobsim starts.

Parameters
iterationthe up-coming iteration from which up-coming events will be from.

Implemented in org.matsim.analysis.linkpaxvolumes.LinkPaxVolumesAnalysis, org.matsim.core.trafficmonitoring.TravelTimeCalculator, org.matsim.withinday.replanning.identifiers.tools.ActivityReplanningMap, org.matsim.analysis.VolumesAnalyzer, org.matsim.withinday.trafficmonitoring.WithinDayTravelTime, org.matsim.analysis.pt.stop2stop.PtStop2StopAnalysis, org.matsim.pt.analysis.TransitLoad, ch.sbb.matsim.routing.pt.raptor.OccupancyTracker, org.matsim.core.scoring.EventsToLegs, org.matsim.core.events.algorithms.SnapshotGenerator, org.matsim.analysis.LegHistogram, org.matsim.withinday.replanning.identifiers.tools.LinkReplanningMap, org.matsim.withinday.trafficmonitoring.EarliestLinkExitTimeProvider, org.matsim.analysis.CalcLegTimes, org.matsim.core.events.algorithms.EventWriterTXT, org.matsim.core.scoring.EventsToLegsAndActivities, org.matsim.core.scoring.EventsToActivities, org.matsim.pt.analysis.TransitRouteAccessEgressAnalysis, org.matsim.pt.analysis.RouteOccupancy, org.matsim.core.events.algorithms.EventWriterXML, org.matsim.pt.analysis.RouteTimeDiagram, org.matsim.core.events.algorithms.EventWriterJson, org.matsim.withinday.trafficmonitoring.LinkEnteredProvider, org.matsim.analysis.personMoney.PersonMoneyEventsAggregator, org.matsim.analysis.personMoney.PersonMoneyEventsCollector, org.matsim.pt.analysis.VehicleTracker, org.matsim.withinday.trafficmonitoring.TransportModeProvider, org.matsim.core.events.algorithms.Vehicle2DriverEventHandler, and org.matsim.core.events.MobsimScopeEventHandler.

Definition at line 45 of file EventHandler.java.

Referenced by org.matsim.core.events.EventsManagerImpl.resetHandlers(), and org.matsim.core.events.SingleHandlerEventsManager.resetHandlers().

45 {}

Member Data Documentation

◆ eventFingerprint

final EventFingerprint org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.eventFingerprint = new EventFingerprint()
private

◆ EPS

final float org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.EPS = 1e-8f
staticprivate

Precision for timestamp comparison.

Definition at line 23 of file FingerprintEventHandler.java.

◆ hashAccumulationList

final List<String> org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.hashAccumulationList = new ArrayList<>()
private

Accumulate all event strings for same timestamps.

Definition at line 28 of file FingerprintEventHandler.java.

◆ compareFingerprint

final EventFingerprint org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.compareFingerprint
private

Existing fingerprint for comparison against event file. Can be null, then no comparison is performed.

Definition at line 33 of file FingerprintEventHandler.java.

Referenced by org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.FingerprintEventHandler().

◆ iterator

FloatListIterator org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.iterator = null
private

Definition at line 35 of file FingerprintEventHandler.java.

◆ comparisonResult

ComparisonResult org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.comparisonResult
private

◆ comparisonMessage

String org.matsim.utils.eventsfilecomparison.FingerprintEventHandler.comparisonMessage
private

The documentation for this class was generated from the following file: