From 347803bd8d8349baa0577156896a1ec924a69e6d Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 03 Apr 2017 16:41:28 +0000
Subject: [PATCH] #3535 fix - Marked obsolete metadata field on licenses

---
 securis/src/main/java/net/curisit/securis/db/License.java |  705 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 356 insertions(+), 349 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 ba3c11f..1d721da 100644
--- a/securis/src/main/java/net/curisit/securis/db/License.java
+++ b/securis/src/main/java/net/curisit/securis/db/License.java
@@ -22,13 +22,6 @@
 import javax.persistence.Table;
 import javax.persistence.TypedQuery;
 
-import net.curisit.integrity.commons.Utils;
-import net.curisit.securis.db.common.CreationTimestampEntity;
-import net.curisit.securis.db.common.ModificationTimestampEntity;
-import net.curisit.securis.db.listeners.CreationTimestampListener;
-import net.curisit.securis.db.listeners.ModificationTimestampListener;
-import net.curisit.securis.services.exception.SeCurisServiceException;
-
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.hibernate.annotations.Type;
@@ -40,6 +33,13 @@
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.annotation.JsonProperty;
 
+import net.curisit.integrity.commons.Utils;
+import net.curisit.securis.db.common.CreationTimestampEntity;
+import net.curisit.securis.db.common.ModificationTimestampEntity;
+import net.curisit.securis.db.listeners.CreationTimestampListener;
+import net.curisit.securis.db.listeners.ModificationTimestampListener;
+import net.curisit.securis.services.exception.SeCurisServiceException;
+
 /**
  * Entity implementation class for Entity: license
  * 
@@ -47,425 +47,432 @@
 @JsonAutoDetect
 @JsonInclude(Include.NON_NULL)
 @Entity
-@EntityListeners({
-        CreationTimestampListener.class, ModificationTimestampListener.class
-})
+@EntityListeners({ CreationTimestampListener.class, ModificationTimestampListener.class })
 @Table(name = "license")
 @JsonIgnoreProperties(ignoreUnknown = true)
-@NamedQueries({
-        @NamedQuery(name = "license-by-code", query = "SELECT l FROM License l where l.code = :code"),
-        @NamedQuery(name = "license-by-activation-code", query = "SELECT l FROM License l where l.activationCode = :activationCode"),
-        @NamedQuery(name = "last-code-suffix-used-in-pack", query = "SELECT max(l.codeSuffix) FROM License l where l.pack.id = :packId"),
-        @NamedQuery(name = "list-licenses-by-pack", query = "SELECT l FROM License l where l.pack.id = :packId"),
-        @NamedQuery(name = "list-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash"),
-        @NamedQuery(name = "list-active-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('AC', 'PA')"),
-        @NamedQuery(name = "list-valid-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('RE', 'AC', 'PA')")
+@NamedQueries({ @NamedQuery(name = "license-by-code", query = "SELECT l FROM License l where l.code = :code"),
+		@NamedQuery(name = "license-by-activation-code", query = "SELECT l FROM License l where l.activationCode = :activationCode"),
+		@NamedQuery(name = "last-code-suffix-used-in-pack", query = "SELECT max(l.codeSuffix) FROM License l where l.pack.id = :packId"),
+		@NamedQuery(name = "list-licenses-by-pack", query = "SELECT l FROM License l where l.pack.id = :packId"),
+		@NamedQuery(name = "list-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash"),
+		@NamedQuery(name = "list-active-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('AC', 'PA')"),
+		@NamedQuery(name = "list-valid-licenses-by-req-data", query = "SELECT l FROM License l where l.reqDataHash = :hash and l.status in ('RE', 'AC', 'PA')")
 
 })
 public class License implements CreationTimestampEntity, ModificationTimestampEntity, Serializable {
 
-    private static final long serialVersionUID = 2700310404904877227L;
+	private static final long serialVersionUID = 2700310404904877227L;
 
-    private static final Logger LOG = LogManager.getLogger(License.class);
+	private static final Logger LOG = LogManager.getLogger(License.class);
 
-    @Id
-    @GeneratedValue
-    private Integer id;
+	@Id
+	@GeneratedValue
+	private Integer id;
 
-    private String code;
+	private String code;
 
-    @Column(name = "activation_code")
-    @JsonProperty("activation_code")
-    private String activationCode;
+	@Column(name = "metadata_obsolete")
+	@JsonProperty("metadata_obsolete")
+	private Boolean metadataObsolete;
 
-    @Column(name = "code_suffix")
-    @JsonProperty("code_suffix")
-    private Integer codeSuffix;
+	@Column(name = "activation_code")
+	@JsonProperty("activation_code")
+	private String activationCode;
 
-    @JsonIgnore
-    @ManyToOne
-    @JoinColumn(name = "pack_id")
-    private Pack pack;
+	@Column(name = "code_suffix")
+	@JsonProperty("code_suffix")
+	private Integer codeSuffix;
 
-    @JsonIgnore
-    @ManyToOne
-    @JoinColumn(name = "created_by")
-    private User createdBy;
+	@JsonIgnore
+	@ManyToOne
+	@JoinColumn(name = "pack_id")
+	private Pack pack;
 
-    @JsonIgnore
-    @ManyToOne
-    @JoinColumn(name = "cancelled_by")
-    private User cancelledBy;
+	@JsonIgnore
+	@ManyToOne
+	@JoinColumn(name = "created_by")
+	private User createdBy;
 
-    @Type(type = "net.curisit.securis.db.common.LicenseStatusType")
-    private LicenseStatus status;
+	@JsonIgnore
+	@ManyToOne
+	@JoinColumn(name = "cancelled_by")
+	private User cancelledBy;
 
-    @Column(name = "full_name")
-    @JsonProperty("full_name")
-    private String fullName;
+	@Type(type = "net.curisit.securis.db.common.LicenseStatusType")
+	private LicenseStatus status;
 
-    private String email;
+	@Column(name = "full_name")
+	@JsonProperty("full_name")
+	private String fullName;
 
-    @Column(name = "request_data")
-    @JsonProperty("request_data")
-    private String requestData;
+	private String email;
 
-    /**
-     * request data hash is automatically set when we use
-     * {@link License#setRequestData(String)} method
-     */
-    @Column(name = "request_data_hash")
-    @JsonIgnore
-    private String reqDataHash;
+	@Column(name = "request_data")
+	@JsonProperty("request_data")
+	private String requestData;
 
