1 package at.ac.tuwien.sbc.valesriegler.xvsm;
3 import java.io.Serializable;
4 import java.util.ArrayList;
7 import javax.swing.SwingUtilities;
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;
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;
21 public class PizzeriaXVSM extends AbstractXVSMConnector {
22 private static final Logger log = LoggerFactory.getLogger(PizzeriaXVSM.class);
24 public PizzeriaXVSM() {
28 useFreeTablesContainer();
31 public void listenForTables() {
32 NotificationListener tablesListener = new NotificationListener() {
34 public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
35 log.info("Tables Change notified");
37 final List<Table> tables = castEntries(entries);
39 SwingUtilities.invokeLater(new Runnable() {
42 PizzeriaAgent.getInstance().getTablesModel().addItems(tables);
48 notificationMgr.createNotification(tablesContainer, tablesListener, Operation.WRITE);
49 } catch (Exception e) {
50 handleSpaceErrorAndTerminate(e);
54 public void listenForGroups() {
56 NotificationListener groupsListener = new NotificationListener() {
58 public void entryOperationFinished(final Notification notification, final Operation operation, final List<? extends Serializable> entries) {
59 final List<GroupData> groups = castEntries(entries);
61 log.info("{} group changes!", groups.size());
62 for (GroupData groupData : groups) {
63 log.info(groupData.toString());
67 SwingUtilities.invokeLater(new Runnable() {
70 PizzeriaAgent.getInstance().getGroupModel().addItems(groups);
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);
78 PizzeriaAgent.getInstance().getOrdersModel().addItems(groupsWhoHaveOrdered);
85 notificationMgr.createNotification(groupsContainer, groupsListener, Operation.WRITE);
86 } catch (Exception e) {
87 handleSpaceErrorAndTerminate(e);
91 public void listenForOrders() {