package client.inventory;
import database.DatabaseConnection;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.concurrent.atomic.AtomicInteger;
public class MapleInventoryIdentifier implements Serializable {
private static final long serialVersionUID = 21830921831301L;
private final AtomicInteger runningUID = new AtomicInteger(0);
private static final MapleInventoryIdentifier instance = new MapleInventoryIdentifier();
public static int getInstance() {
return instance.getNextUniqueId();
}
public int getNextUniqueId() {
if (this.runningUID.get() <= 0) {
this.runningUID.set(initUID());
} else {
this.runningUID.set(this.runningUID.get() + 1);
}
return this.runningUID.get();
}
public int initUID() {
int ret = 0;
try {
int[] ids = new int[5];
Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT MAX(uniqueid) FROM inventoryitems WHERE uniqueid > 0");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
ids[0] = (rs.getInt(1) + 1);
}
rs.close();
ps.close();
ps = con.prepareStatement("SELECT MAX(petid) FROM pets");
rs = ps.executeQuery();
if (rs.next()) {
ids[1] = (rs.getInt(1) + 1);
}
rs.close();
ps.close();
ps = con.prepareStatement("SELECT MAX(ringid) FROM rings");
rs = ps.executeQuery();
if (rs.next()) {
ids[2] = (rs.getInt(1) + 1);
}
rs.close();
ps.close();
ps = con.prepareStatement("SELECT MAX(partnerringid) FROM rings");
rs = ps.executeQuery();
if (rs.next()) {
ids[3] = (rs.getInt(1) + 1);
}
rs.close();
ps.close();
for (int i = 0; i < ids.length; i++) {
if (ids[i] > ret) {
ret = ids[i];
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return ret;
}
}