-    @Column(name = "license_data")
-    @JsonProperty("license_data")
-    @JsonIgnore
-    // The license data is sent to user as a separate file, It doesn't need to
-    // be included as License attribute on browser
-    private String licenseData;
+	/**
+	 * request data hash is automatically set when we use
+	 * {@link License#setRequestData(String)} method
+	 */
+	@Column(name = "request_data_hash")
+	@JsonIgnore
+	private String reqDataHash;
 
-    @Column(name = "creation_timestamp")
-    @JsonProperty("creation_timestamp")
-    private Date creationTimestamp;
+	@Column(name = "license_data")
+	@JsonProperty("license_data")
+	@JsonIgnore
+	// The license data is sent to user as a separate file, It doesn't need to
+	// be included as License attribute on browser
+	private String licenseData;
 
-    @Column(name = "modification_timestamp")
-    @JsonProperty("modification_timestamp")
-    private Date modificationTimestamp;
+	@Column(name = "creation_timestamp")
+	@JsonProperty("creation_timestamp")
+	private Date creationTimestamp;
 
-    @Column(name = "last_access_timestamp")
-    @JsonProperty("last_access_timestamp")
-    private Date lastAccessTimestamp;
+	@Column(name = "modification_timestamp")
+	@JsonProperty("modification_timestamp")
+	private Date modificationTimestamp;
 
-    @Column(name = "expiration_date")
-    @JsonProperty("expiration_date")
-    private Date expirationDate;
+	@Column(name = "last_access_timestamp")
+	@JsonProperty("last_access_timestamp")
+	private Date lastAccessTimestamp;
 
-    private String comments;
+	@Column(name = "expiration_date")
+	@JsonProperty("expiration_date")
+	private Date expirationDate;
 
-    @OneToMany(fetch = FetchType.LAZY, mappedBy = "license")
-    @JsonIgnore
-    private List<LicenseHistory> history;
+	private String comments;
 
-    public Integer getId() {
-        return id;
-    }
+	@OneToMany(fetch = FetchType.LAZY, mappedBy = "license")
+	@JsonIgnore
+	private List<LicenseHistory> history;
 
-    public String getCode() {
-        return code;
-    }
+	public Integer getId() {
+		return id;
+	}
 
