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.addStaticStars("de.abas.eks.jfop.remote.FO");
						ic.addStarImports("de.finetech.groovy");
						ic.addImports("java.awt.Color");
						ic.addImports("de.finetech.utils.Infosystemcall", "de.finetech.utils.InfosystemcallResult");
						// 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;
	}
}

@@ -1358,66 +1358,8 @@
 %22);%0A
-%09%09%09%09%09%09// ic.addStaticStars(%22de.abas.eks.jfop.remote.FO%22);%0A
 %09%09%09%09
@@ -1397,24 +1397,34 @@
 h.groovy%22);%0A
+%09%09%09%09%09%09// %0A
 %09%09%09%09%09%09ic.add
@@ -1447,16 +1447,126 @@
 t.Color%22
+, %22java.util.Calendar%22,%0A%09%09%09%09%09%09%09%09%22java.text.SimpleDateFormat%22,%0A%09%09%09%09%09%09%09%09%22java.text.DateFormat%22, %22java.util.Date%22
 );%0A%09%09%09%09%09
@@ -1615,17 +1615,25 @@
 emcall%22,
- 
+%0A%09%09%09%09%09%09%09%09
 %22de.fine

Update ScriptExcecuter.java