package org.jtheque.states.utils; /* * Copyright JTheque (Baptiste Wicht) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.jtheque.states.Load; import org.jtheque.states.Save; import org.jtheque.utils.collections.CollectionUtils; import java.util.Map; /** * An abstract state. This state is not delegated and manage a simple map of properties. This class is not thread safe. * * @author Baptiste Wicht */ public abstract class AbstractState { private final Map<String, String> properties = CollectionUtils.newHashMap(10); /** * Set the properties of this state. This method is made to be called from the state service. It will be called only * once, at startup. * * @param properties The properties of this state. */ @Load public void setProperties(Map<String, String> properties) { this.properties.putAll(properties); } /** * Return all the properties of the state. This method is made to be called from the state service. It will be * called only once, at application shutdown. * * @return The properties of the state. */ @Save public Map<String, String> getProperties() { return CollectionUtils.protect(properties); } /** * Return the value of a property. * * @param key The key of the property. * * @return The value of the property with the given key or null if the property doesn't exist. */ protected final String getProperty(String key) { return properties.get(key); } /** * Return the value of a property. * * @param key The key of the property. * @param defaults The default value to use if the property doesn't exist. * * @return The value of the property with the given key or the given default value if the property doesn't exist. */ protected final String getProperty(String key, String defaults) { String property = properties.get(key); if (property == null) { property = defaults; } return property; } /** * Set the property value of the state. * * @param key The key of the property. * @param value The value of the property. */ protected final void setProperty(String key, String value) { properties.put(key, value); } }