/* * This file is part of aion-unique <aion-unique.org>. * * aion-unique is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * aion-unique 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with aion-unique. If not, see <http://www.gnu.org/licenses/>. */ package com.aionemu.gameserver.world.container; import javolution.util.FastMap; import com.aionemu.gameserver.model.legion.LegionMember; import com.aionemu.gameserver.model.legion.LegionMemberEx; import com.aionemu.gameserver.world.exceptions.DuplicateAionObjectException; /** * Container for storing Legion members by Id and name. * * @author Simple */ public class LegionMemberContainer { private final FastMap<Integer, LegionMember> legionMemberById = new FastMap<Integer, LegionMember>(); private final FastMap<Integer, LegionMemberEx> legionMemberExById = new FastMap<Integer, LegionMemberEx>(); private final FastMap<String, LegionMemberEx> legionMemberExByName = new FastMap<String, LegionMemberEx>(); /** * Add LegionMember to this Container. * * @param legionMember */ public void addMember(LegionMember legionMember) { if(legionMemberById.containsKey(legionMember.getObjectId())) throw new DuplicateAionObjectException(); legionMemberById.put(legionMember.getObjectId(), legionMember); } /** * This method will return a member from cache * * @param memberObjId */ public LegionMember getMember(int memberObjId) { return legionMemberById.get(memberObjId); } /** * Add LegionMemberEx to this Container. * * @param legionMember */ public void addMemberEx(LegionMemberEx legionMember) { if(legionMemberExById.containsKey(legionMember.getObjectId()) || legionMemberExByName.containsKey(legionMember.getName())) throw new DuplicateAionObjectException(); legionMemberExById.put(legionMember.getObjectId(), legionMember); legionMemberExByName.put(legionMember.getName(), legionMember); } /** * This method will return a memberEx from cache * * @param memberObjId */ public LegionMemberEx getMemberEx(int memberObjId) { return legionMemberExById.get(memberObjId); } /** * This method will return a memberEx from cache * * @param memberName */ public LegionMemberEx getMemberEx(String memberName) { return legionMemberExByName.get(memberName); } /** * Remove LegionMember from this Container. * * @param legionMember */ public void remove(LegionMemberEx legionMember) { legionMemberById.remove(legionMember.getObjectId()); legionMemberExById.remove(legionMember.getObjectId()); legionMemberExByName.remove(legionMember.getName()); } /** * Returns true if legion is in cached by id * * @param memberObjId * @return true or false */ public boolean contains(int memberObjId) { return legionMemberById.containsKey(memberObjId); } /** * Returns true if legion is in cached by id * * @param memberObjId * @return true or false */ public boolean containsEx(int memberObjId) { return legionMemberExById.containsKey(memberObjId); } /** * Returns true if legion is in cached by id * * @param memberName * @return true or false */ public boolean containsEx(String memberName) { return legionMemberExByName.containsKey(memberName); } }