View Javadoc

1   package br.com.ibnetwork.guara.pipeline.impl;
2   
3   import java.net.URL;
4   import java.util.Map;
5   
6   import org.apache.avalon.framework.configuration.Configurable;
7   import org.apache.avalon.framework.configuration.Configuration;
8   import org.apache.avalon.framework.configuration.ConfigurationException;
9   import org.apache.avalon.framework.service.ServiceException;
10  import org.apache.avalon.framework.service.ServiceManager;
11  import org.apache.avalon.framework.service.Serviceable;
12  import org.apache.commons.logging.Log;
13  import org.apache.commons.logging.LogFactory;
14  
15  import br.com.ibnetwork.xingu.factory.Factory;
16  import br.com.ibnetwork.guara.pipeline.Pipeline;
17  import br.com.ibnetwork.guara.pipeline.PipelineException;
18  import br.com.ibnetwork.guara.pipeline.PipelineManager;
19  import br.com.ibnetwork.guara.pipeline.factory.PipelineFactory;
20  import br.com.ibnetwork.guara.util.ConfigurationLoader;
21  
22  /***
23   * @author <a href="mailto:leandro@ibnetwork.com.br">leandro</a>
24   */
25  public class PipelineManagerImpl
26  	implements PipelineManager, Serviceable, Configurable
27  {
28      private Log logger = LogFactory.getLog(PipelineManagerImpl.class);
29      
30      private String configurationFileName;
31      
32      private PipelineFactory pipelineFactory;
33      
34      private Map map;
35      
36      public void service(ServiceManager manager) 
37      	throws ServiceException
38      {
39          Factory factory = (Factory) manager.lookup(Factory.ROLE);
40          pipelineFactory = (PipelineFactory) factory.create(PipelineFactory.class);
41      }
42  
43      public void configure(Configuration conf) 
44      	throws ConfigurationException
45      {
46          configurationFileName = conf.getChild("file").getAttribute("name");
47      }
48  
49  
50      public Map getPipelineMap()
51      	throws PipelineException
52      {
53          if(map != null)
54          {
55              return map;
56          }
57          URL url = Thread.currentThread().getContextClassLoader().getResource(configurationFileName);
58          logger.debug("Loading pipeline data from: " + url);
59          try
60          {
61              Configuration conf = ConfigurationLoader.load(url.getFile());
62              map = pipelineFactory.createPipelineMap(conf);
63              return map;
64          }
65          catch (Exception e)
66          {
67              throw new PipelineException("Error loading pipeline data",e);
68          }
69      }
70  
71      public Pipeline getPipeline(String name) 
72      	throws PipelineException
73      {
74          if(map == null)
75          {
76              map = getPipelineMap();
77          }
78          return (Pipeline) map.get(name);
79      }
80  
81  
82  
83  
84  
85  
86  }