Revision: 3773
Author: [email protected]
Date: Thu Jul 22 08:25:22 2010
Log: Added hooks to the report generation panel and the report transformers for inserting option checkboxes and setting parameters. The VelocityTransform's setParameter is currently a stub.
http://code.google.com/p/power-architect/source/detail?r=3773

Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportHTMLPanel.java /trunk/src/main/java/ca/sqlpower/architect/transformation/ReportTransformer.java /trunk/src/main/java/ca/sqlpower/architect/transformation/VelocityTransformation.java /trunk/src/main/java/ca/sqlpower/architect/transformation/XsltTransformation.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportHTMLPanel.java Tue Jul 20 14:47:14 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/action/ExportHTMLPanel.java Thu Jul 22 08:25:22 2010
@@ -75,6 +75,7 @@
private static final Logger logger = Logger.getLogger(ExportHTMLPanel.class);

private static String builtinTransform = "/xsltStylesheets/architect2html.xslt";
+       private static BuiltinOptionPanelFactory builtinOptions;

        private JRadioButton builtin;
        private JRadioButton external;
@@ -92,6 +93,8 @@
        private JDialog dialog;

     private final JPanel panel;
+
+    private final BuiltinOptionPanel builtinOptionPanel;

        private static final String PREF_KEY_BUILTIN = "htmlgen.builtin";
        private static final String PREF_KEY_LAST_XSLT = "htmlgen.lastxslt";
@@ -99,9 +102,14 @@
        private static final String PREF_KEY_OUTPUT = "htmlgen.lastoutput";
        private static final int MAX_HISTORY_ENTRIES = 15;

+
        public static void setBuiltinTransform(String builtinTransform) {
            ExportHTMLPanel.builtinTransform = builtinTransform;
        }
+
+ public static void setBuiltinOptionPanelFactory(BuiltinOptionPanelFactory builtinOptions) {
+        ExportHTMLPanel.builtinOptions = builtinOptions;
+       }

        public ExportHTMLPanel(ArchitectSwingSession architect) {

@@ -122,6 +130,14 @@

                // place Radio buttons
                builder.append(builtin, 5);
+               builder.appendRelatedComponentsGapColumn();
+               if (builtinOptions != null) {
+                   builtinOptionPanel = builtinOptions.createPanel();
+                   builder.append("");
+            builder.append(builtinOptionPanel, 4);
+               } else {
+                   builtinOptionPanel = null;
+               }

                builder.appendUnrelatedComponentsGapRow();
                builder.nextLine();
@@ -384,7 +400,6 @@
                        return fo.getAbsolutePath();
                }
        }
-

        private void selectTemplate() {
JFileChooser chooser = new JFileChooser(session.getProjectLoader().getFile());
@@ -500,6 +515,10 @@
                        return;
                }

+               if (builtinOptionPanel != null) {
+                   builtinOptionPanel.applyChanges(transformer);
+               }
+
                try {
                        File xslt = getTemplateFile();
                        if (xslt == null) {
@@ -576,6 +595,14 @@
                        return comp;
                }
        }
+
+       public static abstract class BuiltinOptionPanel extends JPanel {
+           public abstract void applyChanges(ReportTransformer transformer);
+       }
+
+       public static interface BuiltinOptionPanelFactory {
+           public BuiltinOptionPanel createPanel();
+       }
 }


=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/transformation/ReportTransformer.java Mon Jul 20 08:16:16 2009 +++ /trunk/src/main/java/ca/sqlpower/architect/transformation/ReportTransformer.java Thu Jul 22 08:25:22 2010
@@ -43,4 +43,9 @@
         */
void transform(File template, File output, ArchitectSwingSession session) throws Exception;

-}
+       /**
+        * Sets a parameter, to be used in the transformation step.
+        */
+       void setParameter(String name, Object value);
+
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/transformation/VelocityTransformation.java Fri Jul 31 14:54:37 2009 +++ /trunk/src/main/java/ca/sqlpower/architect/transformation/VelocityTransformation.java Thu Jul 22 08:25:22 2010
@@ -28,14 +28,14 @@
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.VelocityEngine;
-
-import ca.sqlpower.architect.swingui.ArchitectSwingSession;
-import ca.sqlpower.sqlobject.SQLType;
 import org.apache.velocity.tools.generic.AlternatorTool;
 import org.apache.velocity.tools.generic.DateTool;
 import org.apache.velocity.tools.generic.NumberTool;
 import org.apache.velocity.tools.generic.SortTool;

+import ca.sqlpower.architect.swingui.ArchitectSwingSession;
+import ca.sqlpower.sqlobject.SQLType;
+
 /**
  *
  * @author Thomas Kellerer
@@ -85,5 +85,11 @@
                        IOUtils.closeQuietly(writer);
                }
        }
+
+    @Override
+    public void setParameter(String name, Object value) {
+        // TODO Auto-generated method stub
+
+    }

 }
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/transformation/XsltTransformation.java Mon Jul 12 15:14:09 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/transformation/XsltTransformation.java Thu Jul 22 08:25:22 2010
@@ -18,8 +18,6 @@
  */
 package ca.sqlpower.architect.transformation;

-import ca.sqlpower.architect.swingui.ArchitectSwingSession;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -27,6 +25,9 @@
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;

 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
@@ -36,6 +37,8 @@
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;

+import ca.sqlpower.architect.swingui.ArchitectSwingSession;
+
 /**
  * This class transforms xml content from the InputStream passed, into the
  * format specified by the xslt stylesheet and sends the results to an
@@ -46,6 +49,8 @@

        private File baseDir;
        private File projectDir;
+
+       private Map<String, Object> parameters = new HashMap<String, Object>();

        public XsltTransformation() {
        }
@@ -110,7 +115,9 @@
                transFact.setURIResolver(this);
                Transformer trans = transFact.newTransformer(xsltSource);

-
+               for (Entry<String, Object> entry : parameters.entrySet()) {
+                   trans.setParameter(entry.getKey(), entry.getValue());
+               }

                trans.transform(xmlSource, new StreamResult(result));
                result.flush();
@@ -182,4 +189,9 @@
                        return null;
                }
        }
-}
+
+    @Override
+    public void setParameter(String name, Object value) {
+        parameters.put(name, value);
+    }
+}

Reply via email to