package com.wilutions.com;
import java.io.File;
import java.io.IOException;
public class DDAddinDll extends LoadDll {
private final static String ADDIN_NAME = "WI: DnD for Issue Tracker";
private final static String ADDIN_DESCRIPTION = "This Add-in allows to drag and drop mails from Outlook into web browsers and other appliations.";
static {
boolean isDebug = true;
String fileName = "ddaddin" + get3264();
String fileNameWithExt = fileName + ".dll";
// Debugging: load from C++ output directories
if (isDebug && loadLib("D:\\git\\outldd\\ddaddin\\Debug\\" + fileNameWithExt, false)) {
}
else if (isDebug && loadLib("D:\\git\\outldd\\ddaddin\\Debug\\" + fileNameWithExt, false)) {
}
// Packaged application loads joa.dll from current directory
else if (myloadLib(fileName, false)) {
}
// Java archive joa-with-dlls.jar loads joa.dll from temporary directory
else {
try {
File tempDir = JoaDll.getTempDir();
File joadll = new File(tempDir, fileNameWithExt);
// try to load from temp dir
if (!loadLib(joadll.getAbsolutePath(), false)) {
// failed, extract joa.dll into temp dir
copyNativesToTemp(tempDir, "ddaddin32.dll", "ddaddin64.dll");
// try again to load from temp dir
loadLib(joadll.getAbsolutePath(), true);
}
} catch (IOException e1) {
e1.printStackTrace();
throw new UnsatisfiedLinkError(e1.toString());
}
}
}
private static boolean myloadLib(String lib, boolean throwEx) {
return LoadDll.loadLib(lib, throwEx);
}
public static boolean install(String license, boolean installForUser) {
return nativeInstall(license, ADDIN_NAME, ADDIN_DESCRIPTION, installForUser);
}
public static void uninstall(boolean installForUser) {
nativeUninstall("", ADDIN_NAME, ADDIN_DESCRIPTION, installForUser);
}
public static String getLicenseTimeLimit() {
return nativeGetLicenseTimeLimit();
}
public static String getLicenseKey() {
return nativeGetLicenseKey();
}
public static int getLicenseCount() {
return nativeGetLicenseCount();
}
public static void openLogFile(String logFile, String level, boolean append) {
nativeOpenLogFile(logFile, level, append);
}
public static void closeLogFile() {
nativeCloseLogFile();
}
public static void setProductName(String productName) {
nativeSetProductName(productName);
}
public static boolean validateLicense(String customer, String date, String opts, String installMaxStr, int checksum) {
return nativeValidateLicense(customer, date, opts, installMaxStr, checksum);
}
private static native void nativeSetProductName(String productName);
private static native boolean nativeInstall(String license, String addinName, String addinDescription, boolean installForUser);
private static native void nativeUninstall(String license, String addinName, String addinDescription, boolean installForUser);
private static native String nativeGetLicenseTimeLimit();
private static native String nativeGetLicenseKey();
private static native int nativeGetLicenseCount();
private static native void nativeOpenLogFile(String logFile, String level, boolean append);
private static native void nativeCloseLogFile();
private static native boolean nativeValidateLicense(String customer, String date, String opts, String installMaxStr, int checksum);
}