package net.curisit.securis.services.helpers; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Date; import javax.inject.Inject; import javax.inject.Singleton; import javax.persistence.EntityManager; import net.curisit.securis.db.License; import net.curisit.securis.db.LicenseHistory; import net.curisit.securis.db.LicenseStatus; import net.curisit.securis.db.User; import net.curisit.securis.security.BasicSecurityContext; import net.curisit.securis.services.exception.SeCurisServiceException; import org.apache.commons.io.FileUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @Singleton public class LicenseHelper { private static final Logger LOG = LogManager.getLogger(LicenseHelper.class); @Inject private UserHelper userHelper; /** * Cancel the license * * @param lic * @param em */ public void cancelLicense(License lic, String reason, BasicSecurityContext bsc, EntityManager em) throws SeCurisServiceException { lic.setStatus(LicenseStatus.CANCELLED); lic.setCancelledById(bsc.getUserPrincipal().getName()); lic.setModificationTimestamp(new Date()); em.persist(lic); em.persist(createLicenseHistoryAction(lic, userHelper.getUser(bsc, em), LicenseHistory.Actions.CANCEL, "Cancellation reason: " + reason)); } public LicenseHistory createLicenseHistoryAction(License lic, User user, String action, String comments) { LicenseHistory lh = new LicenseHistory(); lh.setLicense(lic); lh.setUser(user); lh.setCreationTimestamp(new Date()); lh.setAction(action); lh.setComments(comments); return lh; } public LicenseHistory createLicenseHistoryAction(License lic, User user, String action) { return createLicenseHistoryAction(lic, user, action, null); } 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; } }