001package com.hfg.setting;
002
003
004
005import com.hfg.xml.XMLTag;
006
007import java.util.HashMap;
008import java.util.Map;
009
010//------------------------------------------------------------------------------
011/**
012 * An XML-serializable string map setting.
013 *
014 * @author J. Alex Taylor, hairyfatguy.com
015 */
016//------------------------------------------------------------------------------
017// com.hfg XML/HTML Coding Library
018//
019// This library is free software; you can redistribute it and/or
020// modify it under the terms of the GNU Lesser General Public
021// License as published by the Free Software Foundation; either
022// version 2.1 of the License, or (at your option) any later version.
023//
024// This library is distributed in the hope that it will be useful,
025// but WITHOUT ANY WARRANTY; without even the implied warranty of
026// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
027// Lesser General Public License for more details.
028//
029// You should have received a copy of the GNU Lesser General Public
030// License along with this library; if not, write to the Free Software
031// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
032//
033// J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com
034// jataylor@hairyfatguy.com
035//------------------------------------------------------------------------------
036
037public class StringMapSetting extends MapSettingImpl implements Setting<Map<String, String>>
038{
039   //###########################################################################
040   // CONSTRUCTORS
041   //###########################################################################
042
043   //---------------------------------------------------------------------------
044   public StringMapSetting(String inName)
045   {
046      super(inName);
047   }
048
049   //---------------------------------------------------------------------------
050   public StringMapSetting(String inName, Map<String, String> inValue)
051   {
052      super(inName, inValue);
053   }
054
055   //---------------------------------------------------------------------------
056   /**
057    * Copy constructor.
058    * @param inObj2 the StringMapSetting to clone
059    */
060   public StringMapSetting(StringMapSetting inObj2)
061   {
062      this(inObj2.name(), inObj2.getValue() == null ? null : new HashMap<>(inObj2.getValue()));
063   }
064
065   //---------------------------------------------------------------------------
066   public StringMapSetting(XMLTag inXMLTag)
067   {
068      super(inXMLTag);
069   }
070
071   //###########################################################################
072   // PUBLIC METHODS
073   //###########################################################################
074
075   //---------------------------------------------------------------------------
076   public StringMapSetting setValue(Map<String, String> inMap)
077   {
078      super.setObjectValue(inMap);
079      return this;
080   }
081
082   //---------------------------------------------------------------------------
083   @SuppressWarnings("unchecked")
084   public void putStringValue(String inKey, String inValue)
085   {
086      Map<String, String> map = (Map<String, String>) super.getObjectValue();
087      map.put(inKey, inValue);
088   }
089
090   //---------------------------------------------------------------------------
091   @Override
092   @SuppressWarnings("unchecked")
093   public Map<String, String> getValue()
094   {
095      return (Map<String, String>) super.getObjectValue();
096   }
097
098   //---------------------------------------------------------------------------
099   @Override
100   public StringMapSetting clone()
101   {
102      return new StringMapSetting(this);
103   }
104}