1 package com.atlassian.activeobjects.internal;
2
3 import com.atlassian.sal.api.pluginsettings.PluginSettings;
4 import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory;
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7
8 import static com.google.common.base.Preconditions.checkNotNull;
9
10
11
12
13
14
15 public final class DataSourceTypeResolverImpl implements DataSourceTypeResolver {
16 private final Logger logger = LoggerFactory.getLogger(this.getClass());
17
18 private final PluginSettings pluginSettings;
19 private final DataSourceType defaultDataSourceType;
20 private final ActiveObjectsSettingKeys settingKeys;
21
22 public DataSourceTypeResolverImpl(PluginSettingsFactory pluginSettingsFactory, ActiveObjectsSettingKeys settingKeys, DataSourceType defaultDataSourceType) {
23 checkNotNull(pluginSettingsFactory);
24 this.pluginSettings = checkNotNull(pluginSettingsFactory.createGlobalSettings());
25 this.settingKeys = checkNotNull(settingKeys);
26 this.defaultDataSourceType = checkNotNull(defaultDataSourceType);
27 }
28
29 public DataSourceType getDataSourceType(Prefix prefix) {
30 final String setting = getSetting(prefix);
31 if (setting != null) {
32 try {
33 return DataSourceType.valueOf(setting);
34 } catch (IllegalArgumentException e) {
35
36 logger.warn("Active objects data source type setting <" + setting + "> for key <" + getSettingKey(prefix) + "> " +
37 "could not be resolved to a valid " + DataSourceType.class.getName() + ". Using default value" +
38 " <" + defaultDataSourceType + ">.");
39 return defaultDataSourceType;
40 }
41 } else {
42 return defaultDataSourceType;
43 }
44 }
45
46 private String getSetting(Prefix prefix) {
47 return (String) pluginSettings.get(getSettingKey(prefix));
48 }
49
50 private String getSettingKey(Prefix prefix) {
51 return settingKeys.getDataSourceTypeKey(prefix);
52 }
53 }