/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package beans.core.db;
import beans.enumeration.Target;
import beans.enumeration.Utilization;
import beans.serializable.ChangeStatut;
import beans.serializable.Cost;
import beans.serializable.Skill;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author mastersnes
*/
public class SkillControl {
private static final String TARGET = "target";
private static final String USE = "use";
private static final String DESCRIPTION = "descriptionSkill";
private static final String NAME = "nameSkill";
public static final String TABLE_NAME = "SKILL";
public Skill getSkill(final String name) {
ResultSet set = null;
PreparedStatement statement = null;
try {
statement = Database.getStatement("select * from "+TABLE_NAME+" where "+NAME+" = ?");
statement.setString(1, name);
set = statement.executeQuery();
if (set.next()) {
final Skill skill = getFromRowSet(set);
return skill;
} else {
return null;
}
} catch (final SQLException ex) {
Logger.getLogger(SkillControl.class.getName()).log(Level.SEVERE, null, ex);
return null;
} finally {
closeProperly(statement);
}
}
public static List<Skill> getAllSkills() {
final List<Skill> skills = new ArrayList<Skill>();
ResultSet set = null;
PreparedStatement statement = null;
try {
statement = Database.getStatement("select * from "+TABLE_NAME);
set = statement.executeQuery();
while (set.next()) {
final Skill skill = getFromRowSet(set);
skills.add(skill);
}
return skills;
} catch (final SQLException ex) {
Logger.getLogger(SkillControl.class.getName()).log(Level.SEVERE, null, ex);
return null;
} finally {
closeProperly(statement);
}
}
private static void closeProperly(PreparedStatement statement) {
if (statement != null) {
try {
statement.close();
} catch (final SQLException ex) {
Logger.getLogger(SkillControl.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
private static Skill getFromRowSet(final ResultSet set) {
final ChangeStatutControl changeStatutControl = new ChangeStatutControl();
final CostControl costControl = new CostControl();
try {
final Skill skill = new Skill();
skill.setName(set.getString(NAME));
skill.setDescription(set.getString(DESCRIPTION));
skill.setChangeStatut(changeStatutControl.getChangeStatut(skill.getName(), TABLE_NAME));
skill.setCost(costControl.getCost(skill.getName(), TABLE_NAME));
skill.setTarget(Target.valueOf(set.getString(TARGET)));
skill.setUse(Utilization.valueOf(set.getString(USE)));
return skill;
} catch (SQLException ex) {
Logger.getLogger(SkillControl.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public void saveSkill(final Skill skill) {
PreparedStatement statement = null;
final ChangeStatutControl changeStatutControl = new ChangeStatutControl();
final CostControl costControl = new CostControl();
for (final ChangeStatut changeStatut : skill.getChangeStatut()) {
changeStatutControl.saveChangeStatut(skill.getName(), changeStatut, TABLE_NAME);
}
for (final Cost cout : skill.getCost()) {
costControl.saveCost(skill.getName(), cout, TABLE_NAME);
}
try {
statement = Database.getStatement("insert into "+TABLE_NAME+" values (?,?,?,?)");
statement.setString(1, skill.getName());
statement.setString(2, skill.getDescription());
statement.setString(3, skill.getUse().name());
statement.setString(4, skill.getTarget().name());
statement.executeUpdate();
} catch (final SQLException ex) {
Logger.getLogger(SkillControl.class.getName()).log(Level.SEVERE, null, ex);
} finally {
closeProperly(statement);
}
}
}