fix: alert visualizer does sometihing

This commit is contained in:
Krzysztof Rudnicki 2025-04-20 14:28:21 +02:00
parent be94f2dd00
commit 81532221d4
2 changed files with 27 additions and 2 deletions

View File

@ -2,6 +2,11 @@ package com.anomaly.visualizer;
import com.anomaly.model.TransactionAlert;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import org.apache.kafka.clients.consumer.*;
import org.apache.kafka.common.serialization.StringDeserializer;
//import org.slf4j.Logger;
@ -10,6 +15,7 @@ import org.apache.kafka.common.serialization.StringDeserializer;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.lang.reflect.Type;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneId;
@ -22,7 +28,11 @@ public class AlertVisualizer {
private static final String BOOTSTRAP_SERVERS = "localhost:9092";
private static final String GROUP_ID = "alert-visualizer-group";
private static final String TOPIC = "alerts";
private static final Gson gson = new Gson();
// Custom Gson instance with Instant type adapter
private static final Gson gson = new GsonBuilder()
.registerTypeAdapter(Instant.class, new InstantDeserializer())
.create();
// UI Components
private static JFrame frame;
@ -33,6 +43,21 @@ public class AlertVisualizer {
private static final DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
// Custom deserializer for Instant
private static class InstantDeserializer implements JsonDeserializer<Instant> {
@Override
public Instant deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
try {
// Try parsing as long (epoch milliseconds)
return Instant.ofEpochMilli(json.getAsLong());
} catch (NumberFormatException e) {
// Try parsing as ISO-8601 string
return Instant.parse(json.getAsString());
}
}
}
public static void main(String[] args) {
setupUI();

View File

@ -21,7 +21,7 @@ public class TransactionGenerator {
private static final int ANOMALY_FREQUENCY = 3;
// Probability of generating an anomaly (1%)
private static final double ANOMALY_PROBABILITY = 0.01;
private static final double ANOMALY_PROBABILITY = 0.5;
// Initialize card and user data
static {