Add configuration backend wrapped around a plugin store.
[Sone.git] / src / main / java / net / pterodactylus / sone / freenet / PluginStoreConfigurationBackend.java
1 /*
2  * FreenetSone - PluginStoreConfigurationBackend.java - Copyright © 2010 David Roden
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 package net.pterodactylus.sone.freenet;
19
20 import net.pterodactylus.util.config.Configuration;
21 import net.pterodactylus.util.config.ConfigurationException;
22 import net.pterodactylus.util.config.ExtendedConfigurationBackend;
23 import freenet.pluginmanager.PluginStore;
24
25 /**
26  * Backend for a {@link Configuration} that is based on a {@link PluginStore}.
27  *
28  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
29  */
30 public class PluginStoreConfigurationBackend implements ExtendedConfigurationBackend {
31
32         /** The backing plugin store. */
33         private final PluginStore pluginStore;
34
35         /**
36          * Creates a new configuration backend based on a plugin store.
37          *
38          * @param pluginStore
39          *            The backing plugin store
40          */
41         public PluginStoreConfigurationBackend(PluginStore pluginStore) {
42                 this.pluginStore = pluginStore;
43         }
44
45         /**
46          * {@inheritDoc}
47          */
48         @Override
49         public String getValue(String attribute) throws ConfigurationException {
50                 return pluginStore.strings.get(attribute);
51         }
52
53         /**
54          * {@inheritDoc}
55          */
56         @Override
57         public void putValue(String attribute, String value) throws ConfigurationException {
58                 pluginStore.strings.put(attribute, value);
59         }
60
61         /**
62          * {@inheritDoc}
63          */
64         @Override
65         public Boolean getBooleanValue(String attribute) throws ConfigurationException {
66                 return pluginStore.booleans.get(attribute);
67         }
68
69         /**
70          * {@inheritDoc}
71          */
72         @Override
73         public void setBooleanValue(String attribute, Boolean value) throws ConfigurationException {
74                 pluginStore.booleans.put(attribute, value);
75         }
76
77         /**
78          * {@inheritDoc}
79          */
80         @Override
81         public Double getDoubleValue(String attribute) throws ConfigurationException {
82                 String stringValue = pluginStore.strings.get(attribute);
83                 if (stringValue == null) {
84                         return null;
85                 }
86                 try {
87                         return Double.valueOf(pluginStore.strings.get(attribute));
88                 } catch (NumberFormatException nfe1) {
89                         throw new ConfigurationException("Could not parse “" + stringValue + "”.", nfe1);
90                 }
91         }
92
93         /**
94          * {@inheritDoc}
95          */
96         @Override
97         public void setDoubleValue(String attribute, Double value) throws ConfigurationException {
98                 pluginStore.strings.put(attribute, String.valueOf(value));
99         }
100
101         /**
102          * {@inheritDoc}
103          */
104         @Override
105         public Integer getIntegerValue(String attribute) throws ConfigurationException {
106                 return pluginStore.integers.get(attribute);
107         }
108
109         /**
110          * {@inheritDoc}
111          */
112         @Override
113         public void setIntegerValue(String attribute, Integer value) throws ConfigurationException {
114                 pluginStore.integers.put(attribute, value);
115         }
116
117         /**
118          * {@inheritDoc}
119          */
120         @Override
121         public Long getLongValue(String attribute) throws ConfigurationException {
122                 return pluginStore.longs.get(attribute);
123         }
124
125         /**
126          * {@inheritDoc}
127          */
128         @Override
129         public void setLongValue(String attribute, Long value) throws ConfigurationException {
130                 pluginStore.longs.put(attribute, value);
131         }
132
133 }