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);
+ }
+}