/* Copyright (C) 2001, 2007 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind.applications.sar; import gov.nasa.worldwind.WWObjectImpl; import gov.nasa.worldwind.WorldWind; import gov.nasa.worldwind.avlist.AVList; import gov.nasa.worldwind.avlist.AVKey; import gov.nasa.worldwind.util.Logging; import gov.nasa.worldwind.util.WWIO; import java.awt.*; import java.io.File; /** * @author dcollins * @version $Id: LicenseAgreement.java 4944 2008-04-07 20:12:10Z dcollins $ */ public class LicenseAgreement extends WWObjectImpl { private final Object license; private final String licenseKey; public static final String LICENSE_KEY_CACHE_NAME = AVKey.DATA_CACHE_NAME; public static final String LICENSE_CONTENT_TYPE = "gov.nasa.worldwind.ContentType"; public static final String DIALOG_PREFERRED_SIZE = "gov.nasa.worldwind.PreferredSize"; public static final String DIALOG_TITLE = AVKey.TITLE; private static final String DEFAULT_LICENSE_KEY_CACHE_NAME = "license"; private static final String DEFAULT_LICENSE_CONTENT_TYPE = "text/plain"; private static final String DEFAULT_DIALOG_TITLE = "License Agreement"; public static final String LICENSE_ACCEPTED = "gov.nasa.worldwind.LicenseAccepted"; public static final String LICENSE_ACCEPTED_AND_INSTALLED = "gov.nasa.worldwind.LicenseAcceptedAndInstalled"; public static final String LICENSE_DECLINED = "gov.nasa.worldwind.LicenseDeclined"; public LicenseAgreement(Object license, String licenseKey) { this(license, licenseKey, null); } public LicenseAgreement(Object license, String licenseKey, AVList params) { if (license == null) { String message = "nullValue.licenseIsNull"; Logging.logger().severe(message); throw new IllegalArgumentException(message); } if (licenseKey == null) { String message = "nullValue.licenseKeyIsNull"; Logging.logger().severe(message); throw new IllegalArgumentException(message); } this.license = license; this.licenseKey = licenseKey; if (params != null) setValues(params); } public final Object getLicense() { return this.license; } public final String getLicenseKey() { return this.licenseKey; } public String checkForLicenseAgreement(Component parentComponent) { // License has already been accepted and installed. if (isLicenseInstalled()) return LICENSE_ACCEPTED_AND_INSTALLED; // License is not installed - display license agreement. int result = displayLicenseAgreement(parentComponent); if (result == LicenseDialog.DECLINE_OPTION) return LICENSE_DECLINED; // Install the license key only if the user accepted, // and no problems occurred displaying the license. if (result == LicenseDialog.ACCEPT_OPTION) installLicenseKey(); return isLicenseInstalled() ? LICENSE_ACCEPTED_AND_INSTALLED : LICENSE_ACCEPTED; } public int displayLicenseAgreement(Component parentComponent) { String contentType = getStringValue(this, LICENSE_CONTENT_TYPE, DEFAULT_LICENSE_CONTENT_TYPE); Object dialogSize = getValue(DIALOG_PREFERRED_SIZE); String dialogTitle = getStringValue(this, DIALOG_TITLE, DEFAULT_DIALOG_TITLE); LicenseDialog dialog = new LicenseDialog(this.license); dialog.setContentType(contentType); dialog.setTitle(dialogTitle); if (dialogSize != null && dialogSize instanceof Dimension) dialog.setPreferredSize((Dimension) dialogSize); return dialog.showDialog(parentComponent); } public boolean isLicenseInstalled() { File keyFile = getLicenseKeyFile(); return keyFile != null && keyFile.exists(); } private void installLicenseKey() { File keyFile = getLicenseKeyFile(); try { if (keyFile != null) keyFile.createNewFile(); } catch (Exception e) { String message = "Exception while installing license key file"; Logging.logger().log(java.util.logging.Level.SEVERE, message, e); } } private File getLicenseKeyFile() { File keyFile = null; try { String cacheName = getStringValue(this, LICENSE_KEY_CACHE_NAME, DEFAULT_LICENSE_KEY_CACHE_NAME); String keyPath = WWIO.formPath(cacheName, this.licenseKey); keyFile = WorldWind.getDataFileCache().newFile(keyPath); } catch (Exception e) { String message = "Exception while searching license key file"; Logging.logger().log(java.util.logging.Level.SEVERE, message, e); } return keyFile; } }