Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.prescape.net.sql.highscores;
- import org.prescape.model.Skill;
- import org.prescape.model.StaffRights;
- import org.prescape.net.mysql.impl.HighscoresRanks;
- import org.prescape.net.sql.SQLDataSource;
- import org.prescape.net.sql.SQLManager;
- import org.prescape.net.sql.SQLTask;
- import org.prescape.net.sql.util.QueryBuilder;
- import org.prescape.world.content.skill.SkillManager;
- import org.prescape.world.entity.impl.player.Player;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Objects;
- /**
- * @author Harrison, Alias: Hc747, Contact: harrisoncole05@gmail.com
- * @author Stan van der Bend
- * @version 2.0
- * @since 4/9/17
- */
- public final class UpdateHighscores extends SQLTask {
- private static final String TABLE = "highscores";
- private final Player player;
- private final String username;
- private final SkillManager skills;
- private final StaffRights rights;
- private int gameMode = 0, rank = 0;
- public UpdateHighscores(SQLManager manager, Player player) {
- super(manager, SQLDataSource.HIGHSCORES);
- this.player = player;
- this.username = Objects.requireNonNull(player.getUsername());
- this.skills = Objects.requireNonNull(player.getSkillManager());
- this.rights = Objects.requireNonNull(player.getStaffRights());
- switch(player.getGameModeAssistant().getGameMode()) {
- case REALISM:
- gameMode = 1;
- break;
- case IRONMAN:
- gameMode = 2;
- break;
- case HARDCORE:
- gameMode = 3;
- break;
- }
- final String rank = player.getStaffRights().ordinal() > 0 ? player.getStaffRights().toString() : player.getDonatorRights().toString();
- if(HighscoresRanks.ranks.get(rank) != null)
- this.rank = HighscoresRanks.ranks.get(rank);
- }
- @Override
- public boolean canExecute() {
- return !username.trim().isEmpty();// && (rights != PlayerRights.OWNER && rights != PlayerRights.DEVELOPER);
- }
- @Override
- public void sqlDisabledAction() {
- System.out.println("Could not update highscores database.");
- }
- @Override
- public void execute() throws SQLException {
- QueryBuilder query = new QueryBuilder()
- .table(TABLE)
- .where(String.format("username = '%s'", username));
- query.kv("rank", rank);
- query.kv("mode", gameMode);
- query.kv("total_level", skills.getTotalLevel());
- query.kv("overall_xp", Long.toString(skills.getTotalExp()));
- for (Skill skill : Skill.values())
- query.kv(skill.getName() + "_xp", Integer.toString(skills.getExperience(skill)));
- Statement statement = connection.createStatement();
- boolean createNewInsertion = !isUpdate();
- System.out.println("[UpdateHighscores] " + (createNewInsertion ? "inserting new account" : "updating account"));
- if (createNewInsertion) {
- statement.executeUpdate(insertQuery(player));
- } else {
- query.command(QueryBuilder.UPDATE);
- statement.executeUpdate(query.toString());
- }
- }
- private boolean isUpdate() throws SQLException {
- PreparedStatement statement = connection.prepareStatement("SELECT COUNT(*) AS count FROM highscores WHERE username = '" + username + "'");
- ResultSet results = statement.executeQuery();
- if(results.next())
- return results.getInt("count") == 1;
- else return false;
- }
- private String insertQuery(Player player){
- return "INSERT INTO `highscores` (username, mode, rank, total_level, overall_xp, attack_xp, defence_xp, strength_xp, constitution_xp, ranged_xp, prayer_xp, magic_xp, cooking_xp, woodcutting_xp, fletching_xp, fishing_xp, firemaking_xp, crafting_xp, smithing_xp, mining_xp, herblore_xp, agility_xp, thieving_xp, slayer_xp, farming_xp, runecrafting_xp, hunter_xp, construction_xp, dungeoneering_xp, summoning_xp) VALUES (" +
- "'"+player.getUsername()+"', " +
- "'"+gameMode+"', " +
- "'"+rank+"', " +
- "'"+player.getSkillManager().getTotalLevel()+"', " +
- "'"+player.getSkillManager().getTotalExp()+"', " +
- "'"+player.getSkillManager().getExperience(Skill.ATTACK)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.DEFENCE)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.STRENGTH)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.CONSTITUTION)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.RANGED)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.PRAYER)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.MAGIC)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.COOKING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.WOODCUTTING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.FLETCHING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.FISHING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.FIREMAKING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.CRAFTING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.SMITHING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.MINING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.HERBLORE)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.AGILITY)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.THIEVING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.SLAYER)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.FARMING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.RUNECRAFTING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.HUNTER)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.CONSTRUCTION)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.DUNGEONEERING)+"', " +
- "'"+player.getSkillManager().getExperience(Skill.SUMMONING)+"')";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement