package org.pokenet.client.backend; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.pokenet.client.backend.entity.Item; import org.simpleframework.xml.ElementMap; import org.simpleframework.xml.Root; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; /** * The item database * @author shadowkanji * @author Nushio */ @Root public class ItemDatabase { @ElementMap private HashMap<Integer, Item> m_items; private static ItemDatabase m_instance; /** * Adds an item to the database * @param id * @param i */ public void addItem(int id, Item i) { if(m_items == null) m_items = new HashMap<Integer, Item>(); m_items.put(id, i); } /** * Returns an item based on its id * @param id * @return */ public Item getItem(int id) { return m_items.get(id); } /** * Returns an item based on its name * @param name * @return */ public Item getItem(String name) { Iterator<Item> it = m_items.values().iterator(); Item i; while(it.hasNext()) { i = it.next(); if(i.getName().equalsIgnoreCase(name)) return i; } return null; } /** * Reloads the database */ public void reinitialise() { Serializer serializer = new Persister(); try { String respath = System.getProperty("res.path"); if(respath==null) respath=""; InputStream source = FileLoader.loadFile(respath+"res/items/items.xml"); m_instance = serializer.read(ItemDatabase.class, source); System.out.println("INFO: Items database loaded."); } catch (Exception e) { System.err.println("ERROR: Item database could not be loaded."); } } /** * Sets the instance * @param i */ public void setInstance(ItemDatabase i) { m_instance = i; } /** * Returns the instance of item database * @return */ public static ItemDatabase getInstance() { return m_instance; } /** * Returns the instance of item database * @return */ public static List<Item> getCategoryItems(String category) { List<Item> itemList = new ArrayList<Item>(); for(int i=0;i<=m_instance.m_items.size();i++){ try{ Item item = m_instance.m_items.get(i); if(item.getCategory().equals(category)) itemList.add(item); }catch(Exception e){} } return itemList; } }