Project

General

Profile

1
package edu.ucsb.nceas.metacat.plugin;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.Map;
6
import java.util.Map.Entry;
7

    
8
import org.apache.commons.logging.Log;
9
import org.apache.commons.logging.LogFactory;
10

    
11
import edu.ucsb.nceas.metacat.properties.PropertyService;
12
import edu.ucsb.nceas.metacat.shared.ServiceException;
13
import edu.ucsb.nceas.utilities.PropertyNotFoundException;
14

    
15
public class MetacatHandlerPluginManager {
16
	
17
	private static MetacatHandlerPluginManager instance = null;
18
	
19
	private static Log log = LogFactory.getLog(MetacatHandlerPluginManager.class);
20
	
21
	private List<MetacatHandlerPlugin> handlers= new ArrayList<MetacatHandlerPlugin>();
22
	
23
	private MetacatHandlerPluginManager() {
24
		
25
		String[] configuredHandlers = null;
26
		try {
27
			String handlersString = PropertyService.getProperty("plugin.handlers");
28
			if (handlersString != null && handlersString.length() > 0) {
29
				configuredHandlers = handlersString.split(",");
30
				for (String className: configuredHandlers) {
31
					MetacatHandlerPlugin handlerInstance = null;
32
					try {
33
						Class<?> handlerClass = Class.forName(className);
34
						handlerInstance = (MetacatHandlerPlugin) handlerClass.newInstance();
35
					} catch (Exception e) {
36
						log.error("Problem initializing MetacatHandlerPlugin: " + className, e);
37
						continue;
38
					}
39
					handlers.add(handlerInstance);
40
				}
41
			}
42
		} catch (PropertyNotFoundException e) {
43
			log.warn("Could not find any MetacatPluginHandlers", e);
44
			return;
45
		}
46
	}
47
	
48
	public static MetacatHandlerPluginManager getInstance() throws ServiceException {
49
		if (instance == null) {
50
			try {
51
				instance = new MetacatHandlerPluginManager();
52
			} catch (Exception e) {
53
				throw new ServiceException(e.getMessage());
54
			}
55
		}
56
		return instance;
57
	}
58
	
59
	public void addHandler(MetacatHandlerPlugin plugin) {
60
		
61
	}
62
	
63
	public MetacatHandlerPlugin getHandler(String action) {
64
		for (MetacatHandlerPlugin plugin: handlers) {
65
			if (plugin.handlesAction(action)) {
66
				return plugin;
67
			}
68
		}
69
		return null;
70
	}
71
}
(2-2/2)