websocket :(

database :)
This commit is contained in:
2025-01-20 22:13:39 +01:00
parent 79473e4cfc
commit c696d61091
5 changed files with 36 additions and 59 deletions

View File

@@ -1,6 +1,15 @@
package nl.veenm.jobfindr.domain;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
private String timestamp;
private String className;
private String methodName;
@@ -25,6 +34,10 @@ public class Event {
this.error = error;
}
public Event() {
}
public String getTimestamp() {
return timestamp;
}

View File

@@ -0,0 +1,12 @@
package nl.veenm.jobfindr.repository;
import io.quarkus.hibernate.orm.panache.PanacheRepository;
import jakarta.enterprise.context.ApplicationScoped;
import nl.veenm.jobfindr.domain.Event;
import nl.veenm.jobfindr.domain.VacatureDetail;
@ApplicationScoped
public class EventRepository implements PanacheRepository<Event> {
}

View File

@@ -4,10 +4,6 @@ import io.quarkus.hibernate.orm.panache.PanacheRepository;
import jakarta.enterprise.context.ApplicationScoped;
import nl.veenm.jobfindr.domain.VacatureDetail;
import java.time.LocalDate;
import java.util.List;
@ApplicationScoped
public class VacatureDetailRepository implements PanacheRepository<VacatureDetail> {

View File

@@ -3,6 +3,7 @@ package nl.veenm.jobfindr.util;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import nl.veenm.jobfindr.domain.Event;
import nl.veenm.jobfindr.repository.EventRepository;
import java.time.Instant;
@@ -10,7 +11,8 @@ import java.time.Instant;
public class EventService {
@Inject
EventWebSocket eventWebSocket;
EventRepository eventRepository;
public void logInfo(String className, String methodName, String message) {
// Maak een nieuw event
@@ -23,8 +25,7 @@ public class EventService {
// Bericht
);
// Verstuur het event via WebSocket
eventWebSocket.sendEvent(event);
saveEvent(event);
}
public void logSucces(String className, String methodName, String message) {
@@ -38,9 +39,9 @@ public class EventService {
// Bericht
);
// Verstuur het event via WebSocket
eventWebSocket.sendEvent(event);
saveEvent(event);
}
public void logError(String className, String methodName, String message, Exception e) {
// Maak een nieuw event
Event event = new Event(
@@ -53,7 +54,10 @@ public class EventService {
// Bericht
);
// Verstuur het event via WebSocket
eventWebSocket.sendEvent(event);
saveEvent(event);
}
private void saveEvent(Event event) {
eventRepository.persist(event);
}
}

View File

@@ -1,48 +0,0 @@
package nl.veenm.jobfindr.util;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;
import nl.veenm.jobfindr.domain.Event;
import org.jboss.logging.Logger;
import jakarta.enterprise.context.ApplicationScoped;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@ServerEndpoint("/events")
@ApplicationScoped
public class EventWebSocket {
private static final Logger logger = Logger.getLogger(EventWebSocket.class);
private final Set<Session> sessions = ConcurrentHashMap.newKeySet();
private final ObjectMapper objectMapper = new ObjectMapper(); // Om objecten naar JSON te serialiseren
@OnOpen
public void onOpen(Session session) {
logger.info("event websocket opened: " + session.getId());
sessions.add(session);
}
public void sendEvent(Event event) {
String jsonEvent;
try {
jsonEvent = objectMapper.writeValueAsString(event); // Event naar JSON converteren
} catch (IOException e) {
logger.error(e);
return;
}
for (Session session : sessions) {
if (session.isOpen()) {
try {
session.getBasicRemote().sendText(jsonEvent);
} catch (IOException e) {
logger.error(e);
}
}
}
}
}