/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.common.license;
import java.util.Date;
import com.jinhe.tss.core.ConfigurableContants;
import com.jinhe.tss.core.util.DateUtil;
import com.jinhe.tss.core.util.EasyUtils;
/**
* <p> License.java </p>
* 授权许可
*/
public final class License extends ConfigurableContants{
String product; //产品
String version; //版本号
String macAddress; //安装的服务器Mac地址
Date expiresDate; //过期时间
String licenseSignature; //license签名
LicenseType licenseType; //license类型
String getProduct() {
return product;
}
String getVersion() {
return version;
}
String getMacAddress() {
return macAddress;
}
Date getExpiresDate() {
return expiresDate;
}
String getLicenseSignature() {
return licenseSignature;
}
LicenseType getLicenseType() {
return licenseType;
}
/**
* 把license的属性值拼成一个字符串,然后转身字节数组
*/
public byte[] getFingerprint() {
StringBuffer buf = new StringBuffer(100);
buf.append(product).append(version).append(licenseType);
if(macAddress != null)
buf.append(macAddress);
if(expiresDate != null)
buf.append(DateUtil.format(expiresDate));
return buf.toString().getBytes();
}
public String toString() {
StringBuffer buf = new StringBuffer(100);
buf.append("product=" + product + "\n");
buf.append("version=" + version + "\n");
buf.append("type=" + licenseType + "\n");
if(expiresDate != null)
buf.append("expiry=" + DateUtil.format(expiresDate) + "\n");
if(macAddress != null && macAddress.length() > 0)
buf.append("macaddress=" + macAddress + "\n");
buf.append("signature=" + licenseSignature);
return buf.toString();
}
/**
* 读取许可文件
* @param fileName
*/
public static License fromConfigFile(String fileName) throws Exception {
init(LicenseFactory.LICENSE_DIR + "/" + fileName);
License license = new License();
license.product = getProperty("product");
license.version = getProperty("version");
license.licenseSignature = getProperty("signature");
String type = getProperty("type");
if( !EasyUtils.isNullOrEmpty(type) ) {
license.licenseType = new LicenseType(type);
}
String expiry = getProperty("expiry");
if( !EasyUtils.isNullOrEmpty(expiry) ) {
license.expiresDate = DateUtil.parse(expiry);
}
String macAddress = getProperty("macaddress");
if( !EasyUtils.isNullOrEmpty(macAddress) ) {
license.macAddress = macAddress;
}
return license;
}
/**
* 授权许可类型。
*/
static final class LicenseType {
static final LicenseType NON_COMMERCIAL = new LicenseType("Non-Commercial"); //非商业的
static final LicenseType COMMERCIAL = new LicenseType("Commercial"); // 商业的
static final LicenseType EVALUATION = new LicenseType("Evaluation"); // 评测的
static final LicenseType ADVANCED = new LicenseType("Advanced"); //高级的
final String name;
LicenseType(String name) {
this.name = name;
}
public String toString() {
return name;
}
public static LicenseType fromString(String type) {
if(COMMERCIAL.name.equals(type))
return COMMERCIAL;
if(EVALUATION.name.equals(type))
return EVALUATION;
if(ADVANCED.name.equals(type))
return ADVANCED;
else
return NON_COMMERCIAL;
}
}
}