package de.finetech.groovy;

import groovy.lang.Binding;
import groovy.lang.GroovyShell;

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;

import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.customizers.ImportCustomizer;

import de.abas.eks.jfop.FOPException;
import de.abas.eks.jfop.remote.FO;
import de.abas.eks.jfop.remote.FOPRunnable;

/**
 * @author Michael Kürbis, Finetech GmbH & Co. KG
 * 
 *         JFOP erwartet als zweiten Parameter das Groovyscript welches
 *         ausgeführt werden soll und übergibt alle parameter an dieses weiter
 * 
 */
public class ScriptExcecuter implements FOPRunnable {

	public int runFop(String[] arg0) throws FOPException {
		// Genug Parameter übergben?
		if (arg0.length > 1) {
			File groovyScript = new File(arg0[1]);
			// existiert die Datei ?
			if (groovyScript.exists()) {
				// ist es eine Datei ?
				if (groovyScript.isFile()) {
					try {
						Binding binding = new Binding();
						// Parameter weitergeben
						binding.setVariable("arg", arg0);

						// Imports festlegen damit diese nicht selbst
						// hinzugefügt werden müssen
						CompilerConfiguration cc = new CompilerConfiguration();
						ImportCustomizer ic = new ImportCustomizer();
						// abas Standard
						ic.addStarImports("de.abas.eks.jfop.remote");
						ic.addStarImports("de.finetech.groovy");
						ic.addImports("java.awt.Color");
						// ic.addStaticImport("de.finetech.groovy.SelectionBuilder",
						// "SelectionBuilder");
						cc.addCompilationCustomizers(ic);
						// Basisklasse festlegen
						cc.setScriptBaseClass("de.finetech.groovy.AbasBaseScript");

						// Script ausführen
						GroovyShell shell = new GroovyShell(this.getClass()
								.getClassLoader(), binding, cc);
						shell.evaluate(groovyScript);

						return 0;
					} catch (Exception e) {
						StringWriter sw = new StringWriter();
						PrintWriter pw = new PrintWriter(sw);
						e.printStackTrace(pw);
						FO.box("Unbehandelte Ausnahme in " + arg0[1],
								sw.toString());
					}
				} else {
					FO.box("Unzureichende Argumente",
							"Groovy Script ist keine Datei!");
				}
			} else {
				FO.box("Unzureichende Argumente",
						"Groovy Script existiert nicht!");
			}
		} else {
			FO.box("Unzureichende Argumente", "keine Groovy Script angegeben!");
		}
		return -1;
	}
}
@@ -428,17 +428,18 @@
 ichael K
-%C3%BC
+%C3%83%C2%BC
 rbis, Fi
@@ -552,17 +552,18 @@
   ausgef
-%C3%BC
+%C3%83%C2%BC
 hrt werd
@@ -574,17 +574,18 @@
 oll und 
-%C3%BC
+%C3%83%C2%BC
 bergibt 
@@ -756,17 +756,18 @@
 rameter 
-%C3%BC
+%C3%83%C2%BC
 bergben?
@@ -1145,17 +1145,18 @@
 hinzugef
-%C3%BC
+%C3%83%C2%BC
 gt werde
@@ -1158,17 +1158,18 @@
 werden m
-%C3%BC
+%C3%83%C2%BC
 ssen%0A%09%09%09
@@ -1350,24 +1350,82 @@
 p.remote%22);%0A
+%09%09%09%09%09%09// ic.addStaticStars(%22de.abas.eks.jfop.remote.FO%22);%0A
 %09%09%09%09%09%09ic.add
@@ -1494,24 +1494,123 @@
 wt.Color%22);%0A
+%09%09%09%09%09%09ic.addImports(%22de.finetech.utils.Infosystemcall%22, %22de.finetech.utils.InfosystemcallResult%22);%0A
 %09%09%09%09%09%09// ic.
@@ -1856,9 +1856,10 @@
 ausf
-%C3%BC
+%C3%83%C2%BC
 hren
@@ -2539,9 +2539,10 @@
  -1;%0A%09%7D%0A
-
 %7D
+%0A

Update ScriptExcecuter.java