/** * Copyright (C) 2009 STMicroelectronics * * This file is part of "Mind Compiler" is free software: you can redistribute * it and/or modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact: mind@ow2.org * * Authors: Ali Erdem Ozcan * Contributors: */ package org.ow2.mind.st; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.antlr.stringtemplate.StringTemplate; import org.antlr.stringtemplate.StringTemplateGroup; /** * This class extends the StringTemplate and implements a delegate for * {@link Map}. The class is designed for passing map object as default formal * arguments to {@link StringTemplate} objects. Indeed, the current interface of * {@link StringTemplate} accepts only {@link StringTemplate} objects as default * values to be assigned to template formal arguments. Thanks to this class, one * can also assign {@link Map} objects as default argument value. */ public class MapDelegateStringTemplate extends StringTemplate implements Map<Object, Object> { // Receiver map private Map<Object, Object> map = null; /** Constructor for {@link StringTemplate} that defines an empty {@link Map} */ public MapDelegateStringTemplate() { super(); map = new HashMap<Object, Object>(); } /** Special constructor for specifying the delegated map */ public MapDelegateStringTemplate(final Map map) { super(); this.map = map; } /** Constructor for {@link StringTemplate} that defines an empty {@link Map} */ public MapDelegateStringTemplate(final String arg0, final Class arg1) { super(arg0, arg1); map = new HashMap<Object, Object>(); } /** Constructor for {@link StringTemplate} that defines an empty {@link Map} */ public MapDelegateStringTemplate(final String arg0) { super(arg0); map = new HashMap<Object, Object>(); } /** Constructor for {@link StringTemplate} that defines an empty {@link Map} */ public MapDelegateStringTemplate(final StringTemplateGroup arg0, final String arg1, final HashMap arg2) { super(arg0, arg1, arg2); map = new HashMap<Object, Object>(); } /** Constructor for {@link StringTemplate} that defines an empty {@link Map} */ public MapDelegateStringTemplate(final StringTemplateGroup arg0, final String arg1) { super(arg0, arg1); map = new HashMap<Object, Object>(); } public void clear() { map.clear(); } public boolean containsKey(final Object key) { return map.containsKey(key); } public boolean containsValue(final Object value) { return map.containsValue(value); } public Set<java.util.Map.Entry<Object, Object>> entrySet() { return map.entrySet(); } @Override public boolean equals(final Object o) { return map.equals(o); } public Object get(final Object key) { return map.get(key); } @Override public int hashCode() { return map.hashCode(); } public boolean isEmpty() { return map.isEmpty(); } public Set<Object> keySet() { return map.keySet(); } public Object put(final Object key, final Object value) { return map.put(key, value); } public void putAll(final Map<? extends Object, ? extends Object> m) { map.putAll(m); } public Object remove(final Object key) { return map.remove(key); } public int size() { return map.size(); } @Override public String toString() { return map.toString(); } public Collection<Object> values() { return map.values(); } }