blob: 982985f10fa5ca696782cea1d4e5e167d1698e91 [file] [log] [blame]
Michael Hanl704211e2015-06-19 07:26:04 +02001package de.ids_mannheim.korap.config;
2
Michael Hanlbadd79c2015-06-19 07:41:03 +02003import java.util.HashMap;
Michael Hanlbadd79c2015-06-19 07:41:03 +02004import java.util.Map;
5import java.util.Set;
6
Michael Hanl704211e2015-06-19 07:26:04 +02007/**
8 * @author hanl
9 * @date 17/06/2015
10 */
Michael Hanl0f6ffd72015-08-27 19:23:15 +020011public class DefaultHandler {
Michael Hanlbadd79c2015-06-19 07:41:03 +020012
Michael Hanl1e18cb42015-08-06 20:57:35 +020013 private Map<String, Object> defaults;
Michael Hanlbadd79c2015-06-19 07:41:03 +020014
Michael Hanl8abaf9e2016-05-23 16:46:35 +020015
16 public DefaultHandler () {
Michael Hanl1e18cb42015-08-06 20:57:35 +020017 this.defaults = new HashMap<>();
18 loadClasses();
Michael Hanlbadd79c2015-06-19 07:41:03 +020019 }
20
Michael Hanl8abaf9e2016-05-23 16:46:35 +020021
22 private void loadClasses () {
Michael Hanl1e18cb42015-08-06 20:57:35 +020023 Set<Class<?>> cls = KustvaktClassLoader
24 .loadFromAnnotation(Configurable.class);
25 for (Class clazz : cls) {
26 Configurable c = (Configurable) clazz
27 .getAnnotation(Configurable.class);
28 try {
29 this.defaults.put(c.value(), clazz.newInstance());
Michael Hanl8abaf9e2016-05-23 16:46:35 +020030 }
31 catch (InstantiationException | IllegalAccessException e) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020032 throw new RuntimeException("Could not instantiate class");
33 }
Michael Hanlbadd79c2015-06-19 07:41:03 +020034 }
35 }
36
Michael Hanl8abaf9e2016-05-23 16:46:35 +020037
38 public Object getDefault (String name) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020039 return this.defaults.get(name);
Michael Hanlbadd79c2015-06-19 07:41:03 +020040 }
41
Michael Hanl8abaf9e2016-05-23 16:46:35 +020042
43 public <T> T getDefault (Class<T> tClass) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020044 for (Object o : this.defaults.values()) {
45 if (o.getClass().equals(tClass))
46 return (T) o;
Michael Hanlbadd79c2015-06-19 07:41:03 +020047 }
Michael Hanl1e18cb42015-08-06 20:57:35 +020048 return null;
Michael Hanlbadd79c2015-06-19 07:41:03 +020049 }
50
Michael Hanl8abaf9e2016-05-23 16:46:35 +020051
52 public void remove (String name) {
Michael Hanl1e18cb42015-08-06 20:57:35 +020053 this.defaults.remove(name);
Michael Hanlbadd79c2015-06-19 07:41:03 +020054 }
55
Michael Hanl8abaf9e2016-05-23 16:46:35 +020056
Michael Hanlbadd79c2015-06-19 07:41:03 +020057 @Override
Michael Hanl8abaf9e2016-05-23 16:46:35 +020058 public String toString () {
Michael Hanl1e18cb42015-08-06 20:57:35 +020059 return defaults.toString();
Michael Hanlbadd79c2015-06-19 07:41:03 +020060 }
Michael Hanl704211e2015-06-19 07:26:04 +020061}