]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/GroupAgentXVSM.java
[XVSM] Waiters, Cooks and Pizzerias can be parameterized with a Space port. Group...
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / xvsm / GroupAgentXVSM.java
1 package at.ac.tuwien.sbc.valesriegler.xvsm;
2
3 import java.io.Serializable;
4 import java.util.List;
5
6 import javax.swing.SwingUtilities;
7
8 import org.mozartspaces.core.MzsConstants.RequestTimeout;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
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;
16
17 public class GroupAgentXVSM extends AbstractXVSMConnector {
18         private static final Logger log = LoggerFactory.getLogger(GroupAgentXVSM.class);
19         
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);
28         }
29         
30         public void listenForDeliveredOrders() {
31                 SpaceListener deliveredOrders = new SpaceListenerImpl(capi, orderCompleteContainer, false) {
32                         
33                         @Override
34                         void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
35                                 GroupData groupData =  getSingleGroup(entries);
36                                 final int groupId = groupData.getOrder().getId();
37                            
38                 SwingUtilities.invokeLater(new Runnable() {
39                                         @Override
40                                         public void run() {
41                                                 GroupAgent.getInstance().getGroupModel().setGroupEating(groupId);
42                                         }
43                                 });
44             }
45         };
46         createNotification(deliveredOrders, orderCompleteContainer);
47
48         }
49
50         public void listenForPaymentRequest() {
51                 SpaceListener paymentRequest = new SpaceListenerImpl(capi, paymentRequestContainer, false) {
52             @Override
53             void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
54                 final GroupData group = getSingleGroup(entries);
55                            
56                 SwingUtilities.invokeLater(new Runnable() {
57                                         @Override
58                                         public void run() {
59                                                 GroupAgent.getInstance().getGroupModel().setGroupWantsToPay(group.getId());
60                                         }
61                                 });
62                 
63             }
64
65         
66         };
67         createNotification(paymentRequest, paymentRequestContainer);
68         }
69
70         public void listenForPaymentDone() {
71                 SpaceListener payment = new SpaceListenerImpl(capi, paymentDoneContainer, false) {
72             @Override
73             void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
74                 
75                 final GroupData group = getSingleGroup(entries);
76                            
77                 SwingUtilities.invokeLater(new Runnable() {
78                                         @Override
79                                         public void run() {
80                                                 GroupAgent.getInstance().getGroupModel().setGroupHasPaid(group.getId());
81                                         }
82                                 });
83                 
84             }
85         };
86         createNotification(payment, paymentDoneContainer);
87         }
88
89         public void listenForTableAssigned() {
90                 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, tableAssignedContainer, false) {
91                         
92             @Override
93             void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
94                                 
95                                 final List<Table> tables = castEntries(entries);
96                                 
97                                 SwingUtilities.invokeLater(new Runnable() {
98                                         @Override
99                                         public void run() {
100                                                 GroupAgent.getInstance().getGroupModel().setGroupsSitting(tables);
101                                         }
102                                 });
103             }
104         };
105         createNotification(tableAssignmentListener, tableAssignedContainer);
106     
107         }
108
109         public void listenForOrdersTaken() {
110                 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, orderTakenContainer, false) {
111             @Override
112             void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
113                final GroupData group = getSingleGroup(entries);
114                                 
115                                 SwingUtilities.invokeLater(new Runnable() {
116                                         
117                                         @Override
118                                         public void run() {
119                                                 GroupAgent.getInstance().getGroupModel().setOrderTaken(group);
120                                         }
121                                 });
122             }
123         };
124         createNotification(tableAssignmentListener, orderTakenContainer);
125         }
126
127         public void sendNewGroupsToSpace(List<GroupData> groupData, int pizzeriaSpacePort) {
128         sendItemsToContainer(groupData, useContainerOfSpaceWithPort(Util.ASSIGN_TABLE, pizzeriaSpacePort), RequestTimeout.DEFAULT, null);
129         }
130
131 }