]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/PizzeriaXVSM.java
Show table and waiting group changes according to notifications in pizzeriaGUI and...
[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.Table;
19
20 public class PizzeriaXVSM extends AbstractXVSMConnector {
21         private static final Logger log = LoggerFactory.getLogger(PizzeriaXVSM.class);
22         
23         public PizzeriaXVSM() {
24                 super();
25                 useTablesContainer();
26                 useGroupsContainer();
27                 useFreeTablesContainer();
28         }
29
30         public void listenForTables() {
31                 NotificationListener tablesListener = new NotificationListener() {
32             @Override
33             public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
34                 log.info("Tables Change notified");
35                 
36                 final List<Table> tables = castEntries(entries);
37         
38                 SwingUtilities.invokeLater(new Runnable() {
39                                         @Override
40                                         public void run() {
41                                                 PizzeriaAgent.getInstance().getTablesModel().addItems(tables);
42                                         }
43                                 });
44             }
45         };
46         try {
47                 notificationMgr.createNotification(tablesContainer, tablesListener, Operation.WRITE);
48         } catch (Exception e) {
49             handleSpaceErrorAndTerminate(e);
50         }
51         }
52
53         public void listenForGroups() {
54                 
55         NotificationListener groupsListener = new NotificationListener() {
56             @Override
57             public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
58                 final List<GroupData> groups = castEntries(entries);
59                 
60                 log.info("{} group changes!", groups.size());
61                 for (GroupData groupData : groups) {
62                         log.info(groupData.toString());
63                                         
64                                 }
65                 
66                 SwingUtilities.invokeLater(new Runnable() {
67                                         @Override
68                                         public void run() {
69                                                 PizzeriaAgent.getInstance().getGroupModel().addItems(groups);
70                                         }
71                                 });
72                 
73             }
74         };
75           try {
76                 notificationMgr.createNotification(groupsContainer, groupsListener, Operation.WRITE);
77         } catch (Exception e) {
78            handleSpaceErrorAndTerminate(e);
79         }
80         }
81
82
83 }