rsanchez
2014-10-23 c4d513ca26fe80946a5d90264de5d8e13e4ea974
securis/src/main/java/net/curisit/securis/db/Pack.java
....@@ -1,7 +1,10 @@
11 package net.curisit.securis.db;
22
33 import java.io.Serializable;
4
+import java.util.Arrays;
45 import java.util.Date;
6
+import java.util.List;
7
+import java.util.Map;
58 import java.util.Set;
69
710 import javax.persistence.CascadeType;
....@@ -16,6 +19,8 @@
1619 import javax.persistence.NamedQuery;
1720 import javax.persistence.OneToMany;
1821 import javax.persistence.Table;
22
+
23
+import net.curisit.integrity.commons.Utils;
1924
2025 import com.fasterxml.jackson.annotation.JsonAutoDetect;
2126 import com.fasterxml.jackson.annotation.JsonIgnore;
....@@ -321,4 +326,36 @@
321326
322327 return (id == null ? 0 : id.hashCode());
323328 }
329
+
330
+ public static class Action {
331
+ public static final int CREATE = 1;
332
+ public static final int ACTIVATION = 2;
333
+ public static final int PUT_ONHOLD = 3;
334
+ public static final int CANCEL = 4;
335
+ public static final int DELETE = 5;
336
+ }
337
+
338
+ public static class Status {
339
+
340
+ private static final Map<Integer, List<Integer>> transitions = Utils.createMap( //
341
+ Action.ACTIVATION, Arrays.asList(PackStatus.CREATED, PackStatus.ON_HOLD, PackStatus.EXPIRED), //
342
+ Action.PUT_ONHOLD, Arrays.asList(PackStatus.ACTIVE), //
343
+ Action.CANCEL, Arrays.asList(PackStatus.ACTIVE, PackStatus.ON_HOLD, PackStatus.EXPIRED), //
344
+ Action.DELETE, Arrays.asList(PackStatus.CANCELLED, PackStatus.CREATED) //
345
+ );
346
+
347
+ /**
348
+ * It checks if a given action is valid for the License, passing the
349
+ * action and the current license status
350
+ *
351
+ * @param oldStatus
352
+ * @param newStatus
353
+ * @return
354
+ */
355
+ public static boolean isActionValid(Integer action, PackStatus currentStatus) {
356
+ List<Integer> validStatuses = transitions.get(currentStatus);
357
+
358
+ return validStatuses != null && validStatuses.contains(currentStatus);
359
+ }
360
+ }
324361 }