package packet_readers.lineage2.holders; import java.io.File; import java.net.URL; import java.util.Iterator; import java.util.zip.ZipFile; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.napile.primitive.maps.IntObjectMap; import org.napile.primitive.maps.impl.HashIntObjectMap; /** * Author: VISTALL * Company: J Develop Station * Date: 19:57:29/31.07.2010 */ public class NpcNameHolder { private static final Logger _log = Logger.getLogger(NpcNameHolder.class); private static NpcNameHolder _instance; private IntObjectMap<String> _npcNames = new HashIntObjectMap<String>(); private IntObjectMap<String> _npcTitles = new HashIntObjectMap<String>(); public static NpcNameHolder getInstance() { if (_instance == null) { _instance = new NpcNameHolder(); } return _instance; } private NpcNameHolder() { URL url = getClass().getResource("/com/jds/jn/resources/datas/l2-data.zip"); if(url == null) { _log.info("Not exists"); return; } ZipFile zipFile = null; try { zipFile = new ZipFile(new File(url.toURI())); } catch(Exception e) { _log.info(e, e); return; } try { SAXReader reader = new SAXReader(); Document document = reader.read(zipFile.getInputStream(zipFile.getEntry("NpcName.xml"))); for(Iterator<Element> iterator = document.getRootElement().elementIterator(); iterator.hasNext();) { Element e = iterator.next(); int id = Integer.parseInt(e.element("id").getText()); String name = e.element("name").getText(); String title = e.element("description").getText(); _npcNames.put(id, name); _npcTitles.put(id, title); } } catch(Exception e) { _log.warn("Exception:" + e, e); } _log.info("Load npc names " + _npcNames.size()); } public String name(int npcId) { return _npcNames.containsKey(npcId) ? _npcNames.get(npcId) : ""; } public String title(int npcId) { return _npcTitles.containsKey(npcId) ? _npcTitles.get(npcId) : ""; } }