]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/xvsm/GroupAgentXVSM.java
Space cooks prepare pizzas and Pizzeria GUI shows that
[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.MzsCoreException;
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;
14
15 import at.ac.tuwien.sbc.valesriegler.group.GroupAgent;
16 import at.ac.tuwien.sbc.valesriegler.types.GroupData;
17
18 public class GroupAgentXVSM extends AbstractXVSMConnector {
19         private static final Logger log = LoggerFactory.getLogger(GroupAgentXVSM.class);
20         
21         public GroupAgentXVSM() {
22                 super();
23                 useGroupsContainer();
24                 useAssignTableContainer();
25         }
26
27         public void listenForGroupDataChanges() {
28                 NotificationListener groupDataListener = new NotificationListener() {
29             @Override
30             public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
31                
32                                 log.info("{} groups have changed", entries.size());
33                                 
34                                 final List<GroupData> groups = castEntries(entries);
35                                 
36                                 SwingUtilities.invokeLater(new Runnable() {
37                                         
38                                         @Override
39                                         public void run() {
40                                                 GroupAgent.getInstance().getGroupModel().addGroupData(groups);
41                                         }
42                                 });
43             }
44         };
45         try {
46                         notificationMgr.createNotification(groupsContainer, groupDataListener, Operation.WRITE);
47                         log.info("Created groupsContainer notification for a waiter");
48                 } catch (MzsCoreException e) {
49                         e.printStackTrace();
50                 } catch (InterruptedException e) {
51                         e.printStackTrace();
52                 }
53                         
54         }
55
56 }