websocket :(
database :)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user