From 8e6db5714c3884cc74c3230abf7b20589ccd1552 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Wed, 05 Feb 2014 09:51:58 +0000
Subject: [PATCH] #0 feature - Upgrade to Bootstrap 3.1 and jQuery 1.11.0

---
 securis/src/main/java/net/curisit/securis/db/License.java |   48 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/db/License.java b/securis/src/main/java/net/curisit/securis/db/License.java
index 5fc6ba7..325a43a 100644
--- a/securis/src/main/java/net/curisit/securis/db/License.java
+++ b/securis/src/main/java/net/curisit/securis/db/License.java
@@ -1,8 +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 javax.persistence.Column;
 import javax.persistence.Entity;
@@ -15,6 +17,8 @@
 import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
+
+import net.curisit.integrity.commons.Utils;
 
 import org.codehaus.jackson.annotate.JsonAutoDetect;
 import org.codehaus.jackson.annotate.JsonIgnore;
@@ -269,10 +273,46 @@
 		this.expirationDate = expirationDate;
 	}
 
+	public static class Action {
+		public static final int CREATE = 1;
+		public static final int REQUEST = 2;
+		public static final int ACTIVATION = 3;
+		public static final int SEND = 4;
+		public static final int DOWNLOAD = 5;
+		public static final int CANCEL = 6;
+		public static final int DELETE = 7;
+	}
+
 	public static class Status {
-		public static final int CREATED = 0;
-		public static final int SENT = 1;
-		public static final int ACTIVE = 2;
-		public static final int CANCELED = 3;
+		public static final int CREATED = 1;
+		public static final int REQUESTED = 2;
+		public static final int PREACTIVE = 3;
+		public static final int ACTIVE = 4;
+		public static final int EXPIRED = 5;
+		public static final int CANCELED = 6;
+		public static final int DELETED = 7;
+
+		private static final Map<Integer, List<Integer>> transitions = Utils.createMap( //
+				Action.REQUEST, Arrays.asList(CREATED, REQUESTED), //
+				Action.ACTIVATION, Arrays.asList(REQUESTED, PREACTIVE, EXPIRED), //
+				Action.SEND, Arrays.asList(ACTIVE, PREACTIVE), //
+				Action.DOWNLOAD, Arrays.asList(ACTIVE, PREACTIVE), //
+				Action.CANCEL, Arrays.asList(ACTIVE, PREACTIVE, REQUESTED, EXPIRED), //
+				Action.DELETE, Arrays.asList(CANCELED, 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, Integer currentStatus) {
+			List<Integer> validStatuses = transitions.get(currentStatus);
+
+			return validStatuses != null && validStatuses.contains(currentStatus);
+		}
 	}
 }

--
Gitblit v1.3.2