summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pdf-over-install-helper/pom.xml64
-rw-r--r--pdf-over-install-helper/src/main/java/at/asit/helper/Main.java133
2 files changed, 197 insertions, 0 deletions
diff --git a/pdf-over-install-helper/pom.xml b/pdf-over-install-helper/pom.xml
new file mode 100644
index 00000000..17314706
--- /dev/null
+++ b/pdf-over-install-helper/pom.xml
@@ -0,0 +1,64 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>at.a-sit</groupId>
+ <artifactId>pdf-over</artifactId>
+ <version>4.1.17-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>pdf-over-install-helper</artifactId>
+ <version>1.0.0</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <verbose>true</verbose>
+ <showWarnings>true</showWarnings>
+ <showDeprecation>true</showDeprecation>
+ <encoding>UTF-8</encoding>
+ <debug>true</debug>
+ <debuglevel>lines,vars,source</debuglevel>
+ </configuration>
+ </plugin>
+<!-- <plugin> -->
+<!-- <artifactId>maven-release-plugin</artifactId> -->
+<!-- <version>2.4.2</version> -->
+<!-- <dependencies> -->
+<!-- <dependency> -->
+<!-- <groupId>org.apache.maven.scm</groupId> -->
+<!-- <artifactId>maven-scm-provider-gitexe</artifactId> -->
+<!-- <version>1.8.1</version> -->
+<!-- </dependency> -->
+<!-- </dependencies> -->
+<!-- </plugin> -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>at.asit.helper.Main</mainClass>
+ </manifest>
+ <addMavenDescriptor>false</addMavenDescriptor>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project> \ No newline at end of file
diff --git a/pdf-over-install-helper/src/main/java/at/asit/helper/Main.java b/pdf-over-install-helper/src/main/java/at/asit/helper/Main.java
new file mode 100644
index 00000000..6fd5bdbb
--- /dev/null
+++ b/pdf-over-install-helper/src/main/java/at/asit/helper/Main.java
@@ -0,0 +1,133 @@
+package at.asit.helper;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+import org.apache.commons.io.FileUtils;
+
+
+
+
+/***
+ *
+ * @author aabraham
+ *
+ * @version 1.0.0
+ *
+ * The created jar is used as helper library when installing pdf-over.
+ * Basically, the helper determines the java version used including architecture and
+ * appends afterwards the right swt library since this swt is platform dependend.
+ *
+ */
+public class Main {
+
+ public static void main(String[] args) {
+
+ System.out.println("start post install task");
+
+ copyLib();
+
+ }
+
+
+ public static int getArchBits() {
+ String arch = System.getProperty("os.arch");
+ return arch.contains("64") ? 64 : 32;
+ }
+
+ public static String getSwtJarName() throws SWTLoadFailedException {
+ String os = System.getProperty("os.name").toLowerCase();
+ if (os.contains("win"))
+ os = "windows";
+ else if (os.contains("mac"))
+ os = "mac";
+ else if (os.contains("linux") || os.contains("nix"))
+ os = "linux";
+ else {
+ throw new SWTLoadFailedException("Unknown OS: " + os);
+ }
+ return "swt-" + os + "-" + getArchBits() + ".jar";
+ }
+
+ public static String getSwtJarPath() {
+ String path = "";
+ try {
+ path = URLDecoder.decode(Main.class.getProtectionDomain().getCodeSource().getLocation().getPath(), "UTF-8");
+ int idx = path.lastIndexOf('/');
+ idx = path.lastIndexOf('/', idx - 1);
+ path = path.substring(0, idx + 1);
+ } catch (UnsupportedEncodingException e) {
+ // Ignore
+ System.err.println("Unsuported Encoding Exception " + e.getMessage());
+ }
+ return path + "lib-swt/";
+ }
+
+ private static class SWTLoadFailedException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ SWTLoadFailedException(String msg) {
+ super(msg);
+ }
+ }
+
+
+ private static String getSwtTargetLibName() throws SWTLoadFailedException {
+
+ String os = System.getProperty("os.name").toLowerCase();
+ System.out.println("OS " + os + " detected!");
+ String swtTargetLibName;
+
+ if (os.contains("win")) {
+ swtTargetLibName = "org.eclipse.swt.win32.win32.x86-4.3.2.jar";
+ }
+ else if (os.contains("mac")) {
+ swtTargetLibName = "org.eclipse.swt.cocoa.macosx-4.3.2.jar";
+ }
+ else if (os.contains("linux") || os.contains("nix")) {
+ swtTargetLibName = "org.eclipse.swt.gtk.linux.x86-4.3.2.jar";
+ }
+ else {
+ throw new SWTLoadFailedException("Unknown OS: " + os);
+ }
+ return swtTargetLibName;
+
+
+ }
+
+
+ private static void copyLib() {
+ try {
+ String swtLibPath = Main.getSwtJarPath() + Main.getSwtJarName();
+ File swtLib = new File(swtLibPath);
+ if (!swtLib.isFile()) {
+
+ System.err.println("not found ");
+ throw new SWTLoadFailedException("Library " + swtLibPath + " not found");
+ }
+
+ String newPath = swtLibPath.replace("lib-swt", "lib");
+ newPath = newPath.replace(Main.getSwtJarName(), getSwtTargetLibName());
+ File newFile = new File(newPath);
+ System.out.println("Source Lib " + swtLibPath.toString());
+ System.out.println("Target Lib " + newFile.toString());
+ FileUtils.copyFile(swtLib, newFile);
+
+ if (!newFile.isFile()) {
+ System.err.println("not found ");
+ throw new SWTLoadFailedException("Library " + swtLibPath + " not found");
+ }
+
+ System.out.println("success ");
+ return;
+
+
+ } catch(Exception e){
+ e.printStackTrace();
+ }
+
+ }
+
+
+}