Index: lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGConstants.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGConstants.java 3 Sep 2010 13:45:06 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGConstants.java 3 Sep 2010 17:35:37 -0000 1.4 @@ -29,6 +29,8 @@ public static final String SVG_NAMESPACE = "http://www.w3.org/2000/svg";//SVGDOMImplementation.SVG_NAMESPACE_URI; public static final String SVG_NAMESPACE_XLINK = "http://www.w3.org/1999/xlink"; + public static final String ROOT_ELEMENT_ID = "rootElement"; + // canvas dimensions public static final String CANVAS_DEFAULT_WIDTH = "100%"; public static final String CANVAS_DEFAULT_HEIGHT = "100%"; Index: lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGGenerator.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGGenerator.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGGenerator.java 3 Sep 2010 13:45:06 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/util/svg/SVGGenerator.java 3 Sep 2010 17:35:37 -0000 1.4 @@ -60,22 +60,26 @@ public class SVGGenerator extends SVGConstants{ private SVGDocument doc; + private String width = null; + private String height = null; + private Double scale = null; /** * Sets up Svg root and defs. */ - private void initializeSvgDocument(String scale, String width, String height) { + private void initializeSvgDocument() { String canvasWidth = (width == null) ? CANVAS_DEFAULT_WIDTH : width; - String canvasGeigth = (height == null) ? CANVAS_DEFAULT_HEIGHT : height; + String canvasHeigth = (height == null) ? CANVAS_DEFAULT_HEIGHT : height; + Double scale = (this.scale == null) ? 1 : this.scale; // Create an SVG document. DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); doc = (SVGDocument) impl.createDocument(SVG_NAMESPACE, "svg", null); // Get the root element (the 'svg' element). Element svgRoot = doc.getDocumentElement(); // Set the width and height attributes on the root 'svg' element. - svgRoot.setAttributeNS(null, "width", CANVAS_DEFAULT_WIDTH); - svgRoot.setAttributeNS(null, "height", CANVAS_DEFAULT_HEIGHT); + svgRoot.setAttributeNS(null, "width", canvasWidth); + svgRoot.setAttributeNS(null, "height", canvasHeigth); svgRoot.setAttributeNS(null, "xmlns", SVG_NAMESPACE); svgRoot.setAttributeNS(null, "xmlns:xlink", SVG_NAMESPACE_XLINK); @@ -94,10 +98,22 @@ defs.appendChild(marker); Element path = doc.createElementNS(SVG_NAMESPACE, "path"); path.setAttributeNS(null, "d", "M 0 0 L 10 5 L 0 10 z"); - marker.appendChild(path); + marker.appendChild(path); + + // Create root g element + Element g = doc.createElementNS(SVG_NAMESPACE, "g"); + g.setAttributeNS(null, "id", ROOT_ELEMENT_ID); + g.setAttributeNS(null, "transform", "scale(" + scale + " ," + scale + ")"); + svgRoot.appendChild(g); } + public void setSVGDocumentParameters(String width, String height, Double scale) { + this.width = width; + this.height = height; + this.scale = scale; + } + public SVGDocument getSVGDocument() { return doc; } @@ -110,7 +126,7 @@ * @throws IOException */ public void generateSvg(LearningDesignDTO learningDesign) throws JDOMException, IOException { - initializeSvgDocument("0.5", null, null); + initializeSvgDocument(); //initialize all tree nodes ArrayList activities = learningDesign.getActivities(); @@ -134,7 +150,7 @@ } //**************** Draw transitions******************************************************** - Element svgRoot = doc.getDocumentElement(); + Element svgRoot = doc.getElementById(ROOT_ELEMENT_ID); ArrayList transitions = learningDesign.getTransitions(); for (TransitionDTO transition : transitions) { @@ -234,7 +250,7 @@ String parentID = (activity.getParentActivityID() == null) ? "0" : activity.getParentActivityID().toString(); g.setAttributeNS(null, "parentID", parentID); // Attach the g element to the root 'svg' element. - Element svgRoot = doc.getDocumentElement(); + Element svgRoot = doc.getElementById(ROOT_ELEMENT_ID); svgRoot.appendChild(g); int x = node.getActivityCoordinates().x; Index: lams_svggenerator/.classpath =================================================================== RCS file: /usr/local/cvsroot/lams_svggenerator/.classpath,v diff -u -r1.1 -r1.2 --- lams_svggenerator/.classpath 3 Sep 2010 13:08:28 -0000 1.1 +++ lams_svggenerator/.classpath 3 Sep 2010 17:40:36 -0000 1.2 @@ -10,5 +10,6 @@ + Index: lams_svggenerator/lib/commons-cli-1.2-sources.jar =================================================================== RCS file: /usr/local/cvsroot/lams_svggenerator/lib/commons-cli-1.2-sources.jar,v diff -u Binary files differ Index: lams_svggenerator/lib/commons-cli-1.2.jar =================================================================== RCS file: /usr/local/cvsroot/lams_svggenerator/lib/commons-cli-1.2.jar,v diff -u Binary files differ Index: lams_svggenerator/src/java/org/lamsfoundation/lams/svg/CommanLineSVGGenerator.java =================================================================== RCS file: /usr/local/cvsroot/lams_svggenerator/src/java/org/lamsfoundation/lams/svg/CommanLineSVGGenerator.java,v diff -u -r1.2 -r1.3 --- lams_svggenerator/src/java/org/lamsfoundation/lams/svg/CommanLineSVGGenerator.java 3 Sep 2010 13:45:36 -0000 1.2 +++ lams_svggenerator/src/java/org/lamsfoundation/lams/svg/CommanLineSVGGenerator.java 3 Sep 2010 17:40:36 -0000 1.3 @@ -1,4 +1,5 @@ package org.lamsfoundation.lams.svg; + /**************************************************************** * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) * ============================================================= @@ -27,6 +28,11 @@ import java.io.FileWriter; import java.io.IOException; +import org.apache.commons.cli.BasicParser; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; import org.apache.xml.serialize.OutputFormat; import org.apache.xml.serialize.XMLSerializer; import org.jdom.JDOMException; @@ -35,51 +41,77 @@ import org.lamsfoundation.lams.util.svg.SVGGenerator; /** - * The command line svggenerator; + * The command line svggenerator; * * @author Andrey Balan */ public class CommanLineSVGGenerator { - - public static void main(String[] args) throws JDOMException, IOException { + + public static void main(String[] args) throws JDOMException, IOException, ParseException { - if (args.length != 1) { - System.err.println("Usage: java -jar lams-svggenerator.jar absoluteFilePath"); + Options options = new Options(); + + options.addOption("file", true, "* Absolute path to file"); + options.addOption("width", true, "SVG width"); + options.addOption("height", true, "SVG height"); + options.addOption("scale", true, "scale"); + + BasicParser parser = new BasicParser(); + CommandLine cl = parser.parse(options, args); + + if (! cl.hasOption("file")) { + HelpFormatter f = new HelpFormatter(); + f.printHelp("OptionsTip", options); System.exit(1); } + + String fullFilePath = cl.getOptionValue("file"); + String width = cl.getOptionValue("width"); + String height = cl.getOptionValue("height"); + Double scale = null; + if (cl.hasOption("scale")) { + String scaleStr = cl.getOptionValue("scale"); + try { + scale = Double.valueOf(scaleStr); + } catch (NumberFormatException e) { + HelpFormatter f = new HelpFormatter(); + f.printHelp("OptionsTip", options); + System.exit(1); + } + } - String fullFilePath = args[0]; LearningDesignDTO learningDesign = (LearningDesignDTO) FileUtil.getObjectFromXML(null, fullFilePath); - - SVGGenerator svgGenerator = new SVGGenerator(); - svgGenerator.generateSvg(learningDesign); - -// // Stream out svg document to display -// OutputFormat format = new OutputFormat(svgGenerator.getSVGDocument()); -// format.setLineWidth(65); -// format.setIndenting(true); -// format.setIndent(2); -// Writer out = new StringWriter(); -// XMLSerializer serializer = new XMLSerializer(out, format); -// serializer.serialize(svgGenerator.getSVGDocument()); -// System.out.println(out.toString()); - - OutputFormat format = new OutputFormat(svgGenerator.getSVGDocument()); - format.setLineWidth(65); - format.setIndenting(true); - format.setIndent(2); - // Create file - String svgFileName = FileUtil.getFileName(fullFilePath); - String fileExtension = FileUtil.getFileExtension(svgFileName); - svgFileName = svgFileName.replaceFirst(fileExtension + "$", "svg"); - String svgFileFullPath = FileUtil.getFullPath(FileUtil.getFileDirectory(fullFilePath), svgFileName); - FileWriter fstream = new FileWriter(svgFileFullPath); - BufferedWriter out = new BufferedWriter(fstream); - XMLSerializer serializer = new XMLSerializer(out, format); - serializer.serialize(svgGenerator.getSVGDocument()); - System.out.println("Creating a file " + svgFileFullPath ); - // Close the output stream - out.close(); + + SVGGenerator svgGenerator = new SVGGenerator(); + svgGenerator.setSVGDocumentParameters(width, height, scale); + svgGenerator.generateSvg(learningDesign); + + // // Stream out svg document to display + // OutputFormat format = new OutputFormat(svgGenerator.getSVGDocument()); + // format.setLineWidth(65); + // format.setIndenting(true); + // format.setIndent(2); + // Writer out = new StringWriter(); + // XMLSerializer serializer = new XMLSerializer(out, format); + // serializer.serialize(svgGenerator.getSVGDocument()); + // System.out.println(out.toString()); + + OutputFormat format = new OutputFormat(svgGenerator.getSVGDocument()); + format.setLineWidth(65); + format.setIndenting(true); + format.setIndent(2); + // Create file + String svgFileName = FileUtil.getFileName(fullFilePath); + String fileExtension = FileUtil.getFileExtension(svgFileName); + svgFileName = svgFileName.replaceFirst(fileExtension + "$", "svg"); + String svgFileFullPath = FileUtil.getFullPath(FileUtil.getFileDirectory(fullFilePath), svgFileName); + FileWriter fstream = new FileWriter(svgFileFullPath); + BufferedWriter out = new BufferedWriter(fstream); + XMLSerializer serializer = new XMLSerializer(out, format); + serializer.serialize(svgGenerator.getSVGDocument()); + System.out.println("Creating a file " + svgFileFullPath ); + // Close the output stream + out.close(); } - + }