-    public void setCode(String code) {
-        this.code = code;
-    }
+	public String getCode() {
+		return code;
+	}
 
-    @Override
-    public Date getCreationTimestamp() {
-        return creationTimestamp;
-    }
+	public void setCode(String code) {
+		this.code = code;
+	}
 
-    @Override
-    public void setCreationTimestamp(Date creationTimestamp) {
-        this.creationTimestamp = creationTimestamp;
-    }
+	@Override
+	public Date getCreationTimestamp() {
+		return creationTimestamp;
+	}
 
-    public User getCreatedBy() {
-        return createdBy;
-    }
+	@Override
+	public void setCreationTimestamp(Date creationTimestamp) {
+		this.creationTimestamp = creationTimestamp;
+	}
 
-    public void setCreatedBy(User createdBy) {
-        this.createdBy = createdBy;
-    }
+	public User getCreatedBy() {
+		return createdBy;
+	}
 
-    public Pack getPack() {
-        return pack;
-    }
+	public void setCreatedBy(User createdBy) {
+		this.createdBy = createdBy;
+	}
 
-    public void setPack(Pack pack) {
-        this.pack = pack;
-    }
+	public Pack getPack() {
+		return pack;
+	}
 
-    @JsonProperty("created_by_id")
-    public String getCreatedById() {
-        return createdBy == null ? null : createdBy.getUsername();
-    }
+	public void setPack(Pack pack) {
+		this.pack = pack;
+	}
 
-    @JsonProperty("created_by_id")
-    public void setCreatedById(String username) {
-        if (username == null) {
-            createdBy = null;
-        } else {
-            createdBy = new User();
-            createdBy.setUsername(username);
-        }
-    }
+	@JsonProperty("created_by_id")
+	public String getCreatedById() {
+		return createdBy == null ? null : createdBy.getUsername();
+	}
 
-    @JsonProperty("cancelled_by_id")
-    public String getCancelledById() {
-        return cancelledBy == null ? null : cancelledBy.getUsername();
-    }
+	@JsonProperty("created_by_id")
+	public void setCreatedById(String username) {
+		if (username == null) {
+			createdBy = null;
+		} else {
+			createdBy = new User();
+			createdBy.setUsername(username);
+		}
+	}
 
-    @JsonProperty("cancelled_by_id")
-    public void setCancelledById(String username) {
-        if (username == null) {
-            cancelledBy = null;
-        } else {
-            cancelledBy = new User();
-            cancelledBy.setUsername(username);
-        }
-    }
+	@JsonProperty("cancelled_by_id")
+	public String getCancelledById() {
+		return cancelledBy == null ? null : cancelledBy.getUsername();
+	}
 
-    @JsonProperty("pack_code")
-    public String getPackCode() {
-        return pack == null ? null : pack.getCode();
-    }
+	@JsonProperty("cancelled_by_id")
+	public void setCancelledById(String username) {
+		if (username == null) {
+			cancelledBy = null;
+		} else {
+			cancelledBy = new User();
+			cancelledBy.setUsername(username);
+		}
+	}
 
-    @JsonProperty("pack_id")
-    public Integer getPackId() {
-        return pack == null ? null : pack.getId();
-    }
+	@JsonProperty("pack_code")
+	public String getPackCode() {
+		return pack == null ? null : pack.getCode();
+	}
 
-    @JsonProperty("pack_id")
-    public void setPackId(Integer idPack) {
-        if (idPack == null) {
-            pack = null;
-        } else {
-            pack = new Pack();
-            pack.setId(idPack);
-        }
-    }
+	@JsonProperty("pack_id")
+	public Integer getPackId() {
+		return pack == null ? null : pack.getId();
+	}
 
-    public LicenseStatus getStatus() {
-        return status;
-    }
+	@JsonProperty("pack_id")
+	public void setPackId(Integer idPack) {
+		if (idPack == null) {
+			pack = null;
+		} else {
+			pack = new Pack();
+			pack.setId(idPack);
+		}
+	}
 
-    public void setStatus(LicenseStatus status) {
-        this.status = status;
-    }
+	public LicenseStatus getStatus() {
+		return status;
+	}
 
-    @Override
-    public Date getModificationTimestamp() {
-        return modificationTimestamp;
-    }
+	public void setStatus(LicenseStatus status) {
+		this.status = status;
+	}
 
