přepracování Refaktor switch-case na mapu handlerů
parent
465879cdae
commit
86af127945
|
|
@ -1,10 +1,13 @@
|
||||||
package jnet.client;
|
package jnet.client;
|
||||||
|
|
||||||
import jnet.client.gui.MapTree;
|
|
||||||
import jnet.client.gui.MapView;
|
|
||||||
import jnet.client.gui.Tray;
|
|
||||||
import jnet.client.network.NettyClient;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import jnet.client.gui.MapTree;
|
||||||
|
import jnet.client.gui.Tray;
|
||||||
|
import jnet.client.gui.UIUpdater;
|
||||||
|
import jnet.client.network.NettyClient;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.Message;
|
import jnet.lib.Message;
|
||||||
import jnet.lib.object.Event;
|
import jnet.lib.object.Event;
|
||||||
|
|
@ -18,102 +21,112 @@ import jnet.lib.object.User;
|
||||||
|
|
||||||
public class ClientMessageParser {
|
public class ClientMessageParser {
|
||||||
|
|
||||||
|
private static final java.util.Map<Integer, Consumer<Message>> handlers = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
handlers.put(Message.CLIENT_VERSION, ClientMessageParser::handleClientVersion);
|
||||||
|
handlers.put(Message.UPDATE, ClientMessageParser::handleUpdate);
|
||||||
|
handlers.put(Message.AUTH_REQUEST, ClientMessageParser::handleAuthRequest);
|
||||||
|
handlers.put(Message.AUTH_SUCEFULL, ClientMessageParser::handleAuthSuccessful);
|
||||||
|
handlers.put(Message.AUTH_FAIL, ClientMessageParser::handleAuthFail);
|
||||||
|
handlers.put(Message.ONLINE_CLIENTS, ClientMessageParser::handleOnlineClients);
|
||||||
|
handlers.put(Message.OBJECT_TYPE, ClientMessageParser::handleObjectType);
|
||||||
|
handlers.put(Message.USER, ClientMessageParser::handleUser);
|
||||||
|
handlers.put(Message.USER_INFO, ClientMessageParser::handleUserInfo);
|
||||||
|
handlers.put(Message.MAP, ClientMessageParser::handleMap);
|
||||||
|
handlers.put(Message.OBJECT_LIST, ClientMessageParser::handleObjectList);
|
||||||
|
handlers.put(Message.STATUS_UPDATE, ClientMessageParser::handleStatusUpdate);
|
||||||
|
handlers.put(Message.SET_MAP_LOCK, ClientMessageParser::handleSetMapLock);
|
||||||
|
handlers.put(Message.SNMP_PROFILE, ClientMessageParser::handleSnmpProfile);
|
||||||
|
handlers.put(Message.EVENT_LIST, ClientMessageParser::handleEventList);
|
||||||
|
handlers.put(Message.EVENT_NEW, ClientMessageParser::handleEventNew);
|
||||||
|
handlers.put(Message.EVENT_UPDATE, ClientMessageParser::handleEventUpdate);
|
||||||
|
handlers.put(Message.ADD_OBJECT, ClientMessageParser::handleAddObject);
|
||||||
|
handlers.put(Message.REMOVE_OBJECT, ClientMessageParser::handleRemoveObject);
|
||||||
|
handlers.put(Message.UPDATE_OBJECT, ClientMessageParser::handleUpdateObject);
|
||||||
|
handlers.put(Message.MAP_REMOVE, ClientMessageParser::handleMapRemove);
|
||||||
|
handlers.put(Message.USER_EDIT, ClientMessageParser::handleUserEdit);
|
||||||
|
handlers.put(Message.DELETE_LOG, ClientMessageParser::handleDeleteLog);
|
||||||
|
handlers.put(Message.SERVER_CONFIG, ClientMessageParser::handleServerConfig);
|
||||||
|
}
|
||||||
|
|
||||||
public static void parse(Message msg) {
|
public static void parse(Message msg) {
|
||||||
|
|
||||||
LogFile.printDebug("-> Message type: " + msg.getType());
|
LogFile.printDebug("-> Message type: " + msg.getType());
|
||||||
|
handlers.getOrDefault(msg.getType(), m -> LogFile.printErr("Neznámý typ zprávy")).accept(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleClientVersion(Message msg) {
|
||||||
switch (msg.getType()) {
|
|
||||||
|
|
||||||
case Message.CLIENT_VERSION:
|
|
||||||
NettyClient.send(Message.CLIENT_VERSION, Client.CLIENT_VERSION);
|
NettyClient.send(Message.CLIENT_VERSION, Client.CLIENT_VERSION);
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.UPDATE:
|
private static void handleUpdate(Message msg) {
|
||||||
LogFile.printInfo("Received update request");
|
LogFile.printInfo("Received update request");
|
||||||
// String[] run = {"java", "-jar", "Updater.jar"};
|
// TODO: Dialogové okno s informací o aktualizaci a odpočtem k jejímu provedení
|
||||||
// // TODO po přijetí pozadavku dialogove okno s informaci ze dojde k aktualizace a odpoctem k jejimu provedeni
|
}
|
||||||
// try {
|
|
||||||
// // odpoji se
|
|
||||||
// client.disconnect();
|
|
||||||
// // spusti updater
|
|
||||||
// Runtime.getRuntime().exec(run);
|
|
||||||
// // vypne program
|
|
||||||
// System.exit(0);
|
|
||||||
// } catch (IOException ex) {
|
|
||||||
// LogFile.printErr("Client update exception: " + ex.getMessage());
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.AUTH_REQUEST:
|
private static void handleAuthRequest(Message msg) {
|
||||||
String[] userPass = {Client.config.getString("user"), Client.config.getString("password"), String.valueOf(OnlineClients.PLATFORM_PC)};
|
String[] userPass = {Client.config.getString("user"), Client.config.getString("password"), String.valueOf(OnlineClients.PLATFORM_PC)};
|
||||||
NettyClient.send(Message.AUTH, userPass);
|
NettyClient.send(Message.AUTH, userPass);
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.AUTH_SUCEFULL:
|
private static void handleAuthSuccessful(Message msg) {
|
||||||
LogFile.printInfo("Log in to server");
|
LogFile.printInfo("Log in to server");
|
||||||
Client.setConnected();
|
Client.setConnected();
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.AUTH_FAIL:
|
private static void handleAuthFail(Message msg) {
|
||||||
LogFile.printInfo("Authorization failed on server");
|
LogFile.printInfo("Authorization failed on server");
|
||||||
// TODO co dal ? když se nepřihlásí ? někam vypsat informaci nebo otevřít okno s informací ?
|
// TODO: Otevřít okno s informací o neúspěšném přihlášení
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.ONLINE_CLIENTS:
|
private static void handleOnlineClients(Message msg) {
|
||||||
Client.onlineClients = (ArrayList<OnlineClients>) msg.getMsg();
|
Client.onlineClients = (ArrayList<OnlineClients>) msg.getMsg();
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.OBJECT_TYPE:
|
private static void handleObjectType(Message msg) {
|
||||||
Client.objectType.add((ObjectType) msg.getMsg());
|
Client.objectType.add((ObjectType) msg.getMsg());
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.USER:
|
private static void handleUser(Message msg) {
|
||||||
Client.users.add((User) msg.getMsg());
|
Client.users.add((User) msg.getMsg());
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.USER_INFO:
|
private static void handleUserInfo(Message msg) {
|
||||||
Client.user = (User) msg.getMsg();
|
Client.user = (User) msg.getMsg();
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.MAP:
|
private static void handleMap(Message msg) {
|
||||||
// pridani do arraylistu
|
Client.maps.add((Map) (Map) msg.getMsg());
|
||||||
Client.maps.add((Map) msg.getMsg());
|
// aktualizace UI
|
||||||
// pridani do stromu map o refres se postara pri pridavani
|
UIUpdater.updateMapTree();
|
||||||
MapTree.reload();
|
UIUpdater.updateTray();
|
||||||
// aktualizace tray icon
|
}
|
||||||
Tray.refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.OBJECT_LIST:
|
private static void handleObjectList(Message msg) {
|
||||||
Client.mapObject = (ArrayList<MapObject>) msg.getMsg();
|
Client.mapObject = (ArrayList<MapObject>) msg.getMsg();
|
||||||
// pridani do stromu map o refres se postara pri pridavani
|
// aktualizace UI
|
||||||
MapTree.reload();
|
UIUpdater.updateMapTree();
|
||||||
// aktualizace tray icon
|
UIUpdater.updateTray();
|
||||||
Tray.refresh();
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.STATUS_UPDATE:
|
private static void handleStatusUpdate(Message msg) {
|
||||||
int[] o = (int[]) msg.getMsg();
|
int[] o = (int[]) msg.getMsg();
|
||||||
int status = o[1];
|
|
||||||
int obj_id = o[0];
|
int obj_id = o[0];
|
||||||
|
int status = o[1];
|
||||||
|
|
||||||
for (MapObject mapObject : Client.mapObject) {
|
for (MapObject mapObject : Client.mapObject) {
|
||||||
if (mapObject.getId() == obj_id) {
|
if (mapObject.getId() == obj_id) {
|
||||||
// nastaveni statusu objektu
|
|
||||||
mapObject.setStatus(status);
|
mapObject.setStatus(status);
|
||||||
// aktualizace pohledu map
|
// aktualizace UI
|
||||||
MapView.updateMapView(mapObject.getId());
|
UIUpdater.updateMapTree();
|
||||||
//aktualizace seznamu map
|
UIUpdater.updateTray();
|
||||||
MapTree.reload();
|
|
||||||
// aktualizace tray icon
|
|
||||||
Tray.refresh();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SoundManager.changeStatus(status);
|
SoundManager.changeStatus(status);
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.SET_MAP_LOCK:
|
private static void handleSetMapLock(Message msg) {
|
||||||
int[] data_lock = (int[]) msg.getMsg();
|
int[] data_lock = (int[]) msg.getMsg();
|
||||||
for (Map map : Client.maps) {
|
for (Map map : Client.maps) {
|
||||||
if (map.getId() == data_lock[0]) {
|
if (map.getId() == data_lock[0]) {
|
||||||
|
|
@ -121,20 +134,21 @@ public class ClientMessageParser {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.SNMP_PROFILE:
|
private static void handleSnmpProfile(Message msg) {
|
||||||
Client.snmpProfile.add((SnmpProfile) msg.getMsg());
|
Client.snmpProfile.add((SnmpProfile) msg.getMsg());
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.EVENT_LIST:
|
private static void handleEventList(Message msg) {
|
||||||
Client.events = ((ArrayList<Event>) msg.getMsg());
|
Client.events = (ArrayList<Event>) msg.getMsg();
|
||||||
break;
|
}
|
||||||
case Message.EVENT_NEW:
|
|
||||||
|
private static void handleEventNew(Message msg) {
|
||||||
Client.events.add((Event) msg.getMsg());
|
Client.events.add((Event) msg.getMsg());
|
||||||
break;
|
}
|
||||||
|
|
||||||
case Message.EVENT_UPDATE:
|
private static void handleEventUpdate(Message msg) {
|
||||||
Event event_update = (Event) msg.getMsg();
|
Event event_update = (Event) msg.getMsg();
|
||||||
for (int i = 0; i < Client.events.size(); i++) {
|
for (int i = 0; i < Client.events.size(); i++) {
|
||||||
if (event_update.getId() == Client.events.get(i).getId()) {
|
if (event_update.getId() == Client.events.get(i).getId()) {
|
||||||
|
|
@ -142,27 +156,21 @@ public class ClientMessageParser {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case Message.ADD_OBJECT:
|
|
||||||
MapObject new_mo = (MapObject) msg.getMsg();
|
|
||||||
// pridat do seznamu
|
|
||||||
Client.mapObject.add(new_mo);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.REMOVE_OBJECT:
|
|
||||||
for (MapObject mapObject : Client.mapObject) {
|
|
||||||
if (mapObject.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere ze seznamu
|
|
||||||
Client.mapObject.remove(mapObject);
|
|
||||||
// update map view
|
|
||||||
MapView.updateMapView(mapObject.getId());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.UPDATE_OBJECT:
|
private static void handleAddObject(Message msg) {
|
||||||
|
Client.mapObject.add((MapObject) msg.getMsg());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleRemoveObject(Message msg) {
|
||||||
|
int objId = (int) msg.getMsg();
|
||||||
|
Client.mapObject.removeIf(mapObject -> mapObject.getId() == objId);
|
||||||
|
// aktualizace UI
|
||||||
|
UIUpdater.updateMapTree();
|
||||||
|
UIUpdater.updateTray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUpdateObject(Message msg) {
|
||||||
MapObject mo = (MapObject) msg.getMsg();
|
MapObject mo = (MapObject) msg.getMsg();
|
||||||
for (int i = 0; i < Client.mapObject.size(); i++) {
|
for (int i = 0; i < Client.mapObject.size(); i++) {
|
||||||
if (Client.mapObject.get(i).getId() == mo.getId()) {
|
if (Client.mapObject.get(i).getId() == mo.getId()) {
|
||||||
|
|
@ -170,51 +178,26 @@ public class ClientMessageParser {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.MAP_REMOVE:
|
|
||||||
for (Map map : Client.maps) {
|
|
||||||
if (map.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere ze seznamu
|
|
||||||
Client.maps.remove(map);
|
|
||||||
// aktualizace seznamu map
|
|
||||||
MapTree.reload();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER_EDIT:
|
private static void handleMapRemove(Message msg) {
|
||||||
|
int mapId = (int) msg.getMsg();
|
||||||
|
Client.maps.removeIf(map -> map.getId() == mapId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void handleUserEdit(Message msg) {
|
||||||
User ue = (User) msg.getMsg();
|
User ue = (User) msg.getMsg();
|
||||||
// zmenit v seznamu
|
Client.users.removeIf(user -> user.getId() == ue.getId());
|
||||||
for (User user : Client.users) {
|
|
||||||
if (user.getId() == ue.getId()) {
|
|
||||||
Client.users.remove(user);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.DELETE_LOG:
|
private static void handleDeleteLog(Message msg) {
|
||||||
int objId = (int) msg.getMsg();
|
int objId = (int) msg.getMsg();
|
||||||
// vymaze logy v listu
|
Client.events.removeIf(event -> event.getObject() == objId);
|
||||||
for (Event event : Client.events) {
|
|
||||||
if (event.getObject() == objId) {
|
|
||||||
Client.events.remove(event);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SERVER_CONFIG:
|
private static void handleServerConfig(Message msg) {
|
||||||
Client.serverConfig = (ServerConfig) msg.getMsg();
|
Client.serverConfig = (ServerConfig) msg.getMsg();
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
LogFile.printErr("Neznamy typ zpravy");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue