package client.inventory; import database.DatabaseConnection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.concurrent.atomic.AtomicInteger; public class MapleEquipOnlyId { private final AtomicInteger runningId; public static MapleEquipOnlyId getInstance() { return SingletonHolder.instance; } private MapleEquipOnlyId() { this.runningId = new AtomicInteger(0); } public int getNextEquipOnlyId() { if (this.runningId.get() <= 0) { this.runningId.set(initOnlyId()); } else { this.runningId.set(this.runningId.get() + 1); } return this.runningId.get(); } public int initOnlyId() { int ret = 0; try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT MAX(equipOnlyId) FROM inventoryitems WHERE equipOnlyId > 0"); ResultSet rs = ps.executeQuery()) { if (rs.next()) { ret = rs.getInt(1) + 1; } ps.close(); } catch (SQLException e) { e.printStackTrace(); } return ret; } private static class SingletonHolder { protected static final MapleEquipOnlyId instance = new MapleEquipOnlyId(); } }