mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Flatfile repair
This commit is contained in:
parent
f118ac14ca
commit
11e4ff34d6
@ -38,7 +38,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
|
|
||||||
protected FlatfileDatabaseManager() {
|
protected FlatfileDatabaseManager() {
|
||||||
usersFile = new File(mcMMO.getUsersFilePath());
|
usersFile = new File(mcMMO.getUsersFilePath());
|
||||||
createDatabase();
|
checkStructure();
|
||||||
updateLeaderboards();
|
updateLeaderboards();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -555,8 +555,44 @@ public final class FlatfileDatabaseManager implements DatabaseManager {
|
|||||||
playerStatHash.put(SkillType.FISHING, fishing);
|
playerStatHash.put(SkillType.FISHING, fishing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createDatabase() {
|
/**
|
||||||
|
* Checks that the file is present and valid
|
||||||
|
*/
|
||||||
|
private void checkStructure() {
|
||||||
if (usersFile.exists()) {
|
if (usersFile.exists()) {
|
||||||
|
BufferedReader in = null;
|
||||||
|
FileWriter out = null;
|
||||||
|
String usersFilePath = mcMMO.getUsersFilePath();
|
||||||
|
|
||||||
|
synchronized (fileWritingLock) {
|
||||||
|
try {
|
||||||
|
in = new BufferedReader(new FileReader(usersFilePath));
|
||||||
|
StringBuilder writer = new StringBuilder();
|
||||||
|
String line = "";
|
||||||
|
|
||||||
|
while ((line = in.readLine()) != null) {
|
||||||
|
String[] character = line.split(":");
|
||||||
|
|
||||||
|
// If they're valid, rewrite them to the file.
|
||||||
|
if (character.length >= 37) {
|
||||||
|
writer.append(line).append("\r\n");
|
||||||
|
} else {
|
||||||
|
// Placeholder, repair row if needed (I.E. when new skills are added and such)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write the new file
|
||||||
|
out = new FileWriter(usersFilePath);
|
||||||
|
out.write(writer.toString());
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
mcMMO.p.getLogger().severe("Exception while reading " + usersFilePath + " (Are you sure you formatted it correctly?)" + e.toString());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
tryClose(in);
|
||||||
|
tryClose(out);
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
|
|
||||||
protected SQLDatabaseManager() {
|
protected SQLDatabaseManager() {
|
||||||
checkConnected();
|
checkConnected();
|
||||||
createStructure();
|
checkStructure();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void purgePowerlessUsers() {
|
public void purgePowerlessUsers() {
|
||||||
@ -589,9 +589,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to create the database structure.
|
* Checks that the database structure is present and correct
|
||||||
*/
|
*/
|
||||||
private void createStructure() {
|
private void checkStructure() {
|
||||||
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "users` ("
|
write("CREATE TABLE IF NOT EXISTS `" + tablePrefix + "users` ("
|
||||||
+ "`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
|
+ "`id` int(10) unsigned NOT NULL AUTO_INCREMENT,"
|
||||||
+ "`user` varchar(40) NOT NULL,"
|
+ "`user` varchar(40) NOT NULL,"
|
||||||
@ -1042,6 +1042,12 @@ public final class SQLDatabaseManager implements DatabaseManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the database id for a player
|
||||||
|
*
|
||||||
|
* @param playerName The name of the user to retrieve the id for
|
||||||
|
* @return the requested id or 0 if not found
|
||||||
|
*/
|
||||||
private int readId(String playerName) {
|
private int readId(String playerName) {
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user