Coverage Report - th.co.edge.jseq.sdedit.SdeditPngDiagram
 
Classes in this File Line Coverage Branch Coverage Complexity
SdeditPngDiagram
0%
0/12
N/A
0
 
 1  
 /*
 2  
  * Copyright (c) 2003-2008, by Henrik Arro and Contributors
 3  
  *
 4  
  * This file is part of JSeq, a tool to automatically create
 5  
  * sequence diagrams by tracing program execution.
 6  
  *
 7  
  * See <http://jseq.sourceforge.net> for more information.
 8  
  *
 9  
  * JSeq is free software: you can redistribute it and/or modify
 10  
  * it under the terms of the GNU Lesser General Public License as
 11  
  * published by the Free Software Foundation, either version 3 of
 12  
  * the License, or (at your option) any later version.
 13  
  *
 14  
  * JSeq is distributed in the hope that it will be useful,
 15  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 16  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 17  
  * GNU Lesser General Public License for more details.
 18  
  *
 19  
  * You should have received a copy of the GNU Lesser General Public License
 20  
  * along with JSeq. If not, see <http://www.gnu.org/licenses/>.
 21  
  */
 22  
 
 23  
 package th.co.edge.jseq.sdedit;
 24  
 
 25  
 import java.io.File;
 26  
 import java.io.IOException;
 27  
 
 28  
 import net.sf.sdedit.Main;
 29  
 import th.co.edge.jseq.ActivationList;
 30  
 import th.co.edge.jseq.Diagram;
 31  
 
 32  
 /**
 33  
  * An <code>SdeditPngDiagram</code> is a <code>Diagram</code> that can be
 34  
  * used to generate sequence diagrams in PNG format, using the <a
 35  
  * href="http://sdedit.sourceforge.net/" target="new">Quick Sequence Diagram
 36  
  * Editor</a> to create the image.
 37  
  *
 38  
  * @author jacek.ratzinger
 39  
  */
 40  
 public class SdeditPngDiagram implements Diagram {
 41  
 
 42  
     private static final String DEFAULT_PNG_FILE_EXTENSION = ".png";
 43  
 
 44  
     private final SdeditTextDiagram textDiagram;
 45  
 
 46  
     /**
 47  
      * Creates a new <code>SdeditPngDiagram</code>, using the given
 48  
      * <code>ActivationList</code> as the basis for the sequence diagram.
 49  
      *
 50  
      * @param activationList
 51  
      *            a list of root <code>Activation</code>s to use when
 52  
      *            generating the sequence diagram
 53  
      */
 54  0
     public SdeditPngDiagram(ActivationList activationList) {
 55  0
         this.textDiagram = new SdeditTextDiagram(activationList);
 56  0
     }
 57  
 
 58  
     /**
 59  
      * Creates a sequence diagram and writes it to file as a PNG image.
 60  
      *
 61  
      * @param pngFile
 62  
      *            the <code>File</code> to write to
 63  
      *
 64  
      * @throws IOException
 65  
      *             if something went wrong when creating or saving the diagram
 66  
      */
 67  
     @Override
 68  
     public void save(File pngFile) throws IOException {
 69  0
         String outputFilePrefix =
 70  
                 pngFile.getName().substring(
 71  
                         0,
 72  
                         pngFile.getName().length() -
 73  
                                 DEFAULT_PNG_FILE_EXTENSION.length());
 74  0
         File tempTextFile =
 75  
                 new File(pngFile.getParentFile(), outputFilePrefix + ".txt");
 76  0
         textDiagram.save(tempTextFile);
 77  0
         String[] sdeditArgs =
 78  
                 { "-t", "png", "-o", pngFile.getAbsolutePath(),
 79  
                         tempTextFile.getAbsolutePath() };
 80  
         try {
 81  0
             Main.main(sdeditArgs);
 82  0
         } catch (Exception e) {
 83  0
             throw new IOException(e);
 84  0
         }
 85  0
     }
 86  
 
 87  
 }