]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/common/Util.java
Solve some space concurrency bugs
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / common / Util.java
1 package at.ac.tuwien.sbc.valesriegler.common;
2
3 import java.io.Serializable;
4 import java.net.URI;
5 import java.util.Collections;
6 import java.util.HashMap;
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Random;
10
11 import org.mozartspaces.capi3.Coordinator;
12 import org.mozartspaces.core.Capi;
13 import org.mozartspaces.core.ContainerReference;
14 import org.mozartspaces.core.MzsConstants.Container;
15 import org.mozartspaces.core.MzsConstants.RequestTimeout;
16 import org.mozartspaces.core.MzsCoreException;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19
20 public abstract class Util {
21         private static final Logger log = LoggerFactory.getLogger(Util.class);
22         
23         // TODO: solve the switch between mom by command-line arguments
24         public static final boolean useJMS = false;
25         
26         public static final String TABLE_ASSIGNED = "tables";
27         public static final String GROUPS_CONTAINER = "groups";
28         public static final String ASSIGN_TABLE = "assignTable";
29         public static final String TAKE_ORDER = "takeOrder"; 
30         public static final String ORDER_TAKEN = "order"; 
31         public static final String DELIVER_PIZZAS = "deliverPizzas";
32         public static final String PREPARE_PIZZAS = "preparePizzas";
33         public static final String PIZZAS_IN_PROGRESS = "pizzasInProgress";
34         public static final String ORDER_COMPLETE = "orderComplete";
35         public static final String PAYMENT_REQUEST = "payment";
36         public static final String FREE_TABLES = "freeTables";
37         public static final String IS_EATING = "isEating";
38         public static final String PAYMENT_DONE = "hasPaid";
39         
40         private static Random random = new Random();
41         
42         public static final long SPACE_TRANSACTION_TIMEOUT = 1500;
43         
44         public static final String SERVER_ADDR = "xvsm://localhost:9876";
45         
46         public static ContainerReference getOrCreateNamedContainer(final String spaceUri, final String containerName, final Capi capi, final List<Coordinator> coordinators)
47                         throws MzsCoreException {
48
49                 ContainerReference container;
50                 try {
51                         container = capi.lookupContainer(containerName, URI.create(spaceUri), RequestTimeout.DEFAULT, null);
52                 } catch (MzsCoreException e) {
53                         container = capi.createContainer(containerName, URI.create(spaceUri), Container.UNBOUNDED, coordinators, null, null);
54                 }
55                 return container;
56         }
57         
58         public static String getId(int id) {
59                 return (id != 0 && id != -1) ? String.valueOf(id) : "";
60         }
61         
62         public static int getIntSafe(Integer nr) {
63                 return nr == null ? 0 : nr;
64         }
65         
66         public static <T extends HasId> Map<Integer, T> intoMapById(List<T> hasIds) {
67                 if(hasIds == null) {
68                         return Collections.emptyMap();
69                 }
70                 
71                 Map<Integer, T> myMap = new HashMap<>();
72                 for (T hasId : hasIds) {
73                         myMap.put(hasId.getId(), hasId);
74                 }
75                 return myMap;
76         }
77         
78         public static int getRandom(int min, int max){
79             return random.nextInt(max - min + 1) + min;
80         }
81
82
83 }