buildframework/helium/tools/common/java/src/com/nokia/ant/listener/internaldata/XMLRenderer.java
changeset 179 d8ac696cc51f
parent 1 be27ed110b50
equal deleted inserted replaced
1:be27ed110b50 179:d8ac696cc51f
    22 import java.util.Hashtable;
    22 import java.util.Hashtable;
    23 import java.util.Enumeration;
    23 import java.util.Enumeration;
    24 import java.io.ByteArrayOutputStream;
    24 import java.io.ByteArrayOutputStream;
    25 
    25 
    26 import org.dom4j.Document;
    26 import org.dom4j.Document;
    27 //import org.dom4j.DefaultDocumentType;
       
    28 import org.dom4j.DocumentHelper;
    27 import org.dom4j.DocumentHelper;
    29 import org.dom4j.Element;
    28 import org.dom4j.Element;
    30 import org.dom4j.io.XMLWriter;
    29 import org.dom4j.io.XMLWriter;
    31 import org.dom4j.io.OutputFormat;
    30 import org.dom4j.io.OutputFormat;
    32 
    31 
    46 
    45 
    47     // Dump of properties
    46     // Dump of properties
    48     private Hashtable<String, String> properties;
    47     private Hashtable<String, String> properties;
    49     // the toplevel node.
    48     // the toplevel node.
    50     private BuildNode root;
    49     private BuildNode root;
    51     private BuildEvent buildEvent;
       
    52     
       
    53     // Helium content database. 
    50     // Helium content database. 
    54     private Document database;
    51     private Document database;
    55     
    52     
    56     // Deps hashes: helper to remove duplicates.
    53     // Deps hashes: helper to remove duplicates.
    57     private Vector<String> targetList = new Vector<String>();
    54     private Vector<String> targetList = new Vector<String>();
    58     private Vector<String> taskList = new Vector<String>();
       
    59     private Vector<String> assertList = new Vector<String>();
    55     private Vector<String> assertList = new Vector<String>();
    60     
    56     
    61     public XMLRenderer(BuildNode root, Document database, Hashtable<String, String> properties, BuildEvent event) {
    57     public XMLRenderer(BuildNode root, Document database, Hashtable<String, String> properties, BuildEvent event) {
    62         this.root = root; 
    58         this.root = root; 
    63         this.database = database;
    59         this.database = database;
    64         this.properties = properties;
    60         this.properties = properties;
    65         this.buildEvent = event;
       
    66     }
    61     }
    67 
    62 
    68     /**
    63     /**
    69      * Generating target only for TargetNode type of node
    64      * Generating target only for TargetNode type of node
    70      * @param node
    65      * @param node
    95         Element targets = statistics.addElement("targets");
    90         Element targets = statistics.addElement("targets");
    96         if (root != null) {
    91         if (root != null) {
    97             createTarget(root, targets);
    92             createTarget(root, targets);
    98         }
    93         }
    99     }
    94     }
   100 
       
   101     /**
       
   102      * Generating task only for TargetNode type of node
       
   103      * @param node
       
   104      * @param targets
       
   105      */
       
   106     protected void createTask(DataNode node, Element targets) {
       
   107         if (node instanceof TaskNode) {            
       
   108             TaskNode taskNode = (TaskNode)node;
       
   109             if (!taskList.contains(taskNode.getName())) {
       
   110                 taskList.add(taskNode.getName());
       
   111                 Element target = targets.addElement("task");
       
   112                 target.addAttribute("id", "task@" + taskList.indexOf(taskNode.getName()));
       
   113                 target.addAttribute("name", taskNode.getName());                
       
   114             }
       
   115         }
       
   116         for (Iterator<DataNode> i = node.iterator() ; i.hasNext() ; ) {
       
   117             createTask(i.next(), targets);
       
   118         }
       
   119     }    
       
   120     
       
   121     /**
       
   122      * Creating the task section.
       
   123      * @param statistics
       
   124      */
       
   125     protected void createTasks(Element statistics) {
       
   126         Element tasks = statistics.addElement("tasks");
       
   127         if (root != null) {
       
   128             createTask(root, tasks);
       
   129         }
       
   130     }
       
   131     
    95     
   132     /**
    96     /**
   133      * Creating the assert section.
    97      * Creating the assert section.
   134      * @param statistics
    98      * @param statistics
   135      */
    99      */
   152             if (assertNode.getAssertName() != null) {
   116             if (assertNode.getAssertName() != null) {
   153                 assertList.add(assertNode.getAssertName());
   117                 assertList.add(assertNode.getAssertName());
   154                 Element target = targets.addElement("assert");
   118                 Element target = targets.addElement("assert");
   155                 target.addAttribute("id", "assert@" + assertList.indexOf(assertNode.getAssertName()));
   119                 target.addAttribute("id", "assert@" + assertList.indexOf(assertNode.getAssertName()));
   156                 target.addAttribute("name", assertNode.getAssertName());
   120                 target.addAttribute("name", assertNode.getAssertName());
   157                 //target.addAttribute("assertname", assertNode.getAssertName());
       
   158                 target.addAttribute("file", assertNode.getFilename());
   121                 target.addAttribute("file", assertNode.getFilename());
   159                 target.addAttribute("line", "" + assertNode.getLine());
   122                 target.addAttribute("line", "" + assertNode.getLine());
   160                 target.addAttribute("message", "" + assertNode.getMessage());
   123                 target.addAttribute("message", "" + assertNode.getMessage());
   161             }
   124             }
   162             
   125             
   190             elt.addAttribute("thread", "" + targetNode.getThreadId());
   153             elt.addAttribute("thread", "" + targetNode.getThreadId());
   191             elt.addAttribute("startUsedHeap", "" + targetNode.getStartUsedHeap());
   154             elt.addAttribute("startUsedHeap", "" + targetNode.getStartUsedHeap());
   192             elt.addAttribute("startCommittedHeap", "" + targetNode.getStartCommittedHeap());
   155             elt.addAttribute("startCommittedHeap", "" + targetNode.getStartCommittedHeap());
   193             elt.addAttribute("endUsedHeap", "" + targetNode.getEndUsedHeap());
   156             elt.addAttribute("endUsedHeap", "" + targetNode.getEndUsedHeap());
   194             elt.addAttribute("endCommittedHeap", "" + targetNode.getEndCommittedHeap());
   157             elt.addAttribute("endCommittedHeap", "" + targetNode.getEndCommittedHeap());
   195         } else if (node instanceof TaskNode) {
       
   196             TaskNode taskNode = (TaskNode)node;
       
   197             elt = tree.addElement("taskRef");
       
   198             elt.addAttribute("reference", "task@" + taskList.indexOf(taskNode.getName()));
       
   199             elt.addAttribute("startTime", "" + taskNode.getStartTime().getTime());
       
   200             elt.addAttribute("endTime", "" + taskNode.getEndTime().getTime());
       
   201             elt.addAttribute("thread", "" + taskNode.getThreadId());
       
   202         } else if (node instanceof AssertNode) {
   158         } else if (node instanceof AssertNode) {
   203             AssertNode assertNode = (AssertNode)node;
   159             AssertNode assertNode = (AssertNode)node;
   204             if (assertNode.getAssertName() != null) {
   160             if (assertNode.getAssertName() != null) {
   205                 elt = tree.addElement("assertRef");
   161                 elt = tree.addElement("assertRef");
   206                 elt.addAttribute("reference", "assert@" + assertList.indexOf(assertNode.getAssertName()));
   162                 elt.addAttribute("reference", "assert@" + assertList.indexOf(assertNode.getAssertName()));
   255      * Rendering the build node into XML string. 
   211      * Rendering the build node into XML string. 
   256      */
   212      */
   257     public String toString() {
   213     public String toString() {
   258         // Creating the XML document
   214         // Creating the XML document
   259         Document document = DocumentHelper.createDocument();
   215         Document document = DocumentHelper.createDocument();
   260         // DefaultDocumentType(String elementName, String publicID, String systemID) 
       
   261         //document.setDocType(new DefaultDocumentType());
       
   262         Element statistics = document.addElement( "statistics" );
   216         Element statistics = document.addElement( "statistics" );
   263         statistics.addAttribute("version", "1.0");
   217         statistics.addAttribute("version", "1.1");
   264         
   218         
   265         // Creating the document content.
   219         // Creating the document content.
   266         insertDatabase(statistics);
   220         insertDatabase(statistics);
   267         createTargets(statistics);
   221         createTargets(statistics);
   268         createTasks(statistics);
       
   269         createAsserts(statistics);
   222         createAsserts(statistics);
   270         createExecutionTree(statistics);
   223         createExecutionTree(statistics);
   271         createProperties(statistics);
   224         createProperties(statistics);
   272         try {
   225         try {
   273             ByteArrayOutputStream output = new ByteArrayOutputStream(); 
   226             ByteArrayOutputStream output = new ByteArrayOutputStream();