/* * Copyright 2009 Red Hat, Inc. * Portions licensed by WSO2, 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.jboss.soa.bpel.bpel2svg; import org.apache.axiom.om.OMElement; import org.wso2.carbon.bpel.ui.bpel2svg.*; import org.wso2.carbon.bpel.ui.bpel2svg.impl.BPELImpl; import org.wso2.carbon.bpel.ui.bpel2svg.impl.SVGImpl; /** * This class provides the utility for converting a BPEL process description * into a SVG format, which can then optionally be transformed into a range of * alternative supported image types. * */ public class BPEL2SVGUtil { //public static final String JPEG_IMAGE = "jpeg"; public static final String PNG_IMAGE = "png"; public static final String SVG_IMAGE = "svg"; private static java.util.Map<String, SVGImageTransformer> m_transformers= new java.util.HashMap<String, SVGImageTransformer>(); static { m_transformers.put(SVG_IMAGE, new SVGToSVGImageTransformer()); m_transformers.put(PNG_IMAGE, new SVGToPNGImageTransformer()); //m_transformers.put(JPEG_IMAGE, new SVGToJPEGImageTransformer()); - commented out as JPEG not working currently } public static void main(String[] args) { if (args.length < 2 || args.length > 3) { System.err.println("Usage: BPEL2SVGUtil <bpelFile> <outputFile> [ <transformType> ]"); System.err.println("(transformerType values are: "+PNG_IMAGE+","+SVG_IMAGE+")"); System.exit(1); } SVGImageTransformer transformer=null; if (args.length == 3) { transformer = BPEL2SVGUtil.getTransformer(args[2]); if (transformer == null) { System.err.println("Unknown transformerType '"+args[2]+ "', valid values are: "+PNG_IMAGE+","+SVG_IMAGE); System.exit(1); } } else { transformer = BPEL2SVGUtil.getTransformer("svg"); } try { java.io.FileInputStream fis=new java.io.FileInputStream(args[0]); java.io.FileOutputStream os=new java.io.FileOutputStream(args[1]); SVGInterface svg=BPEL2SVGUtil.generate(fis); ActivityInterface seq=svg.getActivityAtLineNumber(53); ActivityInterface recv=svg.getActivityAtLineNumber(61); ActivityInterface assign=svg.getActivityAtLineNumber(64); /* seq.setState(ActivityState.Failed); recv.setState(ActivityState.Completed); assign.setState(ActivityState.Failed); */ /* seq.setState(ActivityState.Active); recv.setState(ActivityState.Completed); assign.setState(ActivityState.Active); */ transformer.transform(svg, os); fis.close(); os.close(); } catch(Exception e) { e.printStackTrace(); } } /** * This method generates a SVG representation of a supplied BPEL description, * and optionally transforms it into an image format. If an image * transformer is not specified, then the SVG representation will be * returned in the output stream. * * @param is The textual representation of a BPEL description * @param os The output stream for the SVG or image representation * @param transformer The optional image transformer * @throws java.io.IOException Failed to generate the representation */ public static void generate(java.io.InputStream is, java.io.OutputStream os, SVGImageTransformer transformer) throws java.io.IOException { SVGImpl svg = generateSVGImpl(is); if (transformer == null) { String str=svg.getHeaders()+svg.generateSVGString(); os.write(str.getBytes()); } else { transformer.transform(svg, os); } } /** * This method generates a SVG representation of a supplied BPEL description. * * @param is The textual representation of a BPEL description * @throws java.io.IOException Failed to generate the representation */ public static SVGInterface generate(java.io.InputStream is) throws java.io.IOException { return(generateSVGImpl(is)); } protected static SVGImpl generateSVGImpl(java.io.InputStream is) throws java.io.IOException { byte[] b=new byte[is.available()]; is.read(b); BPELInterface bpel = new BPELImpl(); OMElement bpelStr = bpel.load(new String(b)); bpel.processBpelString(bpelStr); LayoutManager layoutManager = BPEL2SVGFactory.getInstance().getLayoutManager(); layoutManager.setVerticalLayout(true); layoutManager.setYSpacing(20); layoutManager.setYSpacing(50); layoutManager.layoutSVG(bpel.getRootActivity()); SVGImpl svg = new SVGImpl(); svg.setRootActivity(bpel.getRootActivity()); return(svg); } /** * This method returns the SVG image transformer associated with the * supplied code. * * @param code The image transformer code * @return The transformer, or null if not found */ public static SVGImageTransformer getTransformer(String code) { return(m_transformers.get(code)); } }