package javastory.channel;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javastory.channel.client.SkillMacro;
import javastory.tools.packets.ChannelPackets;
public class SkillMacroSet implements Serializable {
/**
*
*/
private static final long serialVersionUID = 5584030461689882224L;
private final SkillMacro[] items;
public SkillMacroSet() {
this.items = new SkillMacro[5];
}
public SkillMacroSet(final ResultSet rs) throws SQLException {
final SkillMacro[] loadedItems = new SkillMacro[5];
while (rs.next()) {
final int skillId1 = rs.getInt("skill1");
final int skillId2 = rs.getInt("skill2");
final int skillId3 = rs.getInt("skill3");
final String name = rs.getString("name");
final int shout = rs.getInt("shout");
final int position = rs.getInt("position");
final SkillMacro macro = new SkillMacro(skillId1, skillId2, skillId3, name, shout, position);
loadedItems[position] = macro;
}
this.items = loadedItems;
}
public void send(final ChannelClient client) {
for (int i = 0; i < 5; i++) {
if (this.items[i] != null) {
client.write(ChannelPackets.getMacros(this.items));
break;
}
}
}
public void update(final int position, final SkillMacro newMacro) {
this.items[position] = newMacro;
}
public void saveToDb(final int characterId, final Connection connection) throws SQLException {
try (final PreparedStatement ps = getInsertSkillMacros(characterId, connection)) {
for (int i = 0; i < 5; i++) {
final SkillMacro macro = this.items[i];
if (macro == null) {
continue;
}
ps.setInt(2, macro.getSkill1());
ps.setInt(3, macro.getSkill2());
ps.setInt(4, macro.getSkill3());
ps.setString(5, macro.getName());
ps.setInt(6, macro.getShout());
ps.setInt(7, i);
ps.execute();
}
}
}
private PreparedStatement getInsertSkillMacros(final int characterId, final Connection connection) throws SQLException {
final String sql = "INSERT INTO skillmacros (characterid, skill1, skill2, skill3, name, shout, position) VALUES (?, ?, ?, ?, ?, ?, ?)";
final PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, characterId);
return ps;
}
}