Bladeren bron

Leaderboard.java cleanup

GJ 13 jaren geleden
bovenliggende
commit
3301fc3d9d
1 gewijzigde bestanden met toevoegingen van 284 en 246 verwijderingen
  1. 284 246
      src/main/java/com/gmail/nossr50/Leaderboard.java

+ 284 - 246
src/main/java/com/gmail/nossr50/Leaderboard.java

@@ -1,19 +1,21 @@
 /*
-	This file is part of mcMMO.
-
-    mcMMO is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    mcMMO is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with mcMMO.  If not, see <http://www.gnu.org/licenses/>.
+ * Copyright (C) 2012 Matt 'The Yeti' Burnett & mcMMO Development
+ * Copyright (C) 2010-2011 'nossr50'
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
+
 package com.gmail.nossr50;
 
 import java.io.BufferedReader;
@@ -30,246 +32,282 @@ import com.gmail.nossr50.datatypes.PlayerStat;
 import com.gmail.nossr50.datatypes.SkillType;
 import com.gmail.nossr50.datatypes.Tree;
 
-public class Leaderboard 
-{
-	static String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users"; //$NON-NLS-1$
-	protected static final Logger log = Logger.getLogger("Minecraft"); //$NON-NLS-1$
-	
-	/*
-	 * Read from the file
-	 */
-	public static void makeLeaderboards()
-	{
-		//Make Trees
-		Tree Mining = new Tree();
-		Tree WoodCutting = new Tree();
-		Tree Herbalism = new Tree();
-		Tree Excavation = new Tree();
-		Tree Acrobatics = new Tree();
-		Tree Repair = new Tree();
-		Tree Swords = new Tree();
-		Tree Axes = new Tree();
-		Tree Archery = new Tree();
-		Tree Unarmed = new Tree();
-		Tree Taming = new Tree();
-		Tree Fishing = new Tree();
-		Tree PowerLevel = new Tree();
-		
-		//Add Data To Trees
-		try {
-        	//Open the user file
-        	FileReader file = new FileReader(location);
-        	BufferedReader in = new BufferedReader(file);
-        	String line = ""; //$NON-NLS-1$
-        	ArrayList<String> players = new ArrayList<String>();
-        	while((line = in.readLine()) != null)
-        	{
-        		String[] character = line.split(":"); //$NON-NLS-1$
-        		String p = character[0];
-        		
-        		//Prevent the same player from being added multiple times
-        		if(players.contains(p))
-        			continue;
-        		else
-        			players.add(p);
-
-    			int Plvl = 0;
-    			
-    			if(character.length > 1 && m.isInt(character[1]))
-    			{
-    				Mining.add(p, Integer.valueOf(character[1]));
-    				Plvl += Integer.valueOf(character[1]);
-    			}
-    			if(character.length > 5 && m.isInt(character[5])){
-    				WoodCutting.add(p, Integer.valueOf(character[5]));
-    				Plvl += Integer.valueOf(character[5]);
-    			}
-    			if(character.length > 7 && m.isInt(character[7])){
-    				Repair.add(p, Integer.valueOf(character[7]));
-    				Plvl += Integer.valueOf(character[7]);
-    			}
-    			if(character.length > 8 && m.isInt(character[8])){
-    				Unarmed.add(p, Integer.valueOf(character[8]));
-    				Plvl += Integer.valueOf(character[8]);
-    			}
-    			if(character.length > 9 && m.isInt(character[9])){
-    				Herbalism.add(p, Integer.valueOf(character[9]));
-    				Plvl += Integer.valueOf(character[9]);
-    			}
-    			if(character.length > 10 && m.isInt(character[10])){
-    				Excavation.add(p, Integer.valueOf(character[10]));
-    				Plvl += Integer.valueOf(character[10]);
-    			}
-    			if(character.length > 11 && m.isInt(character[11])){
-    				Archery.add(p, Integer.valueOf(character[11]));
-    				Plvl += Integer.valueOf(character[11]);
-    			}
-    			if(character.length > 12 && m.isInt(character[12])){
-    				Swords.add(p, Integer.valueOf(character[12]));
-    				Plvl += Integer.valueOf(character[12]);
-    			}
-    			if(character.length > 13 && m.isInt(character[13])){
-    				Axes.add(p, Integer.valueOf(character[13]));
-    				Plvl += Integer.valueOf(character[13]);
-    			}
-    			if(character.length > 14 && m.isInt(character[14])){
-    				Acrobatics.add(p, Integer.valueOf(character[14]));
-    				Plvl += Integer.valueOf(character[14]);
-    			}
-    			if(character.length > 24 && m.isInt(character[24])){
-    				Taming.add(p, Integer.valueOf(character[24]));
-    				Plvl += Integer.valueOf(character[24]);
-    			}
-    			if(character.length > 34 && m.isInt(character[34]))
-    			{
-    				Fishing.add(p, Integer.valueOf(character[34]));
-    				Plvl += Integer.valueOf(character[34]);
-    			}
-    			
-    			PowerLevel.add(p, Plvl);
-        	}
-        	in.close();
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
-            		+ location + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
+public class Leaderboard {
+    static String location = "plugins/mcMMO/FlatFileStuff/mcmmo.users";
+    protected static final Logger log = Logger.getLogger("Minecraft");
+
+    /**
+     * Create the leaderboards.
+     */
+    public static void makeLeaderboards() {
+        //Make Trees
+        Tree Mining = new Tree();
+        Tree WoodCutting = new Tree();
+        Tree Herbalism = new Tree();
+        Tree Excavation = new Tree();
+        Tree Acrobatics = new Tree();
+        Tree Repair = new Tree();
+        Tree Swords = new Tree();
+        Tree Axes = new Tree();
+        Tree Archery = new Tree();
+        Tree Unarmed = new Tree();
+        Tree Taming = new Tree();
+        Tree Fishing = new Tree();
+        Tree PowerLevel = new Tree();
+
+        //Add Data To Trees
+        try {
+            FileReader file = new FileReader(location);
+            BufferedReader in = new BufferedReader(file);
+            String line = "";
+            ArrayList<String> players = new ArrayList<String>();
+
+            while (in.readLine() != null) {
+                line = in.readLine();
+                String[] character = line.split(":");
+                String p = character[0];
+                int powerLevel = 0;
+
+                //Prevent the same player from being added multiple times
+                if (players.contains(p)) {
+                    continue;
+                }
+                else {
+                    players.add(p);
+                }
+
+                if (character.length > 1 && m.isInt(character[1])) {
+                    Mining.add(p, Integer.valueOf(character[1]));
+                    powerLevel += Integer.valueOf(character[1]);
+                }
+
+                if (character.length > 5 && m.isInt(character[5])) {
+                    WoodCutting.add(p, Integer.valueOf(character[5]));
+                    powerLevel += Integer.valueOf(character[5]);
+                }
+
+                if (character.length > 7 && m.isInt(character[7])) {
+                    Repair.add(p, Integer.valueOf(character[7]));
+                    powerLevel += Integer.valueOf(character[7]);
+                }
+
+                if (character.length > 8 && m.isInt(character[8])) {
+                    Unarmed.add(p, Integer.valueOf(character[8]));
+                    powerLevel += Integer.valueOf(character[8]);
+                }
+
+                if (character.length > 9 && m.isInt(character[9])) {
+                    Herbalism.add(p, Integer.valueOf(character[9]));
+                    powerLevel += Integer.valueOf(character[9]);
+                }
+
+                if (character.length > 10 && m.isInt(character[10])) {
+                    Excavation.add(p, Integer.valueOf(character[10]));
+                    powerLevel += Integer.valueOf(character[10]);
+                }
+
+                if (character.length > 11 && m.isInt(character[11])) {
+                    Archery.add(p, Integer.valueOf(character[11]));
+                    powerLevel += Integer.valueOf(character[11]);
+                }
+
+                if (character.length > 12 && m.isInt(character[12])) {
+                    Swords.add(p, Integer.valueOf(character[12]));
+                    powerLevel += Integer.valueOf(character[12]);
+                }
+
+                if (character.length > 13 && m.isInt(character[13])) {
+                    Axes.add(p, Integer.valueOf(character[13]));
+                    powerLevel += Integer.valueOf(character[13]);
+                }
+
+                if (character.length > 14 && m.isInt(character[14])) {
+                    Acrobatics.add(p, Integer.valueOf(character[14]));
+                    powerLevel += Integer.valueOf(character[14]);
+                }
+
+                if (character.length > 24 && m.isInt(character[24])) {
+                    Taming.add(p, Integer.valueOf(character[24]));
+                    powerLevel += Integer.valueOf(character[24]);
+                }
+
+                if (character.length > 34 && m.isInt(character[34])) {
+                    Fishing.add(p, Integer.valueOf(character[34]));
+                    powerLevel += Integer.valueOf(character[34]);
+                }
+
+                PowerLevel.add(p, powerLevel);
+            }
+            in.close();
+        }
+        catch (Exception e) {
+            log.log(Level.SEVERE, "Exception while reading " + location + " (Are you sure you formatted it correctly?)", e);
         }
+
         //Write the leader board files
-        leaderWrite(Mining.inOrder(), SkillType.MINING); //$NON-NLS-1$
-        leaderWrite(WoodCutting.inOrder(), SkillType.WOODCUTTING); //$NON-NLS-1$
-        leaderWrite(Repair.inOrder(), SkillType.REPAIR); //$NON-NLS-1$
-        leaderWrite(Unarmed.inOrder(), SkillType.UNARMED); //$NON-NLS-1$
-        leaderWrite(Herbalism.inOrder(), SkillType.HERBALISM); //$NON-NLS-1$
-        leaderWrite(Excavation.inOrder(), SkillType.EXCAVATION); //$NON-NLS-1$
-        leaderWrite(Archery.inOrder(), SkillType.ARCHERY); //$NON-NLS-1$
-        leaderWrite(Swords.inOrder(), SkillType.SWORDS); //$NON-NLS-1$
-        leaderWrite(Axes.inOrder(), SkillType.AXES); //$NON-NLS-1$
-        leaderWrite(Acrobatics.inOrder(), SkillType.ACROBATICS); //$NON-NLS-1$
-        leaderWrite(Taming.inOrder(), SkillType.TAMING); //$NON-NLS-1$
-        leaderWrite(Fishing.inOrder(), SkillType.FISHING); //$NON-NLS-1$
-        leaderWrite(PowerLevel.inOrder(), SkillType.ALL); //$NON-NLS-1$
-	}
-	public static void leaderWrite(PlayerStat[] ps, SkillType skillType)
-	{
-		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
-		//CHECK IF THE FILE EXISTS
-		File theDir = new File(theLocation);
-		if(!theDir.exists())
-		{
-			//properties = new PropertiesFile(location);
-			FileWriter writer = null;
-			try {
-				writer = new FileWriter(theLocation);
-			} catch (Exception e) {
-				log.log(Level.SEVERE, "Exception while creating " + theLocation, e); //$NON-NLS-1$
-			} finally {
-				try {
-					if (writer != null) {
-						writer.close();
-					}
-				} catch (IOException e) {
-					log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e); //$NON-NLS-1$
-				}
-			}
-		} else {
-			try {
-	        	FileReader file = new FileReader(theLocation);
-	
-	    		//HERP
-	            BufferedReader in = new BufferedReader(file);
-	            StringBuilder writer = new StringBuilder();
-	            
-	        	for(PlayerStat p : ps)
-	        	{
-	        		if(p.name.equals("$mcMMO_DummyInfo")) //$NON-NLS-1$
-	        			continue;
-	        		if(p.statVal == 0)
-	        			continue;
-	        		writer.append(p.name + ":" + p.statVal); //$NON-NLS-1$
-	        		writer.append("\r\n");  //$NON-NLS-1$
-	        	}
-	        	
-	        	in.close();
-	        	//Write the new file
-	            FileWriter out = new FileWriter(theLocation);
-	            out.write(writer.toString());
-	            out.close();
-	        } catch (Exception e) {
-	                log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
-	        }
-		}
-		//Create/open the file
-		//Loop through backward writing each player
-		//Close the file
-	}
-	
-	public static String[] retrieveInfo(String skillName, int pagenumber)
-	{
-		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-        	FileReader file = new FileReader(theLocation);
-        	BufferedReader in = new BufferedReader(file);
-        	
-        	int destination = (pagenumber - 1) * 10; //How many lines to skip through
-        	int x = 0; //how many lines we've gone through
-        	int y = 0; //going through the lines
-        	String line = ""; //$NON-NLS-1$
-        	String[] info = new String[10]; //what to return
-        	while((line = in.readLine()) != null && y < 10)
-        	{
-        		x++;
-        		if(x >= destination && y < 10){
-        			info[y] = line.toString();
-        			y++;
-        		}
-        	}
-        	in.close();
-        	return info;
-        } catch (Exception e) {
-            log.log(Level.SEVERE, "Exception while reading " //$NON-NLS-1$
-            		+ theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$
+        leaderWrite(Mining.inOrder(), SkillType.MINING);
+        leaderWrite(WoodCutting.inOrder(), SkillType.WOODCUTTING);
+        leaderWrite(Repair.inOrder(), SkillType.REPAIR);
+        leaderWrite(Unarmed.inOrder(), SkillType.UNARMED);
+        leaderWrite(Herbalism.inOrder(), SkillType.HERBALISM);
+        leaderWrite(Excavation.inOrder(), SkillType.EXCAVATION);
+        leaderWrite(Archery.inOrder(), SkillType.ARCHERY);
+        leaderWrite(Swords.inOrder(), SkillType.SWORDS);
+        leaderWrite(Axes.inOrder(), SkillType.AXES);
+        leaderWrite(Acrobatics.inOrder(), SkillType.ACROBATICS);
+        leaderWrite(Taming.inOrder(), SkillType.TAMING);
+        leaderWrite(Fishing.inOrder(), SkillType.FISHING);
+        leaderWrite(PowerLevel.inOrder(), SkillType.ALL);
+    }
+
+    /**
+     * Write to the leaderboards.
+     *
+     * @param ps Stats to write to the leaderboard
+     * @param skillType Skill type to write the leaderboard of
+     */
+    private static void leaderWrite(PlayerStat[] ps, SkillType skillType) {
+        String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo";
+        File theDir = new File(theLocation); 
+
+        //CHECK IF THE FILE EXISTS
+        if (!theDir.exists()) {
+            FileWriter writer = null;
+
+            try {
+                writer = new FileWriter(theLocation);
+            }
+            catch (Exception e) {
+                log.log(Level.SEVERE, "Exception while creating " + theLocation, e);
+            }
+            finally {
+                try {
+                    if (writer != null) {
+                        writer.close();
+                    }
+                }
+                catch (IOException e) {
+                    log.log(Level.SEVERE, "Exception while closing writer for " + theLocation, e);
+                }
+            }
+        }
+        else {
+            try {
+                FileReader file = new FileReader(theLocation);
+                BufferedReader in = new BufferedReader(file);
+                StringBuilder writer = new StringBuilder();
+
+                for (PlayerStat p : ps) {
+                    if (p.name.equals("$mcMMO_DummyInfo")) {
+                        continue;
+                    }
+
+                    if (p.statVal == 0) {
+                        continue;
+                    }
+
+                    writer.append(p.name + ":" + p.statVal);
+                    writer.append("\r\n");
+                }
+
+                in.close();
+                FileWriter out = new FileWriter(theLocation);
+                out.write(writer.toString());
+                out.close();
+            }
+            catch (Exception e) {
+                    log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e);
+            }
+        }
+    }
+
+    /**
+     * Retrieve leaderboard info.
+     *
+     * @param skillName Skill to retrieve info on.
+     * @param pagenumber Which page in the leaderboards to retrieve
+     * @return the requested leaderboard information
+     */
+    public static String[] retrieveInfo(String skillName, int pagenumber) {
+        String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillName + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
+
+        try {
+            FileReader file = new FileReader(theLocation);
+            BufferedReader in = new BufferedReader(file);
+            int destination = (pagenumber - 1) * 10; //How many lines to skip through
+            int x = 0; //how many lines we've gone through
+            int y = 0; //going through the lines
+            String line = "";
+            String[] info = new String[10]; //what to return
+
+            while (in.readLine() != null && y < 10) {
+                line = in.readLine();
+                x++;
+
+                if (x >= destination && y < 10) {
+                    info[y] = line.toString();
+                    y++;
+                }
+            }
+
+            in.close();
+            return info;
         }
+        catch (Exception e) {
+            log.log(Level.SEVERE, "Exception while reading " + theLocation + " (Are you sure you formatted it correctly?)", e);
+        }
+
         return null; //Shouldn't get here
-	}
-	public static void updateLeaderboard(PlayerStat ps, SkillType skillType)
-	{
-		if(LoadProperties.useMySQL)
-			return;
-		String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo"; //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-        	//Open the file
-        	FileReader file = new FileReader(theLocation);
+    }
+
+    /**
+     * Update the leaderboards.
+     *
+     * @param ps Stats to update the leaderboard with.
+     * @param skillType Skill whose leaderboard is being updated.
+     */
+    public static void updateLeaderboard(PlayerStat ps, SkillType skillType) {
+        if (LoadProperties.useMySQL) {
+            return;
+        }
+
+        String theLocation = "plugins/mcMMO/FlatFileStuff/Leaderboards/" + skillType + ".mcmmo";
+
+        try {
+            FileReader file = new FileReader(theLocation);
             BufferedReader in = new BufferedReader(file);
             StringBuilder writer = new StringBuilder();
-        	String line = ""; //$NON-NLS-1$
-        	Boolean inserted = false;
-        	//While not at the end of the file
-        	while((line = in.readLine()) != null)
-        	{
-        		//Insert the player into the line before it finds a smaller one
-        		if(Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) //$NON-NLS-1$
-        		{
-        			writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
-        			inserted = true;
-        		}
-        		//Write anything that isn't the player already in the file so we remove the duplicate
-        		if(!line.split(":")[0].equalsIgnoreCase(ps.name)) //$NON-NLS-1$
-        		{
-                    writer.append(line).append("\r\n"); //$NON-NLS-1$
-        		}
-        	}
-        	
-        	if(!inserted)
-        	{
-    			writer.append(ps.name + ":" + ps.statVal).append("\r\n"); //$NON-NLS-1$ //$NON-NLS-2$
-        	}
-        	
-        	in.close();
-        	//Write the new file
+            String line = "";
+            Boolean inserted = false;
+
+            while (in.readLine() != null) {
+                line = in.readLine();
+
+                //Insert the player into the line before it finds a smaller one
+                if (Integer.valueOf(line.split(":")[1]) < ps.statVal && !inserted) {
+                    writer.append(ps.name + ":" + ps.statVal).append("\r\n");
+                    inserted = true;
+                }
+
+                //Write anything that isn't the player already in the file so we remove the duplicate
+                if (!line.split(":")[0].equalsIgnoreCase(ps.name)) {
+                    writer.append(line).append("\r\n");
+                }
+            }
+
+            if(!inserted) {
+                writer.append(ps.name + ":" + ps.statVal).append("\r\n");
+            }
+
+            in.close();
+
+            //Write the new file
             FileWriter out = new FileWriter(theLocation);
             out.write(writer.toString());
             out.close();
-        } catch (Exception e) {
-                log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e); //$NON-NLS-1$ //$NON-NLS-2$
         }
-	}
+        catch (Exception e) {
+                log.log(Level.SEVERE, "Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)", e);
+        }
+    }
 }