View Javadoc

1   /*
2    * $Id: MuleModelProcessor.java 7963 2007-08-21 08:53:15Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.tools.visualizer.processor;
12  
13  import org.mule.tools.visualizer.config.ColorRegistry;
14  import org.mule.tools.visualizer.config.GraphEnvironment;
15  import org.mule.tools.visualizer.util.MuleTag;
16  
17  import com.oy.shared.lm.graph.Graph;
18  import com.oy.shared.lm.graph.GraphNode;
19  
20  import java.util.Iterator;
21  import java.util.List;
22  
23  import org.jdom.Element;
24  
25  public class MuleModelProcessor extends TagProcessor
26  {
27  
28      private DescriptorProcessor descriptorProcessor;
29  
30      public MuleModelProcessor(GraphEnvironment environment)
31      {
32          super(environment);
33          descriptorProcessor = new DescriptorProcessor(environment);
34  
35      }
36  
37      public void process(Graph graph, Element currentElement, GraphNode parent)
38      {
39  
40          List models = currentElement.getChildren(MuleTag.ELEMENT_MODEL);
41          for (Iterator iter = models.iterator(); iter.hasNext();)
42          {
43              Element modelElement = (Element) iter.next();
44              if (getEnvironment().getConfig().isShowModels())
45              {
46                  String name = modelElement.getAttributeValue(MuleTag.ATTRIBUTE_NAME);
47                  String type = modelElement.getAttributeValue(MuleTag.ATTRIBUTE_TYPE);
48                  String className = modelElement.getAttributeValue(MuleTag.ATTRIBUTE_CLASS_NAME);
49                  if (type != null)
50                  {
51                      if (type.equals("custom"))
52                      {
53                          name += " (custom: " + className + ")";
54                      }
55                      else
56                      {
57                          name += " (" + type + ")";
58                      }
59                  }
60                  GraphNode node = graph.addNode();
61                  node.getInfo().setHeader(name);
62                  node.getInfo().setFillColor(ColorRegistry.COLOR_MODEL);
63  
64                  StringBuffer caption = new StringBuffer();
65                  appendProperties(modelElement, caption);
66                  appendDescription(modelElement, caption);
67                  node.getInfo().setCaption(caption.toString());
68  
69                  ExceptionStrategyProcessor processor = new ExceptionStrategyProcessor(getEnvironment());
70                  processor.process(graph, modelElement, node);
71  
72              }
73              descriptorProcessor.process(graph, modelElement, parent);
74          }
75          if (models.size() == 0)
76          {
77              descriptorProcessor.process(graph, currentElement, parent);
78          }
79      }
80  }