-    @Override
-    public void setModificationTimestamp(Date modificationTimestamp) {
-        this.modificationTimestamp = modificationTimestamp;
-    }
+	@Override
+	public Date getModificationTimestamp() {
+		return modificationTimestamp;
+	}
 
-    public String getFullName() {
-        return fullName;
-    }
+	@Override
+	public void setModificationTimestamp(Date modificationTimestamp) {
+		this.modificationTimestamp = modificationTimestamp;
+	}
 
-    public void setFullName(String fullName) {
-        this.fullName = fullName;
-    }
+	public String getFullName() {
+		return fullName;
+	}
 
-    public String getEmail() {
-        return email;
-    }
+	public void setFullName(String fullName) {
+		this.fullName = fullName;
+	}
 
-    public void setEmail(String email) {
-        this.email = email;
-    }
+	public String getEmail() {
+		return email;
+	}
 
-    public void setId(Integer id) {
-        this.id = id;
-    }
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public User getCancelledBy() {
+		return cancelledBy;
+	}
+
+	public void setCancelledBy(User cancelledBy) {
+		this.cancelledBy = cancelledBy;
+	}
 
-    public User getCancelledBy() {
-        return cancelledBy;
-    }
+	public Date getLastAccessTimestamp() {
+		return lastAccessTimestamp;
+	}
 
-    public void setCancelledBy(User cancelledBy) {
-        this.cancelledBy = cancelledBy;
-    }
+	public void setLastAccessTimestamp(Date lastAccessTimestamp) {
+		this.lastAccessTimestamp = lastAccessTimestamp;
+	}
 
-    public Date getLastAccessTimestamp() {
-        return lastAccessTimestamp;
-    }
+	public String getRequestData() {
+		return requestData;
+	}
 
-    public void setLastAccessTimestamp(Date lastAccessTimestamp) {
-        this.lastAccessTimestamp = lastAccessTimestamp;
-    }
+	public void setRequestData(String requestData) {
+		this.requestData = requestData;
+		this.reqDataHash = BlockedRequest.generateHash(this.requestData);
+	}
 
-    public String getRequestData() {
-        return requestData;
-    }
+	public String getLicenseData() {
+		return licenseData;
+	}
 
-    public void setRequestData(String requestData) {
-        this.requestData = requestData;
-        this.reqDataHash = BlockedRequest.generateHash(this.requestData);
-    }
+	public void setLicenseData(String licenseData) {
+		this.licenseData = licenseData;
+	}
 
-    public String getLicenseData() {
-        return licenseData;
-    }
+	public String getComments() {
+		return comments;
+	}
 
-    public void setLicenseData(String licenseData) {
-        this.licenseData = licenseData;
-    }
+	public void setComments(String comments) {
+		this.comments = comments;
+	}
 
-    public String getComments() {
-        return comments;
-    }
+	public List<LicenseHistory> getHistory() {
+		return history;
+	}
 
-    public void setComments(String comments) {
-        this.comments = comments;
-    }
+	public void setHistory(List<LicenseHistory> history) {
+		this.history = history;
+	}
 
-    public List<LicenseHistory> getHistory() {
-        return history;
-    }
+	public Date getExpirationDate() {
+		return expirationDate;
+	}
 
-    public void setHistory(List<LicenseHistory> history) {
-        this.history = history;
-    }
+	public void setExpirationDate(Date expirationDate) {
+		this.expirationDate = expirationDate;
+	}
 
-    public Date getExpirationDate() {
-        return expirationDate;
-    }
+	public String getReqDataHash() {
+		return reqDataHash;
+	}
 
-    public void setExpirationDate(Date expirationDate) {
-        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 final int BLOCK = 8;
+		public static final int UNBLOCK = 9;
+	}
 
