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.mozartspaces.notifications.Notification;
10 import org.mozartspaces.notifications.NotificationListener;
11 import org.mozartspaces.notifications.Operation;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
15 import at.ac.tuwien.sbc.valesriegler.common.HasId;
16 import at.ac.tuwien.sbc.valesriegler.common.Util;
17 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
18 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
19 import at.ac.tuwien.sbc.valesriegler.types.Table;
21 public class GroupAgentXVSM extends AbstractXVSMConnector {
22 private static final Logger log = LoggerFactory.getLogger(GroupAgentXVSM.class);
24 public GroupAgentXVSM() {
26 assignTableContainer = useContainer(Util.ASSIGN_TABLE) ;
27 orderCompleteContainer = useContainer(Util.ORDER_COMPLETE) ;
28 paymentRequestContainer = useContainer(Util.PAYMENT_REQUEST) ;
29 paymentDoneContainer = useContainer(Util.PAYMENT_DONE);
30 tableAssignedContainer = useContainer(Util.TABLE_ASSIGNED);
31 orderTakenContainer = useContainer(Util.ORDER_TAKEN);
34 public void listenForDeliveredOrders() {
35 SpaceListener deliveredOrders = new SpaceListenerImpl(capi, orderCompleteContainer, false) {
38 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
39 GroupData groupData = getSingleGroup(entries);
40 final int groupId = groupData.getOrder().getId();
42 SwingUtilities.invokeLater(new Runnable() {
45 GroupAgent.getInstance().getGroupModel().setGroupEating(groupId);
50 createNotification(deliveredOrders, orderCompleteContainer);
54 public void listenForPaymentRequest() {
55 SpaceListener paymentRequest = new SpaceListenerImpl(capi, paymentRequestContainer, false) {
57 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
58 final GroupData group = getSingleGroup(entries);
60 SwingUtilities.invokeLater(new Runnable() {
63 GroupAgent.getInstance().getGroupModel().setGroupWantsToPay(group.getId());
71 createNotification(paymentRequest, paymentRequestContainer);
74 public void listenForPaymentDone() {
75 SpaceListener payment = new SpaceListenerImpl(capi, paymentDoneContainer, false) {
77 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
79 final GroupData group = getSingleGroup(entries);
81 SwingUtilities.invokeLater(new Runnable() {
84 GroupAgent.getInstance().getGroupModel().setGroupHasPaid(group.getId());
90 createNotification(payment, paymentDoneContainer);
93 public void listenForTableAssigned() {
94 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, tableAssignedContainer, false) {
97 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
99 final List<Table> tables = castEntries(entries);
101 SwingUtilities.invokeLater(new Runnable() {
104 GroupAgent.getInstance().getGroupModel().setGroupsSitting(tables);
109 createNotification(tableAssignmentListener, tableAssignedContainer);
113 public void listenForOrdersTaken() {
114 SpaceListener tableAssignmentListener = new SpaceListenerImpl(capi, orderTakenContainer, false) {
116 void onEntriesWritten(List<? extends Serializable> entries) throws Exception {
117 final GroupData group = getSingleGroup(entries);
119 SwingUtilities.invokeLater(new Runnable() {
123 GroupAgent.getInstance().getGroupModel().setOrderTaken(group);
128 createNotification(tableAssignmentListener, orderTakenContainer);
131 public void sendNewGroupsToSpace(List<GroupData> groupData) {
132 sendItemsToContainer(groupData, assignTableContainer, RequestTimeout.DEFAULT, null);