package com.aionemu.gameserver.model.gameobjects.player; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.apache.log4j.Logger; /** * Player macrosses collection, contains all player macrosses. * <p/> * Created on: 13.07.2009 16:28:23 * * @author Aquanox */ public class MacroList { /** * Class logger */ private static final Logger logger = Logger.getLogger(MacroList.class); /** * Container of macrosses, position to xml. */ private final Map<Integer, String> macrosses; /** * Creates an empty macro list */ public MacroList() { this.macrosses = new HashMap<Integer, String>(); } /** * Create new instance of <tt>MacroList</tt>. * * @param arg */ public MacroList(Map<Integer, String> arg) { this.macrosses = arg; } /** * Returns map with all macrosses * * @return all macrosses */ public Map<Integer, String> getMacrosses() { return Collections.unmodifiableMap(macrosses); } /** * Add macro to the collection. * * @param macroPosition * Macro order. * @param macroXML * Macro Xml contents. * @return <tt>true</tt> if macro addition was successful, and it can be stored into database. Otherwise * <tt>false</tt>. */ public synchronized boolean addMacro(int macroPosition, String macroXML) { if(macrosses.containsKey(macroPosition)) { logger.warn("Trying to add macro with already existing order."); return false; } macrosses.put(macroPosition, macroXML); return true; } /** * Remove macro from the list. * * @param macroPosition * @return <tt>true</tt> if macro deletion was successful, and changes can be stored into database. Otherwise * <tt>false</tt>. */ public synchronized boolean removeMacro(int macroPosition) { String m = macrosses.remove(macroPosition); if(m == null)// { logger.warn("Trying to remove non existing macro."); return false; } return true; } /** * Returns count of available macrosses. * * @return count of available macrosses. */ public int getSize() { return macrosses.size(); } /** * Returns an entry set of macro id to macro contents. */ public Set<Entry<Integer, String>> entrySet() { return Collections.unmodifiableSet(getMacrosses().entrySet()); } }