1 package at.ac.tuwien.sbc.valesriegler.xvsm;
3 import java.io.Serializable;
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.GroupAgent;
14 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
15 import at.ac.tuwien.sbc.valesriegler.types.Table;
17 public class GroupAgentXVSM extends AbstractXVSMConnector {
18 private static final Logger log = LoggerFactory.getLogger(GroupAgentXVSM.class);
20 public GroupAgentXVSM() {
21 super(Util.GROUP_AGENT_PORT);
22 // assignTableContainer = useContainer(Util.ASSIGN_TABLE);
23 orderCompleteContainer = useContainer(Util.ORDER_COMPLETE) ;
24 paymentRequestContainer = useContainer(Util.PAYMENT_REQUEST) ;
25 paymentDoneContainer = useContainer(Util.PAYMENT_DONE);
26 tableAssignedContainer = useContainer(Util.TABLE_ASSIGNED);
27 orderTakenContainer = useContainer(Util.ORDER_TAKEN);
30 public void listenForDeliveredOrders() {
31 SpaceListener deliveredOrders = new SpaceListenerImpl(capi, orderCompleteContainer, false) {
34 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
35 GroupData groupData = getSingleGroup(entries);
36 final int groupId = groupData.getOrder().getId();
38 SwingUtilities.invokeLater(new Runnable() {
41 GroupAgent.getInstance().getGroupModel().setGroupEating(groupId);
46 createNotification(deliveredOrders, orderCompleteContainer);
50 public void listenForPaymentRequest() {
51 SpaceListener paymentRequest = new SpaceListenerImpl(capi, paymentRequestContainer, false) {
53 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
54 final GroupData group = getSingleGroup(entries);
56 SwingUtilities.invokeLater(new Runnable() {
59 GroupAgent.getInstance().getGroupModel().setGroupWantsToPay(group.getId());
67 createNotification(paymentRequest, paymentRequestContainer);
70 public void listenForPaymentDone() {
71 SpaceListener payment = new SpaceListenerImpl(capi, paymentDoneContainer, false) {
73 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
75 final GroupData group = getSingleGroup(entries);
77 SwingUtilities.invokeLater(new Runnable() {
80 GroupAgent.getInstance().getGroupModel().setGroupHasPaid(group.getId());
86 createNotification(payment, paymentDoneContainer);
89 public void listenForTableAssigned() {
90 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, tableAssignedContainer, false) {
93 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
95 final List<Table> tables = castEntries(entries);
97 SwingUtilities.invokeLater(new Runnable() {
100 GroupAgent.getInstance().getGroupModel().setGroupsSitting(tables);
105 createNotification(tableAssignmentListener, tableAssignedContainer);
109 public void listenForOrdersTaken() {
110 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, orderTakenContainer, false) {
112 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
113 final GroupData group = getSingleGroup(entries);
115 SwingUtilities.invokeLater(new Runnable() {
119 GroupAgent.getInstance().getGroupModel().setOrderTaken(group);
124 createNotification(tableAssignmentListener, orderTakenContainer);
127 public void sendNewGroupsToSpace(List<GroupData> groupData, int pizzeriaSpacePort) {
128 sendItemsToContainer(groupData, useContainerOfSpaceWithPort(Util.ASSIGN_TABLE, pizzeriaSpacePort), RequestTimeout.DEFAULT, null);