package server;
import database.DatabaseConnection;
import java.io.File;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import provider.MapleDataProvider;
import provider.MapleDataProviderFactory;
import server.CashItemInfo.CashModInfo;
public class CashItemFactory {
private static final CashItemFactory instance = new CashItemFactory();
private static final int[] bestItems = {10003055, 10003090, 10103464, 10002960, 10103363};
private final Map<Integer, CashItemInfo> itemStats = new HashMap();
private final Map<Integer, List<Integer>> itemPackage = new HashMap();
private final Map<Integer, List<Integer>> itemPackage2 = new HashMap();
private final Map<Integer, CashItemInfo.CashModInfo> itemMods = new HashMap();
private final Map<Integer, List<Integer>> openBox = new HashMap();
private final MapleDataProvider data = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("net.sf.odinms.wzpath") + "/Etc.wz"));
public static final CashItemFactory getInstance() {
return instance;
}
public void initialize() {
try {
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT * FROM cashshop_item");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
int SN = rs.getInt("sn");
CashItemInfo stats = new CashItemInfo(rs.getInt("itemid"), rs.getInt("quantity"), rs.getInt("price_new"), SN, rs.getInt("day"), rs.getInt("gender"), true);
if (SN > 0) {
this.itemStats.put(SN, stats);
}
if (rs.getInt("pack") > 0) {
List packageItems = new ArrayList();
List realItems = new ArrayList();
for (int i = 0; i < rs.getInt("pack"); i++) {
String[] packhead = rs.getString("packhead").split(",");
String[] realhead = rs.getString("realitems").split(",");
packageItems.add(Integer.valueOf(packhead[(i) * 5]));
realItems.add(Integer.valueOf(realhead[(i)]));
}
itemPackage2.put(SN, realItems);
itemPackage.put(SN, packageItems);
}
}
rs.close();
ps.close();
} catch (Exception e) {
System.out.println(e);
}
List availableSN = new LinkedList();
availableSN.add(Integer.valueOf(20001141));
availableSN.add(Integer.valueOf(20001142));
availableSN.add(Integer.valueOf(20001143));
availableSN.add(Integer.valueOf(20001144));
availableSN.add(Integer.valueOf(20001145));
availableSN.add(Integer.valueOf(20001146));
availableSN.add(Integer.valueOf(20001147));
this.openBox.put(Integer.valueOf(5533003), availableSN);
availableSN = new LinkedList();
availableSN.add(Integer.valueOf(20000462));
availableSN.add(Integer.valueOf(20000463));
availableSN.add(Integer.valueOf(20000464));
availableSN.add(Integer.valueOf(20000465));
availableSN.add(Integer.valueOf(20000466));
availableSN.add(Integer.valueOf(20000467));
availableSN.add(Integer.valueOf(20000468));
availableSN.add(Integer.valueOf(20000469));
this.openBox.put(Integer.valueOf(5533000), availableSN);
availableSN = new LinkedList();
availableSN.add(Integer.valueOf(20800259));
availableSN.add(Integer.valueOf(20800260));
availableSN.add(Integer.valueOf(20800263));
availableSN.add(Integer.valueOf(20800264));
availableSN.add(Integer.valueOf(20800265));
availableSN.add(Integer.valueOf(20800267));
this.openBox.put(Integer.valueOf(5533001), availableSN);
availableSN = new LinkedList();
availableSN.add(Integer.valueOf(20800270));
availableSN.add(Integer.valueOf(20800271));
availableSN.add(Integer.valueOf(20800272));
availableSN.add(Integer.valueOf(20800273));
availableSN.add(Integer.valueOf(20800274));
this.openBox.put(Integer.valueOf(5533002), availableSN);
}
public final CashItemInfo getSimpleItem(int sn) {
return (CashItemInfo) this.itemStats.get(Integer.valueOf(sn));
}
public final CashItemInfo getItem(int sn) {
final CashItemInfo stats = itemStats.get(Integer.valueOf(sn));
final CashModInfo z = getModInfo(sn);
if (z != null && z.showUp) {
return z.toCItem(stats); //null doesnt matter
}
if (stats == null || !stats.onSale()) {
return null;
}
//hmm
return stats;
}
public final List<Integer> getPackageItems(int itemId) {
return itemPackage.get(itemId);
}
public final List<Integer> getPackageItems2(int itemId) {
return itemPackage2.get(itemId);
}
public final CashItemInfo.CashModInfo getModInfo(int sn) {
return (CashItemInfo.CashModInfo) this.itemMods.get(Integer.valueOf(sn));
}
public final Collection<CashItemInfo.CashModInfo> getAllModInfo() {
return this.itemMods.values();
}
public final Map<Integer, List<Integer>> getRandomItemInfo() {
return this.openBox;
}
public final int[] getBestItems() {
return bestItems;
}
}