1 package org.matsim.utils.eventsfilecomparison;
3 import it.unimi.dsi.fastutil.objects.Object2IntMap;
4 import org.apache.logging.log4j.LogManager;
5 import org.apache.logging.log4j.Logger;
9 import javax.annotation.Nullable;
10 import java.io.IOException;
11 import java.io.UncheckedIOException;
12 import java.util.Arrays;
32 if (compareFingerprint != null) {
36 log.warn(
"Could not read compare fingerprint from file: {}", compareFingerprint, e);
51 handler.finishProcessing();
56 handler.setComparisonMessage(err.getMessage());
69 }
catch (IOException e) {
70 throw new UncheckedIOException(e);
73 String logMessage =
"";
75 if (fingerprint1.timeArray.size() != fingerprint2.timeArray.size()) {
76 logMessage =
"Different number of timesteps";
82 if (!Arrays.equals(fingerprint1.timeArray.toFloatArray(), fingerprint2.timeArray.toFloatArray())) {
83 logMessage =
"Different timesteps";
90 boolean countDiffers =
false;
91 for (Object2IntMap.Entry<String> entry1 : fingerprint1.eventTypeCounter.object2IntEntrySet()) {
92 String key = entry1.getKey();
93 int count1 = entry1.getIntValue();
94 int count2 = fingerprint2.eventTypeCounter.getInt(key);
95 if (count1 != count2) {
98 if (!logMessage.isEmpty())
101 logMessage +=
"Count for event type '%s' differs: %d != %d".formatted(key, count1, count2);
105 log.warn(logMessage);
111 byte[] hash1 = fingerprint1.hash;
112 byte[] hash2 = fingerprint2.hash;
113 if (!Arrays.equals(hash1, hash2)) {
115 logMessage = String.format(
"Difference occurred hash codes hash of first file is %s, hash of second is %s", Arrays.toString(hash1), Arrays.toString(hash2));
117 log.warn(logMessage);
static void readEvents(EventsManager events, String filename)
EventsFileFingerprintComparator()
void addHandler(final EventHandler handler)
DIFFERENT_NUMBER_OF_TIMESTEPS
static EventsManager createEventsManager()
static ComparisonResult compareFingerprints(final String fp1, final String fp2)
static FingerprintEventHandler createFingerprintHandler(final String eventsfile, @Nullable String compareFingerprint)
DIFFERENT_EVENT_ATTRIBUTES
static EventFingerprint read(String fingerprintPath)