Advertisement
Standev

Untitled

Oct 30th, 2018
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.67 KB | None | 0 0
  1. package org.prescape.net.sql.highscores;
  2.  
  3. import org.prescape.model.Skill;
  4. import org.prescape.model.StaffRights;
  5. import org.prescape.net.mysql.impl.HighscoresRanks;
  6. import org.prescape.net.sql.SQLDataSource;
  7. import org.prescape.net.sql.SQLManager;
  8. import org.prescape.net.sql.SQLTask;
  9. import org.prescape.net.sql.util.QueryBuilder;
  10. import org.prescape.world.content.skill.SkillManager;
  11. import org.prescape.world.entity.impl.player.Player;
  12.  
  13. import java.sql.PreparedStatement;
  14. import java.sql.ResultSet;
  15. import java.sql.SQLException;
  16. import java.sql.Statement;
  17. import java.util.Objects;
  18.  
  19. /**
  20.  * @author Harrison, Alias: Hc747, Contact: harrisoncole05@gmail.com
  21.  * @author Stan van der Bend
  22.  * @version 2.0
  23.  * @since 4/9/17
  24.  */
  25. public final class UpdateHighscores extends SQLTask {
  26.  
  27.     private static final String TABLE = "highscores";
  28.     private final Player player;
  29.     private final String username;
  30.     private final SkillManager skills;
  31.     private final StaffRights rights;
  32.     private int gameMode = 0, rank = 0;
  33.  
  34.     public UpdateHighscores(SQLManager manager, Player player) {
  35.         super(manager, SQLDataSource.HIGHSCORES);
  36.         this.player = player;
  37.         this.username = Objects.requireNonNull(player.getUsername());
  38.         this.skills = Objects.requireNonNull(player.getSkillManager());
  39.         this.rights = Objects.requireNonNull(player.getStaffRights());
  40.  
  41.         switch(player.getGameModeAssistant().getGameMode()) {
  42.             case REALISM:
  43.                 gameMode = 1;
  44.                 break;
  45.             case IRONMAN:
  46.                 gameMode = 2;
  47.                 break;
  48.             case HARDCORE:
  49.                 gameMode = 3;
  50.                 break;
  51.         }
  52.  
  53.         final String rank = player.getStaffRights().ordinal() > 0 ? player.getStaffRights().toString() : player.getDonatorRights().toString();
  54.  
  55.         if(HighscoresRanks.ranks.get(rank) != null)
  56.             this.rank = HighscoresRanks.ranks.get(rank);
  57.  
  58.     }
  59.  
  60.     @Override
  61.     public boolean canExecute() {
  62.         return !username.trim().isEmpty();// && (rights != PlayerRights.OWNER && rights != PlayerRights.DEVELOPER);
  63.     }
  64.  
  65.     @Override
  66.     public void sqlDisabledAction() {
  67.         System.out.println("Could not update highscores database.");
  68.     }
  69.  
  70.     @Override
  71.     public void execute() throws SQLException {
  72.         QueryBuilder query = new QueryBuilder()
  73.                 .table(TABLE)
  74.                 .where(String.format("username = '%s'", username));
  75.         query.kv("rank", rank);
  76.         query.kv("mode", gameMode);
  77.         query.kv("total_level", skills.getTotalLevel());
  78.         query.kv("overall_xp", Long.toString(skills.getTotalExp()));
  79.  
  80.         for (Skill skill : Skill.values())
  81.             query.kv(skill.getName() + "_xp", Integer.toString(skills.getExperience(skill)));
  82.  
  83.         Statement statement = connection.createStatement();
  84.  
  85.         boolean createNewInsertion = !isUpdate();
  86.         System.out.println("[UpdateHighscores] " + (createNewInsertion ? "inserting new account" : "updating account"));
  87.  
  88.         if (createNewInsertion) {
  89.             statement.executeUpdate(insertQuery(player));
  90.         } else {
  91.             query.command(QueryBuilder.UPDATE);
  92.             statement.executeUpdate(query.toString());
  93.         }
  94.     }
  95.  
  96.     private boolean isUpdate() throws SQLException {
  97.         PreparedStatement statement = connection.prepareStatement("SELECT COUNT(*) AS count FROM highscores WHERE username = '" + username + "'");
  98.         ResultSet results = statement.executeQuery();
  99.         if(results.next())
  100.             return results.getInt("count") == 1;
  101.         else return false;
  102.     }
  103.  
  104.     private String insertQuery(Player player){
  105.         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 (" +
  106.                 "'"+player.getUsername()+"', " +
  107.                 "'"+gameMode+"', " +
  108.                 "'"+rank+"', " +
  109.                 "'"+player.getSkillManager().getTotalLevel()+"', " +
  110.                 "'"+player.getSkillManager().getTotalExp()+"', " +
  111.                 "'"+player.getSkillManager().getExperience(Skill.ATTACK)+"', " +
  112.                 "'"+player.getSkillManager().getExperience(Skill.DEFENCE)+"', " +
  113.                 "'"+player.getSkillManager().getExperience(Skill.STRENGTH)+"', " +
  114.                 "'"+player.getSkillManager().getExperience(Skill.CONSTITUTION)+"', " +
  115.                 "'"+player.getSkillManager().getExperience(Skill.RANGED)+"', " +
  116.                 "'"+player.getSkillManager().getExperience(Skill.PRAYER)+"', " +
  117.                 "'"+player.getSkillManager().getExperience(Skill.MAGIC)+"', " +
  118.                 "'"+player.getSkillManager().getExperience(Skill.COOKING)+"', " +
  119.                 "'"+player.getSkillManager().getExperience(Skill.WOODCUTTING)+"', " +
  120.                 "'"+player.getSkillManager().getExperience(Skill.FLETCHING)+"', " +
  121.                 "'"+player.getSkillManager().getExperience(Skill.FISHING)+"', " +
  122.                 "'"+player.getSkillManager().getExperience(Skill.FIREMAKING)+"', " +
  123.                 "'"+player.getSkillManager().getExperience(Skill.CRAFTING)+"', " +
  124.                 "'"+player.getSkillManager().getExperience(Skill.SMITHING)+"', " +
  125.                 "'"+player.getSkillManager().getExperience(Skill.MINING)+"', " +
  126.                 "'"+player.getSkillManager().getExperience(Skill.HERBLORE)+"', " +
  127.                 "'"+player.getSkillManager().getExperience(Skill.AGILITY)+"', " +
  128.                 "'"+player.getSkillManager().getExperience(Skill.THIEVING)+"', " +
  129.                 "'"+player.getSkillManager().getExperience(Skill.SLAYER)+"', " +
  130.                 "'"+player.getSkillManager().getExperience(Skill.FARMING)+"', " +
  131.                 "'"+player.getSkillManager().getExperience(Skill.RUNECRAFTING)+"', " +
  132.                 "'"+player.getSkillManager().getExperience(Skill.HUNTER)+"', " +
  133.                 "'"+player.getSkillManager().getExperience(Skill.CONSTRUCTION)+"', " +
  134.                 "'"+player.getSkillManager().getExperience(Skill.DUNGEONEERING)+"', " +
  135.                 "'"+player.getSkillManager().getExperience(Skill.SUMMONING)+"')";
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement