From c4d513ca26fe80946a5d90264de5d8e13e4ea974 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Thu, 23 Oct 2014 17:21:24 +0000
Subject: [PATCH] #2021 feature - Added pack actions in server and in frontend

---
 securis/src/main/java/net/curisit/securis/db/Pack.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/db/Pack.java b/securis/src/main/java/net/curisit/securis/db/Pack.java
index ff3a93e..65d8478 100644
--- a/securis/src/main/java/net/curisit/securis/db/Pack.java
+++ b/securis/src/main/java/net/curisit/securis/db/Pack.java
@@ -1,7 +1,10 @@
 package net.curisit.securis.db;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import javax.persistence.CascadeType;
@@ -16,6 +19,8 @@
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
+
+import net.curisit.integrity.commons.Utils;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -321,4 +326,36 @@
 
         return (id == null ? 0 : id.hashCode());
     }
+
+    public static class Action {
+        public static final int CREATE = 1;
+        public static final int ACTIVATION = 2;
+        public static final int PUT_ONHOLD = 3;
+        public static final int CANCEL = 4;
+        public static final int DELETE = 5;
+    }
+
+    public static class Status {
+
+        private static final Map<Integer, List<Integer>> transitions = Utils.createMap( //
+                Action.ACTIVATION, Arrays.asList(PackStatus.CREATED, PackStatus.ON_HOLD, PackStatus.EXPIRED), //
+                Action.PUT_ONHOLD, Arrays.asList(PackStatus.ACTIVE), //
+                Action.CANCEL, Arrays.asList(PackStatus.ACTIVE, PackStatus.ON_HOLD, PackStatus.EXPIRED), //
+                Action.DELETE, Arrays.asList(PackStatus.CANCELLED, PackStatus.CREATED) //
+                );
+
+        /**
+         * It checks if a given action is valid for the License, passing the
+         * action and the current license status
+         * 
+         * @param oldStatus
+         * @param newStatus
+         * @return
+         */
+        public static boolean isActionValid(Integer action, PackStatus currentStatus) {
+            List<Integer> validStatuses = transitions.get(currentStatus);
+
+            return validStatuses != null && validStatuses.contains(currentStatus);
+        }
+    }
 }

--
Gitblit v1.3.2