[jboss-svn-commits] JBL Code SVN: r21225 - in labs/jbossrules/trunk/drools-guvnor/modules: imageset and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jul 25 10:50:59 EDT 2008


Author: arhan
Date: 2008-07-25 10:50:59 -0400 (Fri, 25 Jul 2008)
New Revision: 21225

Added:
   labs/jbossrules/trunk/drools-guvnor/modules/imageset/INSTALL.txt
   labs/jbossrules/trunk/drools-guvnor/modules/imageset/build.xml
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/build.xml
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator$EditorConfiguration.class
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.class
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.java
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/Generator.java
   labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/RulesNewMenuGenerator.java
Log:
GSOC2008: automating build for "plug-ins"

Added: labs/jbossrules/trunk/drools-guvnor/modules/imageset/INSTALL.txt
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/imageset/INSTALL.txt	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/imageset/INSTALL.txt	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,24 @@
+1) 'ant jar' in modules/imageset
+
+2) add rolodex-image-set-0.1.jar and gwt-rolodex-gwt15-1.1.jar to Guvnor's build.xml
+
+*) some manual code now:
+   modify properties / run 'ant plug-editors'
+   
+3) run 'ant gwt-compile'
+
+4) add rolodex-image-set-0.1.jar to Guvnor's pom.xml
+
+    <dependency>
+      <groupId>org.drools.guvnor</groupId>
+      <artifactId>rolodex-image-set</artifactId>
+      <version>0.1</version>
+    </dependency>
+
+5) install the new jar
+   mvn install:install-file -DgroupId=org.drools.guvnor -DartifactId=rolodex-image-set -Dversion=0.1 -Dpackaging=jar -Dfile=modules/imageset/rolodex-image-set-0.1.jar
+
+6) build Guvnor
+   mvn -Dmaven.test.skip=true clean install
+
+That's it!
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-guvnor/modules/imageset/build.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/imageset/build.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/imageset/build.xml	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+ @author Anton Arhipov
+-->
+<project name="guvnor.imageset" default="jar">
+    <property file="../../build.properties"/>
+
+    <target name="jar">
+        <delete dir="classes" quiet="true"/>
+        <mkdir dir="classes"/>
+        
+        <javac srcdir="src"
+               destdir="classes"
+               classpath="../../../lib/gwt-rolodex-gwt15-1.1.jar;${gwt.home}/gwt-user.jar;../../target/classes"
+               debug="on"/>
+        <copy todir="classes">
+            <fileset dir="src"/> 
+        </copy>
+        <jar destfile="rolodex-image-set-0.1.jar" basedir="classes"/>
+
+    </target>
+
+</project>
+

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/build.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/build.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/build.xml	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+
+<!--
+ @author Anton Arhipov
+-->
+<project name="guvnor.editors-task" default="jar">
+
+    <target name="jar">
+        <delete dir="classes" quiet="true"/>
+        <mkdir dir="classes"/>
+
+        <javac srcdir="src"
+               destdir="classes"
+               debug="on"/>
+        <copy todir="classes">
+            <fileset dir="src"/>
+        </copy>
+        <jar destfile="editors-task.jar" basedir="classes"/>
+
+    </target>
+
+</project>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator$EditorConfiguration.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator$EditorConfiguration.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.class
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.class
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/EditorLauncherGenerator.java	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,103 @@
+package org.drools.guvnor;
+
+/**
+ *
+ */
+public class EditorLauncherGenerator extends Generator {
+
+    public EditorLauncherGenerator() {
+        className = "EditorLauncher";
+        outPath = "src/main/java/org/drools/guvnor/client/ruleeditor";
+        configuration = "guvnor-editors.properties";
+    }
+
+    protected void collectImports() {
+        imports.add("java.util.HashMap");
+        imports.add("java.util.Map");
+        imports.add("com.google.gwt.user.client.ui.Widget");
+        imports.add("org.drools.guvnor.client.rpc.RuleAsset");
+        imports.add("org.drools.guvnor.client.ruleeditor.RuleViewer");
+    }
+
+    void processProperties(String key, String[] options) {
+        configs.add(new EditorConfiguration(key, options[0], options[1], options[2]));
+    }
+
+    String generateClassSource() {
+        StringBuffer sb = new StringBuffer("package org.drools.guvnor.client.ruleeditor;\n\n");
+
+        addImports(sb);
+
+        sb.append("\npublic class EditorLauncher {\n\n");
+        sb.append("  public static final Map TYPE_IMAGES = getTypeImages();\n\n");
+
+        generateGetEditorViewerMethod(sb);
+        generateGetAssetFormatIcon(sb);
+        generateGetTypeImagesMethod(sb);
+        return sb.toString();
+    }
+
+    private void generateGetTypeImagesMethod(StringBuffer sb) {
+        sb.append("  private static Map getTypeImages() {\n");
+        sb.append("    Map result = new HashMap();\n");
+        for (Object o : configs) {
+            EditorConfiguration config = (EditorConfiguration) o;
+            sb.append("    result.put( \"" + config.type + "\", \"" + config.icon + "\" );\n");
+        }
+        sb.append("    return result;\n");
+        sb.append("  }\n\n"); // getTypeImages
+
+        sb.append("}\n"); //class end
+    }
+
+    private void generateGetAssetFormatIcon(StringBuffer sb) {
+        sb.append("  public static String getAssetFormatIcon(String format) {\n" +
+                "    String result = (String) TYPE_IMAGES.get( format );\n" +
+                "    if (result == null) {\n" +
+                "      return \"rule_asset.gif\";\n" +
+                "    } else {\n" +
+                "      return result;\n" +
+                "    }\n" +
+                "  }\n\n"); // getAssetFormatIcon
+    }
+
+    private void generateGetEditorViewerMethod(StringBuffer sb) {
+        sb.append("  public static Widget getEditorViewer(RuleAsset asset, RuleViewer viewer) {\n");
+        for (Object o : configs) {
+            EditorConfiguration config = (EditorConfiguration) o;
+            sb.append("    if (asset.metaData.format.equals(\"" + config.type + "\")) {\n");
+
+            String line = "      return new ";
+            if (config.wrapper == null || "".equals(config.wrapper)) {
+                line += config.widget + "(asset, viewer)" + ";\n";
+            } else {
+                line += config.wrapper + "(\n             new " + config.widget + "(asset, viewer), asset)" + ";\n";
+            }
+
+            sb.append(line);
+            sb.append("    } else ");
+        }
+
+        sb.append("{\n      return new org.drools.guvnor.client.common.DefaultContentUploadEditor( asset, viewer );\n    }\n");
+        sb.append("  }\n\n"); // getEditorViewer
+    }
+
+    public static void main(String[] args) throws Exception {
+        new EditorLauncherGenerator().execute();
+    }
+
+    class EditorConfiguration {
+        String type;
+        String widget;
+        String wrapper;
+        String icon;
+
+        EditorConfiguration(String type, String widget, String wrapper, String icon) {
+            this.type = type;
+            this.widget = widget;
+            this.wrapper = wrapper;
+            this.icon = icon;
+        }
+    }
+
+}

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/Generator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/Generator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/Generator.java	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,99 @@
+package org.drools.guvnor;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+
+import java.io.*;
+import java.util.*;
+
+/**
+ *
+ */
+public abstract class Generator extends Task {
+
+    List<Object> configs;
+    Set<String> imports = new TreeSet<String>();
+
+    String configuration;
+    String outPath;
+    String className;
+
+    public String getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(String configuration) {
+        this.configuration = configuration;
+    }
+
+    public String getOutPath() {
+        return outPath;
+    }
+
+    public void setOutPath(String outPath) {
+        this.outPath = outPath;
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+
+    abstract void processProperties(String key, String[] options);
+
+    abstract String generateClassSource();
+
+    abstract void collectImports();
+
+    public void loadEditorsConfig() throws IOException {
+        Properties p = new Properties();
+        p.load(new FileInputStream(configuration));
+        for (Object o : p.keySet()) {
+            String key = (String) o;
+            String[] options = p.getProperty(key).split(";");
+            processProperties(key, options);
+        }
+    }
+
+    public void execute() throws BuildException {
+        System.out.println("--------- generating " + className + " ---------");
+        try {
+            System.out.println("loading configuration: " + configuration);
+            loadEditorsConfig();
+        } catch (IOException e) {
+            throw new BuildException(e);
+        }
+
+        System.out.println("collecting required imports");
+        collectImports();
+        System.out.println("generating the class source");
+        generate();
+        System.out.println("new " + className + " is created in " + outPath);
+        System.out.println("--------- " + className + " generated ---------");
+    }
+
+    protected void generate() {
+        String source = generateClassSource();
+        try {
+            File file = new File(outPath, className + ".java");
+            System.out.println("writing the new class to " + file.getAbsolutePath());
+            FileWriter fileWriter = new FileWriter(file);
+            BufferedWriter buffWriter = new BufferedWriter(fileWriter);
+            buffWriter.write(source);
+            buffWriter.flush();
+            buffWriter.close();
+            System.out.println("write complete");
+        } catch (IOException e) {
+            throw new BuildException(e);
+        }
+    }
+
+    void addImports(StringBuffer sb) {
+        for (String classImport : imports) {
+            sb.append("import " + classImport + ";\n");
+        }
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/RulesNewMenuGenerator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/RulesNewMenuGenerator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/modules/plug-editors/src/org/drools/guvnor/RulesNewMenuGenerator.java	2008-07-25 14:50:59 UTC (rev 21225)
@@ -0,0 +1,63 @@
+package org.drools.guvnor;
+
+/**
+ *
+ */
+public class RulesNewMenuGenerator extends Generator {
+
+    public RulesNewMenuGenerator() {
+        className = "RulesNewMenu";
+        outPath = "src/main/java/org/drools/guvnor/client/explorer";
+        configuration = "rules-new-menu.properties";
+    }
+
+    void processProperties(String key, String[] options) {
+        configs.add(new ItemConfiguration(key, options[0], options[1], options[2]));
+    }
+
+    String generateClassSource() {
+        StringBuffer sb = new StringBuffer("package org.drools.guvnor.client.explorer;\n\n");
+        sb.append("\npublic class EditorLauncher {\n\n");
+        sb.append("  public static Menu getMenu(final ExplorerLayoutManager manager) {\n");
+        sb.append("    Menu m = new Menu();");
+        for (Object o : configs) {
+            ItemConfiguration item = (ItemConfiguration) o;
+            sb.append("m.addItem(new Item(\"" + item.title + "\"), new BaseItemListenerAdapter() {\n");
+            sb.append("public void onClick(BaseItem item, EventObject e) {");
+            sb.append("manager.launchWizard(\"" + item.type + "\", \"" + item.title + "\", " + item.showCategories + ");");
+            sb.append("}");
+            sb.append("}, \"" + item.icon + "\"));");
+        }
+        sb.append("  }");
+        sb.append("}");
+        return sb.toString();
+    }
+
+    void collectImports() {
+        imports.add("com.gwtext.client.widgets.menu.Menu");
+        imports.add("com.gwtext.client.widgets.menu.Item");
+        imports.add("com.gwtext.client.widgets.menu.BaseItem");
+        imports.add("com.gwtext.client.widgets.menu.event.BaseItemListenerAdapter");
+        imports.add("com.gwtext.client.core.EventObject");
+        imports.add("org.drools.guvnor.client.common.AssetFormats");
+    }
+
+    class ItemConfiguration {
+        String type;
+        String title;
+        String showCategories;
+        String icon;
+
+        ItemConfiguration(String type, String title, String showCategories, String icon) {
+            this.type = type;
+            this.title = title;
+            this.showCategories = showCategories;
+            this.icon = icon;
+        }
+    }
+
+    public static void main(String[] args) {
+        new RulesNewMenuGenerator().execute();
+    }
+
+}




More information about the jboss-svn-commits mailing list