[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