From 36edce38f6b17f73322fa38404d6e01818a44fd2 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Thu, 11 Dec 2014 19:08:16 +0000
Subject: [PATCH] #2140 fix - Added renew period to pack, change on DB schema, fixed pack selection in listing, upgrade angular to 1.3.6 and other minor issues
---
securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java | 81 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java b/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
index e192200..f927a78 100644
--- a/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
+++ b/securis/src/main/java/net/curisit/securis/services/helpers/LicenseHelper.java
@@ -4,17 +4,25 @@
import java.io.IOException;
import java.nio.file.Files;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.persistence.EntityManager;
+import javax.persistence.TypedQuery;
+import net.curisit.securis.beans.LicenseBean;
import net.curisit.securis.db.License;
import net.curisit.securis.db.LicenseHistory;
import net.curisit.securis.db.LicenseStatus;
+import net.curisit.securis.db.Pack;
+import net.curisit.securis.db.PackMetadata;
import net.curisit.securis.db.User;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.services.exception.SeCurisServiceException;
+import net.curisit.securis.services.exception.SeCurisServiceException.ErrorCodes;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
@@ -23,7 +31,10 @@
@Singleton
public class LicenseHelper {
+ @SuppressWarnings("unused")
private static final Logger LOG = LogManager.getLogger(LicenseHelper.class);
+ private static final long MS_PER_DAY = 24L * 3600L * 1000L;
+ private static final int DEFAULT_VALID_LIC_PERIOD = 7;
@Inject
private UserHelper userHelper;
@@ -41,7 +52,25 @@
em.persist(lic);
em.persist(createLicenseHistoryAction(lic, userHelper.getUser(bsc, em), LicenseHistory.Actions.CANCEL, "Cancellation reason: " + reason));
+ }
+ /**
+ * Validates that the passed license is still valid
+ *
+ * @param lic
+ * @param reason
+ * @param bsc
+ * @param em
+ * @throws SeCurisServiceException
+ */
+ public void assertLicenseStatusIsActive(LicenseBean licBean, EntityManager em) throws SeCurisServiceException {
+ License lic = License.findLicenseByCode(licBean.getLicenseCode(), em);
+ if (lic == null) {
+ throw new SeCurisServiceException(ErrorCodes.NOT_FOUND, "Current license code doesn't exist");
+ }
+ if (lic.getStatus() != LicenseStatus.ACTIVE && lic.getStatus() != LicenseStatus.PRE_ACTIVE) {
+ throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "Current license in not active");
+ }
}
public LicenseHistory createLicenseHistoryAction(License lic, User user, String action, String comments) {
@@ -58,10 +87,62 @@
return createLicenseHistoryAction(lic, user, action, null);
}
+ /**
+ * Create a license file in a temporary directory
+ *
+ * @param lic
+ * @param licFileName
+ * @return
+ * @throws IOException
+ */
public File createTemporaryLicenseFile(License lic, String licFileName) throws IOException {
File f = Files.createTempDirectory("securis-server").toFile();
f = new File(f, licFileName);
FileUtils.writeStringToFile(f, lic.getLicenseData());
return f;
}
+
+ public Map<String, Object> extractPackMetadata(Set<PackMetadata> packMetadata) {
+ Map<String, Object> metadata = new HashMap<>();
+ for (PackMetadata md : packMetadata) {
+ metadata.put(md.getKey(), md.getValue());
+ }
+
+ return metadata;
+ }
+
+ /**
+ * If the action is a renew the expiration date is got form pack end valid
+ * date, if the action is a pre-activation the expiration date is calculated
+ * using the pack default valid period
+ *
+ * @param pack
+ * @param isPreActivation
+ * @return
+ */
+ public Date getExpirationDateFromPack(Pack pack, boolean isPreActivation) {
+ Long validPeriod;
+ if (isPreActivation) {
+ validPeriod = pack.getPreactivationValidPeriod() * MS_PER_DAY;
+ } else {
+ validPeriod = pack.getRenewValidPeriod() * MS_PER_DAY;
+ }
+ Date expirationDate = new Date(new Date().getTime() + validPeriod);
+ return expirationDate;
+ }
+
+ /**
+ * Get the next free code suffis for a given Pack
+ *
+ * @param packId
+ * @param em
+ * @return
+ */
+ public int getNextCodeSuffix(int packId, EntityManager em) {
+ TypedQuery<Integer> query = em.createNamedQuery("last-code-suffix-used-in-pack", Integer.class);
+ query.setParameter("packId", packId);
+ Integer lastCodeSuffix = query.getSingleResult();
+ return lastCodeSuffix == null ? 1 : lastCodeSuffix + 1;
+ }
+
}
--
Gitblit v1.3.2