1 package at.ac.tuwien.sbc.valesriegler.group;
3 import java.util.ArrayList;
6 import javax.swing.SwingUtilities;
8 import org.mozartspaces.core.MzsConstants.RequestTimeout;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
12 import at.ac.tuwien.sbc.valesriegler.common.Util;
13 import at.ac.tuwien.sbc.valesriegler.group.gui.GroupOverviewModel;
14 import at.ac.tuwien.sbc.valesriegler.group.jms.JMSGroupConnector;
15 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
16 import at.ac.tuwien.sbc.valesriegler.xvsm.GroupAgentXVSM;
19 * The Main class of the Group component.
21 * Start the communication and the group GUI:
23 * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
27 public class GroupAgent {
29 private static final Logger log = LoggerFactory.getLogger(GroupAgent.class);
30 private GroupOverviewModel groupModel;
31 private AbstractGroupConnector groupconn;
32 private GroupAgentXVSM xvsm;
34 public static GroupAgent groupAgent;
36 public static void main(String[] args) {
37 // TODO: use jms and xvsm manager here.
38 groupAgent = new GroupAgent(new JMSGroupConnector());
40 SwingUtilities.invokeLater(new GroupGUI());
43 public GroupAgent(JMSGroupConnector groupconn) {
44 groupModel = new GroupOverviewModel();
46 this.groupconn = groupconn;
50 xvsm = new GroupAgentXVSM();
52 xvsm.listenForTableAssigned();
53 xvsm.listenForOrdersTaken();
54 xvsm.listenForDeliveredOrders();
55 xvsm.listenForPaymentRequest();
56 xvsm.listenForPaymentDone();
60 public static GroupAgent getInstance() {
64 public AbstractGroupConnector getGroupcomm() {
68 public GroupOverviewModel getGroupModel() {
72 public void onGroupsCreated(List<Group> newGroups) {
74 List<GroupData> groupData = new ArrayList<>();
76 for (Group group : newGroups) {
77 groupData.add(group.getGroupData());
79 xvsm.sendNewGroupsToSpace(groupData);
81 log.info("New Groups were sent to the space");
83 // start the space group in a new thread
84 for (GroupData group : groupData) {
85 new Thread(new SpaceGroup(group.getId())).start();