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; 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 { public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
private String timestamp; private String timestamp;
private String className; private String className;
private String methodName; private String methodName;
@@ -25,6 +34,10 @@ public class Event {
this.error = error; this.error = error;
} }
public Event() {
}
public String getTimestamp() { public String getTimestamp() {
return timestamp; 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 jakarta.enterprise.context.ApplicationScoped;
import nl.veenm.jobfindr.domain.VacatureDetail; import nl.veenm.jobfindr.domain.VacatureDetail;
import java.time.LocalDate;
import java.util.List;
@ApplicationScoped @ApplicationScoped
public class VacatureDetailRepository implements PanacheRepository<VacatureDetail> { public class VacatureDetailRepository implements PanacheRepository<VacatureDetail> {

View File

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