]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/PizzeriaXVSM.java
Space cook listens for pizza requests
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / xvsm / PizzeriaXVSM.java
1 package at.ac.tuwien.sbc.valesriegler.xvsm;
2
3 import java.io.Serializable;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import javax.swing.SwingUtilities;
8
9 import org.mozartspaces.core.Entry;
10 import org.mozartspaces.notifications.Notification;
11 import org.mozartspaces.notifications.NotificationListener;
12 import org.mozartspaces.notifications.Operation;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 import at.ac.tuwien.sbc.valesriegler.pizzeria.PizzeriaAgent;
17 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
18 import at.ac.tuwien.sbc.valesriegler.types.GroupState;
19 import at.ac.tuwien.sbc.valesriegler.types.Table;
20
21 public class PizzeriaXVSM extends AbstractXVSMConnector {
22         private static final Logger log = LoggerFactory.getLogger(PizzeriaXVSM.class);
23         
24         public PizzeriaXVSM() {
25                 super();
26                 useTablesContainer();
27                 useGroupsContainer();
28                 useFreeTablesContainer();
29         }
30
31         public void listenForTables() {
32                 NotificationListener tablesListener = new NotificationListener() {
33             @Override
34             public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
35                 log.info("Tables Change notified");
36                 
37                 final List<Table> tables = castEntries(entries);
38         
39                 SwingUtilities.invokeLater(new Runnable() {
40                                         @Override
41                                         public void run() {
42                                                 PizzeriaAgent.getInstance().getTablesModel().addItems(tables);
43                                         }
44                                 });
45             }
46         };
47         try {
48                 notificationMgr.createNotification(tablesContainer, tablesListener, Operation.WRITE);
49         } catch (Exception e) {
50             handleSpaceErrorAndTerminate(e);
51         }
52         }
53
54         public void listenForGroups() {
55                 
56         NotificationListener groupsListener = new NotificationListener() {
57             @Override
58             public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
59                 final List<GroupData> groups = castEntries(entries);
60                 
61                 log.info("{} group changes!", groups.size());
62                 for (GroupData groupData : groups) {
63                         log.info(groupData.toString());
64                                         
65                                 }
66                 
67                 SwingUtilities.invokeLater(new Runnable() {
68                                         @Override
69                                         public void run() {
70                                                 PizzeriaAgent.getInstance().getGroupModel().addItems(groups);
71                                                 
72                                                 List<GroupData> groupsWhoHaveOrdered = new ArrayList<>();
73                                                 for (GroupData groupData : groups) {
74                                                         if(groupData.getState() != GroupState.NEW && groupData.getState() != GroupState.WAITING) {
75                                                                 groupsWhoHaveOrdered.add(groupData);
76                                                         }
77                                                 }
78                                                 PizzeriaAgent.getInstance().getOrdersModel().addItems(groupsWhoHaveOrdered);
79                                         }
80                                 });
81                 
82             }
83         };
84           try {
85                 notificationMgr.createNotification(groupsContainer, groupsListener, Operation.WRITE);
86         } catch (Exception e) {
87            handleSpaceErrorAndTerminate(e);
88         }
89         }
90
91         public void listenForOrders() {
92         }
93
94
95 }