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 }