From 498a1f550c4480ebb1817e8ad9832ad6ddb6ca8f Mon Sep 17 00:00:00 2001 From: nicol Date: Sun, 17 Sep 2023 21:20:54 +0200 Subject: [PATCH] ACtiveMQ Control Panel --- .../api/beans/abstracts/AbstractMessage.java | 12 +++ .../api/beans/messages/SearchMessage.java | 1 + .../api/beans/messages/StatutMessage.java | 1 + .../magic/api/beans/messages/TalkMessage.java | 14 +--- .../java/org/magic/game/model/Player.java | 5 +- .../components/tech/ActiveMQServerPanel.java | 74 +++++++++++++++++++ .../tech/TechnicalMonitorPanel.java | 26 +++++-- .../conf/ActiveMQMessageTableModel.java | 31 ++++++++ .../magic/servers/impl/ActiveMQServer.java | 28 ++----- .../services/TechnicalServiceManager.java | 4 + 10 files changed, 154 insertions(+), 42 deletions(-) create mode 100644 src/main/java/org/magic/gui/components/tech/ActiveMQServerPanel.java create mode 100644 src/main/java/org/magic/gui/models/conf/ActiveMQMessageTableModel.java diff --git a/src/main/java/org/magic/api/beans/abstracts/AbstractMessage.java b/src/main/java/org/magic/api/beans/abstracts/AbstractMessage.java index 0345d5356..5f0017ce8 100644 --- a/src/main/java/org/magic/api/beans/abstracts/AbstractMessage.java +++ b/src/main/java/org/magic/api/beans/abstracts/AbstractMessage.java @@ -16,6 +16,9 @@ public enum MSG_TYPE { CONNECT, CHANGESTATUS, DISCONNECT, TALK, SYSTEM, SEARCH, private static final long serialVersionUID = 1L; private String id; private MSG_TYPE typeMessage; + private String message; + + protected AbstractMessage() { setTypeMessage(MSG_TYPE.TALK); @@ -23,6 +26,15 @@ protected AbstractMessage() { setStart(Instant.now()); } + + + public String getMessage() { + return message; + } + public void setMessage(String message) { + this.message = message; + } + public Player getAuthor() { return author; } diff --git a/src/main/java/org/magic/api/beans/messages/SearchMessage.java b/src/main/java/org/magic/api/beans/messages/SearchMessage.java index 1a319c6ec..e714dba89 100644 --- a/src/main/java/org/magic/api/beans/messages/SearchMessage.java +++ b/src/main/java/org/magic/api/beans/messages/SearchMessage.java @@ -11,6 +11,7 @@ public class SearchMessage extends AbstractMessage { public SearchMessage(MTGProduct item) { this.item=item; + setMessage("search "+ item); } public MTGProduct getItem() { diff --git a/src/main/java/org/magic/api/beans/messages/StatutMessage.java b/src/main/java/org/magic/api/beans/messages/StatutMessage.java index 286aea63a..1d45f6329 100644 --- a/src/main/java/org/magic/api/beans/messages/StatutMessage.java +++ b/src/main/java/org/magic/api/beans/messages/StatutMessage.java @@ -11,6 +11,7 @@ public class StatutMessage extends AbstractMessage { public StatutMessage(STATUS statut) { setTypeMessage(MSG_TYPE.CHANGESTATUS); this.statut=statut; + setMessage("change status to "+ statut); } public void setStatut(STATUS statut) { diff --git a/src/main/java/org/magic/api/beans/messages/TalkMessage.java b/src/main/java/org/magic/api/beans/messages/TalkMessage.java index ccafd314e..a94cc1ae2 100644 --- a/src/main/java/org/magic/api/beans/messages/TalkMessage.java +++ b/src/main/java/org/magic/api/beans/messages/TalkMessage.java @@ -3,34 +3,26 @@ import java.awt.Color; import org.magic.api.beans.abstracts.AbstractMessage; -import org.magic.game.model.Player; public class TalkMessage extends AbstractMessage{ private static final long serialVersionUID = 1L; - private String message; + private Color color; public String toChatString() { - return getAuthor().getName() + " : " + message; + return getAuthor().getName() + " : " + getMessage(); } public TalkMessage(String message, Color color) { - this.message = message; + setMessage(message); this.color = color; } - - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } public Color getColor() { return color; diff --git a/src/main/java/org/magic/game/model/Player.java b/src/main/java/org/magic/game/model/Player.java index dfd8627d0..8ad0ea426 100644 --- a/src/main/java/org/magic/game/model/Player.java +++ b/src/main/java/org/magic/game/model/Player.java @@ -11,6 +11,7 @@ import javax.swing.AbstractAction; import org.apache.commons.lang.math.RandomUtils; +import org.apache.commons.lang3.builder.HashCodeBuilder; import org.magic.api.beans.MagicCard; import org.magic.api.beans.MagicDeck; import org.magic.services.tools.ImageTools; @@ -516,7 +517,7 @@ public void moveCard(ZoneEnum from, ZoneEnum to, MagicCard mc) { @Override public int hashCode() { - return (getId()+getName()).hashCode(); + return new HashCodeBuilder().append(getId()).append(getName()).hashCode(); } @Override @@ -526,7 +527,7 @@ public boolean equals(Object obj) { return false; Player p2 = (Player) obj; - return getId() == p2.getId(); + return getId().equals(p2.getId()); } public void playToken(MagicCard tok) { diff --git a/src/main/java/org/magic/gui/components/tech/ActiveMQServerPanel.java b/src/main/java/org/magic/gui/components/tech/ActiveMQServerPanel.java new file mode 100644 index 000000000..d331837d7 --- /dev/null +++ b/src/main/java/org/magic/gui/components/tech/ActiveMQServerPanel.java @@ -0,0 +1,74 @@ +package org.magic.gui.components.tech; + +import java.awt.BorderLayout; + +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JList; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +import org.magic.game.model.Player; +import org.magic.gui.abstracts.MTGUIComponent; +import org.magic.gui.models.conf.ActiveMQMessageTableModel; +import org.magic.gui.renderer.PlayerRenderer; +import org.magic.servers.impl.ActiveMQServer; +import org.magic.services.MTGConstants; +import org.magic.services.TechnicalServiceManager; +import org.magic.services.tools.UITools; + +public class ActiveMQServerPanel extends MTGUIComponent { + + private static final long serialVersionUID = 1L; + private JTable table; + private JList listPlayers; + private ActiveMQMessageTableModel model; + private DefaultListModel listModel; + + public ActiveMQServerPanel() { + setLayout(new BorderLayout(0, 0)); + model = new ActiveMQMessageTableModel(); + listModel = new DefaultListModel<>(); + listPlayers = new JList<>(listModel); + table = UITools.createNewTable(model); + UITools.initTableFilter(table); + listPlayers.setCellRenderer(new PlayerRenderer()); + + add(new JScrollPane(table),BorderLayout.CENTER); + add(new JScrollPane(listPlayers),BorderLayout.WEST); + + model.bind(TechnicalServiceManager.inst().getJsonMessages()); + + + } + + public ActiveMQMessageTableModel getModel() { + return model; + } + + public JTable getTable() { + return table; + } + + + + @Override + public String getTitle() { + return "ActiveMQ"; + } + + @Override + public ImageIcon getIcon() { + return MTGConstants.ICON_TAB_SERVER; + } + + public void init(ActiveMQServer serv) { + listModel.removeAllElements(); + listModel.addAll(serv.getPlug().getOnlines()); + + model.fireTableDataChanged(); + } + + +} + diff --git a/src/main/java/org/magic/gui/components/tech/TechnicalMonitorPanel.java b/src/main/java/org/magic/gui/components/tech/TechnicalMonitorPanel.java index a4f7fc72a..7eacc24e6 100644 --- a/src/main/java/org/magic/gui/components/tech/TechnicalMonitorPanel.java +++ b/src/main/java/org/magic/gui/components/tech/TechnicalMonitorPanel.java @@ -24,6 +24,7 @@ import org.magic.gui.models.conf.QueriesTableModel; import org.magic.gui.models.conf.TaskTableModel; import org.magic.gui.models.conf.ThreadsTableModel; +import org.magic.servers.impl.ActiveMQServer; import org.magic.servers.impl.DiscordBotServer; import org.magic.servers.impl.JSONHttpServer; import org.magic.servers.impl.QwartzServer; @@ -55,7 +56,7 @@ public class TechnicalMonitorPanel extends MTGUIComponent { private JsonInfoTableModel modelJsonServerInfo; private DiscordInfoTableModel discordModel; private GedBrowserPanel gedPanel; - + private ActiveMQServerPanel activemqPanel; public TechnicalMonitorPanel() { setLayout(new BorderLayout(0, 0)); @@ -70,7 +71,9 @@ public TechnicalMonitorPanel() { discordModel = new DiscordInfoTableModel(); modelFileAccess= new FileAccessTableModel(); gedPanel = new GedBrowserPanel(); - + activemqPanel = new ActiveMQServerPanel(); + + modelScript = new GenericTableModel<>() { private static final long serialVersionUID = 1L; @@ -150,7 +153,7 @@ public String getColumnName(int column) { tableJsonInfo.setDefaultRenderer(Long.class, durationRenderer); tableDiscordInfo.setDefaultRenderer(Long.class, durationRenderer); tableFileAccessIInfo.setDefaultRenderer(Long.class, durationRenderer); - + activemqPanel.getTable().setDefaultRenderer(Long.class, durationRenderer); @@ -167,7 +170,8 @@ public String getColumnName(int column) { getContextTabbedPane().addTab("Files Access",MTGConstants.ICON_TAB_IMPORT,new JScrollPane(tableFileAccessIInfo)); UITools.addTab(getContextTabbedPane(), new LoggerViewPanel()); UITools.addTab(getContextTabbedPane(), gedPanel); - + UITools.addTab(getContextTabbedPane(), activemqPanel); + @@ -211,15 +215,23 @@ public String getColumnName(int column) { try { modelCacheJson.init( ((JSONHttpServer)MTG.getPlugin("Json Http Server", MTGServer.class)).getCache().entries() ); modelCacheJson.fireTableDataChanged(); - - } catch(Exception ex) { logger.error("error loading . Maybe Qwartz server is stopped",ex); } } - + + if(MTG.getPlugin("ActiveMQ", MTGServer.class).isAlive()) { + try { + activemqPanel.init( ((ActiveMQServer)MTG.getPlugin("ActiveMQ", MTGServer.class))); + + } + catch(Exception ex) + { + logger.error("error loading . Maybe Qwartz server is stopped",ex); + } + } diff --git a/src/main/java/org/magic/gui/models/conf/ActiveMQMessageTableModel.java b/src/main/java/org/magic/gui/models/conf/ActiveMQMessageTableModel.java new file mode 100644 index 000000000..782122e2d --- /dev/null +++ b/src/main/java/org/magic/gui/models/conf/ActiveMQMessageTableModel.java @@ -0,0 +1,31 @@ +package org.magic.gui.models.conf; + +import java.time.Instant; + +import org.magic.api.beans.messages.TalkMessage; +import org.magic.gui.abstracts.GenericTableModel; + +public class ActiveMQMessageTableModel extends GenericTableModel { + + private static final long serialVersionUID = 1L; + + public ActiveMQMessageTableModel() { + setColumns("id","start","end","duration","author.id","author.name","message","typeMessage"); + setWritable(false); + } + + + @Override + public Class getColumnClass(int columnIndex) { + if(columnIndex==1 || columnIndex==2) + return Instant.class; + + if(columnIndex==3) + return Long.class; + + + return super.getColumnClass(columnIndex); + } + + +} diff --git a/src/main/java/org/magic/servers/impl/ActiveMQServer.java b/src/main/java/org/magic/servers/impl/ActiveMQServer.java index d903edb21..3bddf3538 100644 --- a/src/main/java/org/magic/servers/impl/ActiveMQServer.java +++ b/src/main/java/org/magic/servers/impl/ActiveMQServer.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.time.Instant; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -165,12 +166,11 @@ public String getVersion() { public String getName() { return "ActiveMQ"; } -} -class MTGActiveMQServerPlugin implements ActiveMQServerPlugin{ + +public class MTGActiveMQServerPlugin implements ActiveMQServerPlugin{ JsonExport serializer = new JsonExport(); - Set onlines = new LinkedHashSet<>(); - Set queues = new LinkedHashSet<>(); + Set onlines = new HashSet<>(); protected Logger logger = MTGLogger.getLogger(this.getClass()); private MTGNetworkClient client; @@ -187,11 +187,6 @@ public Set getOnlines() { return onlines; } - public Set getQueues() { - return queues; - } - - @Override public void afterCreateSession(ServerSession session) throws ActiveMQException { logger.info("new connection from user : {} with id {}", session.getUsername(), session.getRemotingConnection().getClientID()); @@ -240,18 +235,7 @@ public void afterSend(ServerSession session, Transaction tx, Message message, bo e.printStackTrace(); } } - - @Override - public void afterCreateQueue(Queue queue) throws ActiveMQException { - logger.debug("Queue created {}",queue); - queues.add(queue); - } - - @Override - public void afterDestroyQueue(Queue queue, SimpleString address, SecurityAuth session,boolean checkConsumerCount, boolean removeConsumers, boolean autoDeleteAddress) throws ActiveMQException { - logger.debug("Queue deleted {}",queue); - queues.remove(queue); - } - + } +} \ No newline at end of file diff --git a/src/main/java/org/magic/services/TechnicalServiceManager.java b/src/main/java/org/magic/services/TechnicalServiceManager.java index 69df5bd1f..0531e47d3 100644 --- a/src/main/java/org/magic/services/TechnicalServiceManager.java +++ b/src/main/java/org/magic/services/TechnicalServiceManager.java @@ -195,6 +195,10 @@ public List getTasksInfos() { return tasksInfos; } + public List getJsonMessages() { + return jsonMessages; + } + public void store(JsonQueryInfo info) { info.setLocation(translator.getLocationFor(info.getIp()));