Roberto Sánchez
2014-02-05 8e6db5714c3884cc74c3230abf7b20589ccd1552
securis/src/main/java/net/curisit/securis/db/License.java
....@@ -1,8 +1,10 @@
11 package net.curisit.securis.db;
22
33 import java.io.Serializable;
4
+import java.util.Arrays;
45 import java.util.Date;
56 import java.util.List;
7
+import java.util.Map;
68
79 import javax.persistence.Column;
810 import javax.persistence.Entity;
....@@ -15,6 +17,8 @@
1517 import javax.persistence.NamedQuery;
1618 import javax.persistence.OneToMany;
1719 import javax.persistence.Table;
20
+
21
+import net.curisit.integrity.commons.Utils;
1822
1923 import org.codehaus.jackson.annotate.JsonAutoDetect;
2024 import org.codehaus.jackson.annotate.JsonIgnore;
....@@ -269,10 +273,46 @@
269273 this.expirationDate = expirationDate;
270274 }
271275
276
+ public static class Action {
277
+ public static final int CREATE = 1;
278
+ public static final int REQUEST = 2;
279
+ public static final int ACTIVATION = 3;
280
+ public static final int SEND = 4;
281
+ public static final int DOWNLOAD = 5;
282
+ public static final int CANCEL = 6;
283
+ public static final int DELETE = 7;
284
+ }
285
+
272286 public static class Status {
273
- public static final int CREATED = 0;
274
- public static final int SENT = 1;
275
- public static final int ACTIVE = 2;
276
- public static final int CANCELED = 3;
287
+ public static final int CREATED = 1;
288
+ public static final int REQUESTED = 2;
289
+ public static final int PREACTIVE = 3;
290
+ public static final int ACTIVE = 4;
291
+ public static final int EXPIRED = 5;
292
+ public static final int CANCELED = 6;
293
+ public static final int DELETED = 7;
294
+
295
+ private static final Map<Integer, List<Integer>> transitions = Utils.createMap( //
296
+ Action.REQUEST, Arrays.asList(CREATED, REQUESTED), //
297
+ Action.ACTIVATION, Arrays.asList(REQUESTED, PREACTIVE, EXPIRED), //
298
+ Action.SEND, Arrays.asList(ACTIVE, PREACTIVE), //
299
+ Action.DOWNLOAD, Arrays.asList(ACTIVE, PREACTIVE), //
300
+ Action.CANCEL, Arrays.asList(ACTIVE, PREACTIVE, REQUESTED, EXPIRED), //
301
+ Action.DELETE, Arrays.asList(CANCELED, CREATED) //
302
+
303
+ );
304
+
305
+ /**
306
+ * It checks if a given action is valid for the License, passing the action and the current license status
307
+ *
308
+ * @param oldStatus
309
+ * @param newStatus
310
+ * @return
311
+ */
312
+ public static boolean isActionValid(Integer action, Integer currentStatus) {
313
+ List<Integer> validStatuses = transitions.get(currentStatus);
314
+
315
+ return validStatuses != null && validStatuses.contains(currentStatus);
316
+ }
277317 }
278318 }