package ru.alastar.main;
import java.sql.ResultSet;
import java.util.Hashtable;
import ru.alastar.database.DatabaseClient;
public class ValidateExecutor implements CommandExecutor
{
@Override
public void execute(String[] args)
{
try
{
Hashtable<String, Skill> plrSkills;
Hashtable<String, Stat> plrStats;
if(args[0].equals("all"))
{
MainClass.Log("[Validate]","Starting validate ALL entities...");
ResultSet rs = DatabaseClient.commandExecute("SELECT * FROM entities");
while(rs.next())
{
MainClass.Log("[Validate]","Validating " + rs.getString("caption")+"("+rs.getInt("id")+")...");
ResultSet skillsRS = DatabaseClient.commandExecute("SELECT * FROM skills WHERE entityId="+rs.getInt("id"));
plrSkills = new Hashtable<String, Skill>();
while(skillsRS.next())
{
plrSkills.put(skillsRS.getString("name"), new Skill(skillsRS.getString("name"),skillsRS.getInt("sValue"),skillsRS.getInt("mValue"),skillsRS.getFloat("hardness"),skillsRS.getString("primaryStat"),skillsRS.getString("secondaryStat"), skillsRS.getInt("state")));
}
ResultSet statsRS = DatabaseClient.commandExecute("SELECT * FROM stats WHERE entityId="+rs.getInt("id"));
plrStats = new Hashtable<String, Stat>();
while(statsRS.next())
{
plrStats.put(statsRS.getString("name"), new Stat(statsRS.getString("name"),statsRS.getInt("sValue"),statsRS.getInt("mValue"),statsRS.getFloat("hardness"), statsRS.getInt("state")));
}
MainClass.Validate(rs.getInt("id"), plrSkills, plrStats);
}
MainClass.Log("[Validate]","Entities have been validated!");
}
else
{
ResultSet rs = DatabaseClient.commandExecute("SELECT * FROM entities WHERE id=" + args[0]);
while(rs.next())
{
MainClass.Log("[Validate]","Validating " + rs.getString("caption")+"("+rs.getInt("id")+")...");
ResultSet skillsRS = DatabaseClient.commandExecute("SELECT * FROM skills WHERE entityId="+rs.getInt("id"));
plrSkills = new Hashtable<String, Skill>();
while(skillsRS.next())
{
plrSkills.put(skillsRS.getString("name"), new Skill(skillsRS.getString("name"),skillsRS.getInt("sValue"),skillsRS.getInt("mValue"),skillsRS.getFloat("hardness"),skillsRS.getString("primaryStat"),skillsRS.getString("secondaryStat"), skillsRS.getInt("state")));
}
ResultSet statsRS = DatabaseClient.commandExecute("SELECT * FROM stats WHERE entityId="+rs.getInt("id"));
plrStats = new Hashtable<String, Stat>();
while(statsRS.next())
{
plrStats.put(statsRS.getString("name"), new Stat(statsRS.getString("name"),statsRS.getInt("sValue"),statsRS.getInt("mValue"),statsRS.getFloat("hardness"), statsRS.getInt("state")));
}
MainClass.Validate(rs.getInt("id"), plrSkills, plrStats);
}
MainClass.Log("[Validate]","Entity has been validated!");
}
} catch (Exception e)
{
MainClass.Log("[Command Usage]", this.getDescription());
e.printStackTrace();
}
}
@Override
public String getDescription()
{
return "Adding missing skills and stats to the entity. Usage:\n validate all - validates ALL entities;\n validate {id} - validates entity with given id;";
}
}