-    public String getReqDataHash() {
-        return reqDataHash;
-    }
+	public static class Status {
 
-    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 final int BLOCK = 8;
-        public static final int UNBLOCK = 9;
-    }
+		private static final Map<Integer, List<LicenseStatus>> transitions = Utils.createMap( //
+				Action.REQUEST, Arrays.asList(LicenseStatus.CREATED, LicenseStatus.REQUESTED), //
+				Action.ACTIVATION, Arrays.asList(LicenseStatus.CREATED, LicenseStatus.REQUESTED, LicenseStatus.PRE_ACTIVE, LicenseStatus.EXPIRED), //
+				Action.SEND, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE), //
+				Action.DOWNLOAD, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE), //
+				Action.CANCEL, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE, LicenseStatus.REQUESTED, LicenseStatus.EXPIRED), //
+				Action.DELETE, Arrays.asList(LicenseStatus.CANCELLED, LicenseStatus.CREATED, LicenseStatus.BLOCKED), //
+				Action.UNBLOCK, Arrays.asList(LicenseStatus.BLOCKED), //
+				Action.BLOCK, Arrays.asList(LicenseStatus.CANCELLED) //
+		);
 
-    public static class Status {
+		/**
+		 * 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, LicenseStatus currentStatus) {
+			List<LicenseStatus> validStatuses = transitions.get(action);
+			LOG.info("Action {} is valid ? => {} current: {} OK? {}", action, validStatuses, currentStatus, validStatuses.contains(currentStatus));
+			return validStatuses != null && validStatuses.contains(currentStatus);
+		}
+	}
 
-        private static final Map<Integer, List<LicenseStatus>> transitions = Utils.createMap( //
-                Action.REQUEST, Arrays.asList(LicenseStatus.CREATED, LicenseStatus.REQUESTED), //
-                Action.ACTIVATION, Arrays.asList(LicenseStatus.CREATED, LicenseStatus.REQUESTED, LicenseStatus.PRE_ACTIVE, LicenseStatus.EXPIRED), //
-                Action.SEND, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE), //
-                Action.DOWNLOAD, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE), //
-                Action.CANCEL, Arrays.asList(LicenseStatus.ACTIVE, LicenseStatus.PRE_ACTIVE, LicenseStatus.REQUESTED, LicenseStatus.EXPIRED), //
-                Action.DELETE, Arrays.asList(LicenseStatus.CANCELLED, LicenseStatus.CREATED, LicenseStatus.BLOCKED), //
-                Action.UNBLOCK, Arrays.asList(LicenseStatus.BLOCKED), //
-                Action.BLOCK, Arrays.asList(LicenseStatus.CANCELLED) //
-                );
+	/**
+	 * Return licenses with status: REquested, ACtive, Pre-Active for a given
+	 * request data
+	 * 
+	 * @param requestData
+	 * @param em
+	 * @return
+	 * @throws SeCurisServiceException
+	 */
+	public static License findValidLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException {
+		TypedQuery<License> query = em.createNamedQuery("list-valid-licenses-by-req-data", License.class);
+		query.setParameter("hash", BlockedRequest.generateHash(requestData));
+		try {
+			List<License> list = query.getResultList();
+			if (list.size() == 0) {
+				return null;
+			}
+			if (list.size() > 1) {
+				LOG.error("There are more than 1 active or requested license for request data: {}\nHash: {}", requestData, BlockedRequest.generateHash(requestData));
+			}
+			return list.get(0);
+		} catch (NoResultException e) {
+			// There is no license for request data
+			return null;
+		}
+	}
 
-        /**
-         * 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, LicenseStatus currentStatus) {
-            List<LicenseStatus> validStatuses = transitions.get(action);
-            LOG.info("Action {} is valid ? => {} current: {} OK? {}", action, validStatuses, currentStatus, validStatuses.contains(currentStatus));
-            return validStatuses != null && validStatuses.contains(currentStatus);
-        }
-    }
+	/**
+	 * Return licenses with status: REquested, ACtive, Pre-Active for a given
+	 * request data
+	 * 
+	 * @param requestData
+	 * @param em
+	 * @return
+	 * @throws SeCurisServiceException
+	 */
+	public static License findLicenseByActivationCode(String activationCode, EntityManager em) throws SeCurisServiceException {
+		TypedQuery<License> query = em.createNamedQuery("license-by-activation-code", License.class);
+		query.setParameter("activationCode", activationCode);
+		try {
+			return query.getSingleResult();
+		} catch (NoResultException e) {
+			// There is no license for request data
+			return null;
+		}
+	}
 
-    /**
-     * Return licenses with status: REquested, ACtive, Pre-Active for a given
-     * request data
-     * 
-     * @param requestData
-     * @param em
-     * @return
-     * @throws SeCurisServiceException
-     */
-    public static License findValidLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException {
-        TypedQuery<License> query = em.createNamedQuery("list-valid-licenses-by-req-data", License.class);
-        query.setParameter("hash", BlockedRequest.generateHash(requestData));
-        try {
-            List<License> list = query.getResultList();
-            if (list.size() == 0) {
-                return null;
-            }
-            if (list.size() > 1) {
-                LOG.error("There are more than 1 active or requested license for request data: {}\nHash: {}", requestData,
-                        BlockedRequest.generateHash(requestData));
-            }
-            return list.get(0);
-        } catch (NoResultException e) {
-            // There is no license for request data
-            return null;
-        }
-    }
+	public static License findActiveLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException {
+		TypedQuery<License> query = em.createNamedQuery("list-active-licenses-by-req-data", License.class);
+		query.setParameter("hash", BlockedRequest.generateHash(requestData));
+		try {
+			List<License> list = query.getResultList();
+			if (list.size() == 0) {
+				return null;
+			}
+			if (list.size() > 1) {
+				LOG.error("There are more than 1 active license for request data: {}\nHash: {}", requestData, BlockedRequest.generateHash(requestData));
+			}
+			return list.get(0);
+		} catch (NoResultException e) {
+			// There is no license for request data
+			return null;
+		}
+	}
 
-    /**
-     * Return licenses with status: REquested, ACtive, Pre-Active for a given
-     * request data
-     * 
-     * @param requestData
-     * @param em
-     * @return
-     * @throws SeCurisServiceException
-     */
-    public static License findLicenseByActivationCode(String activationCode, EntityManager em) throws SeCurisServiceException {
-        TypedQuery<License> query = em.createNamedQuery("license-by-activation-code", License.class);
-        query.setParameter("activationCode", activationCode);
-        try {
-            return query.getSingleResult();
-        } catch (NoResultException e) {
-            // There is no license for request data
-            return null;
-        }
-    }
+	public static License findLicenseByCode(String code, EntityManager em) throws SeCurisServiceException {
+		TypedQuery<License> query = em.createNamedQuery("license-by-code", License.class);
+		query.setParameter("code", code);
+		try {
+			return query.getSingleResult();
+		} catch (NoResultException e) {
+			// There is no license for request data
+			return null;
+		}
+	}
 
-    public static License findActiveLicenseByRequestData(String requestData, EntityManager em) throws SeCurisServiceException {
-        TypedQuery<License> query = em.createNamedQuery("list-active-licenses-by-req-data", License.class);
-        query.setParameter("hash", BlockedRequest.generateHash(requestData));
-        try {
-            List<License> list = query.getResultList();
-            if (list.size() == 0) {
-                return null;
-            }
-            if (list.size() > 1) {
-                LOG.error("There are more than 1 active license for request data: {}\nHash: {}", requestData,
-                        BlockedRequest.generateHash(requestData));
-            }
-            return list.get(0);
-        } catch (NoResultException e) {
-            // There is no license for request data
-            return null;
-        }
-    }
+	public Integer getCodeSuffix() {
+		return codeSuffix;
+	}
 
-    public static License findLicenseByCode(String code, EntityManager em) throws SeCurisServiceException {
-        TypedQuery<License> query = em.createNamedQuery("license-by-code", License.class);
-        query.setParameter("code", code);
-        try {
-            return query.getSingleResult();
-        } catch (NoResultException e) {
-            // There is no license for request data
-            return null;
-        }
-    }
+	public void setCodeSuffix(Integer codeSuffix) {
+		this.codeSuffix = codeSuffix;
+	}
 
-    public Integer getCodeSuffix() {
-        return codeSuffix;
-    }
+	public String getActivationCode() {
+		return activationCode;
+	}
 
-    public void setCodeSuffix(Integer codeSuffix) {
-        this.codeSuffix = codeSuffix;
-    }
+	public void setActivationCode(String activationCode) {
+		this.activationCode = activationCode;
+	}
 
-    public String getActivationCode() {
-        return activationCode;
-    }
+	public boolean isMetadataObsolete() {
+		return metadataObsolete != null && metadataObsolete;
+	}
 
-    public void setActivationCode(String activationCode) {
-        this.activationCode = activationCode;
-    }
+	public void setMetadataObsolete(Boolean obsolete) {
+		this.metadataObsolete = obsolete;
+	}
 
 }

--
Gitblit v1.3.2