From 8999283ee7344fd7ec33c8a6cb5a7999e0592074 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 3 Dec 2023 14:08:07 -0800 Subject: Update broadcast interface --- .../traccar/broadcast/BaseBroadcastService.java | 52 +++++++++++++--------- 1 file changed, 31 insertions(+), 21 deletions(-) (limited to 'src/main/java/org/traccar/broadcast/BaseBroadcastService.java') diff --git a/src/main/java/org/traccar/broadcast/BaseBroadcastService.java b/src/main/java/org/traccar/broadcast/BaseBroadcastService.java index a95d333f2..bb220d2bb 100644 --- a/src/main/java/org/traccar/broadcast/BaseBroadcastService.java +++ b/src/main/java/org/traccar/broadcast/BaseBroadcastService.java @@ -16,7 +16,6 @@ package org.traccar.broadcast; import java.util.HashSet; -import java.util.Map; import java.util.Set; import org.traccar.model.BaseModel; @@ -69,9 +68,16 @@ public abstract class BaseBroadcastService implements BroadcastService { } @Override - public void invalidateObject(boolean local, Class clazz, long id) { + public void invalidateObject( + boolean local, + Class clazz, long id, + ObjectOperation operation) { BroadcastMessage message = new BroadcastMessage(); - message.setChanges(Map.of(Permission.getKey(clazz), id)); + var invalidateObject = new BroadcastMessage.InvalidateObject(); + invalidateObject.setClazz(Permission.getKey(clazz)); + invalidateObject.setId(id); + invalidateObject.setOperation(operation); + message.setInvalidateObject(invalidateObject); sendMessage(message); } @@ -79,9 +85,16 @@ public abstract class BaseBroadcastService implements BroadcastService { public void invalidatePermission( boolean local, Class clazz1, long id1, - Class clazz2, long id2) { + Class clazz2, long id2, + boolean link) { BroadcastMessage message = new BroadcastMessage(); - message.setChanges(Map.of(Permission.getKey(clazz1), id1, Permission.getKey(clazz2), id2)); + var invalidatePermission = new BroadcastMessage.InvalidatePermission(); + invalidatePermission.setClazz1(Permission.getKey(clazz1)); + invalidatePermission.setId1(id1); + invalidatePermission.setClazz2(Permission.getKey(clazz2)); + invalidatePermission.setId2(id2); + invalidatePermission.setLink(link); + message.setInvalidatePermission(invalidatePermission); sendMessage(message); } @@ -96,22 +109,19 @@ public abstract class BaseBroadcastService implements BroadcastService { listeners.forEach(listener -> listener.updateEvent(false, message.getUserId(), message.getEvent())); } else if (message.getCommandDeviceId() != null) { listeners.forEach(listener -> listener.updateCommand(false, message.getCommandDeviceId())); - } else if (message.getChanges() != null) { - var iterator = message.getChanges().entrySet().iterator(); - if (iterator.hasNext()) { - var first = iterator.next(); - if (iterator.hasNext()) { - var second = iterator.next(); - listeners.forEach(listener -> listener.invalidatePermission( - false, - Permission.getKeyClass(first.getKey()), first.getValue(), - Permission.getKeyClass(second.getKey()), second.getValue())); - } else { - listeners.forEach(listener -> listener.invalidateObject( - false, - Permission.getKeyClass(first.getKey()), first.getValue())); - } - } + } else if (message.getInvalidateObject() != null) { + var invalidateObject = message.getInvalidateObject(); + listeners.forEach(listeners -> listeners.invalidateObject( + false, + Permission.getKeyClass(invalidateObject.getClazz()), invalidateObject.getId(), + invalidateObject.getOperation())); + } else if (message.getInvalidatePermission() != null) { + var invalidatePermission = message.getInvalidatePermission(); + listeners.forEach(listener -> listener.invalidatePermission( + false, + Permission.getKeyClass(invalidatePermission.getClazz1()), invalidatePermission.getId1(), + Permission.getKeyClass(invalidatePermission.getClazz2()), invalidatePermission.getId2(), + invalidatePermission.getLink())); } } -- cgit v1.2.3