package net.diamonddominion.esaych.global;
import java.io.Closeable;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import net.diamonddominion.esaych.CustomPlugin;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
public class WebRanks {
private CustomPlugin plugin;
public WebRanks(CustomPlugin plugin) {
this.plugin = plugin;
}
File file;
FileConfiguration ymlfile;
@SuppressWarnings("deprecation")
public void enable() {
Bukkit.getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() {
@Override
public void run() {
updateFile();
}
}, 20*5, 20*60*2);
log("Enabled");
}
public void updateFile() {
// Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manload");
try {
file = new File("plugins/GroupManager/worlds/survival/users.yml");
ymlfile = YamlConfiguration.loadConfiguration(file);
} catch (Exception e) {
log("Failed to load ranks!");
}
ArrayList<String> stats = updateWith();
String data = "";
for (String line : stats) {
try {
data = data + line.substring(1, line.length()) + "\r\n";
} catch (Exception e) {
data = data + "\r\n";
}
}
data = data.substring(0, data.length() - 2);
try {
writeFile("ranks.txt", data);
} catch (Exception e) {
log("Failed to write file");
}
}
public ArrayList<String> updateWith() {
String admins = "";
String mods = "";
String demigods = "";
String bosses = "";
String premiums = "";
String sponsors = "";
String vipps = "";
String vips = "";
try {
Scanner reader = new Scanner(file);
while (reader.hasNextLine()) {
String currentLine = reader.nextLine();
if (currentLine.startsWith(" ")
&& !currentLine.startsWith(" ")) {
String name = currentLine.replaceAll(" ", "")
.replaceAll(":", "").replaceAll("'", "");
if (!name.contains("?"))
try {
String rank = ymlfile.getString("users." + name
+ ".group");
if (rank.contains("Admin") && !rank.contains("Re"))
admins = admins + ";" + name;
if (rank.contains("Mod"))
mods = mods + ";" + name;
if (rank.contains("DemiGod"))
demigods = demigods + ";" + name;
if (rank.contains("Boss"))
bosses = bosses + ";" + name;
if (rank.contains("Premium"))
premiums = premiums + ";" + name;
if (rank.contains("Sponsor"))
sponsors = sponsors + ";" + name;
if (rank.contains("VIP+")) {
vipps = vipps + ";" + name;
} else if (rank.contains("VIP"))
vips = vips + ";" + name;
} catch (Exception e) {
log("Can not find " + name);
}
}
}
} catch (FileNotFoundException e) {
log("Extracting rankings failure. :(");
}
ArrayList<String> stats = new ArrayList<String>();
stats.add(admins);
stats.add(mods);
stats.add(bosses);
stats.add(premiums);
stats.add(sponsors);
stats.add(vipps);
stats.add(vips);
stats.add(demigods);
return stats;
}
public void log(String info) {
plugin.getLogger().info("<WebRanks> " + info);
}
public static void writeFile(String filename, String text)
throws IOException {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(filename);
fos.write(text.getBytes("UTF-8"));
} catch (IOException e) {
close(fos);
throw e;
}
}
public static void close(Closeable closeable) {
try {
closeable.close();
} catch (IOException ignored) {
}
}
}