/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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 " + className + " {\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; } } }