use of com.djrapitops.plan.exceptions.database.DBOpException in project Plan by plan-player-analytics.
the class BasicAuthentication method getUser.
@Override
public User getUser() {
String decoded = Base64Util.decode(authenticationString);
String[] userInfo = StringUtils.split(decoded, ':');
if (userInfo.length != 2) {
throw new WebUserAuthException(FailReason.USER_AND_PASS_NOT_SPECIFIED, Arrays.toString(userInfo));
}
String username = userInfo[0];
String passwordRaw = userInfo[1];
Database.State dbState = database.getState();
if (dbState != Database.State.OPEN) {
throw new WebUserAuthException(FailReason.DATABASE_NOT_OPEN, "State was: " + dbState.name());
}
try {
User user = database.query(WebUserQueries.fetchUser(username)).orElseThrow(() -> new WebUserAuthException(FailReason.USER_DOES_NOT_EXIST, username));
boolean correctPass = user.doesPasswordMatch(passwordRaw);
if (!correctPass) {
throw new WebUserAuthException(FailReason.USER_PASS_MISMATCH, username);
}
return user;
} catch (DBOpException | PassEncryptException e) {
throw new WebUserAuthException(e);
}
}
use of com.djrapitops.plan.exceptions.database.DBOpException in project Plan by plan-player-analytics.
the class DatabaseCommands method onHotswap.
public void onHotswap(CMDSender sender, Arguments arguments) {
DBType toDB = arguments.get(0).flatMap(DBType::getForName).orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse("<MySQL/SQLite>"))));
try {
Database database = dbSystem.getActiveDatabaseByType(toDB);
database.init();
if (database.getState() == Database.State.CLOSED) {
return;
}
config.set(DatabaseSettings.TYPE, toDB.getName());
config.save();
} catch (DBOpException | IOException e) {
errorLogger.warn(e, ErrorContext.builder().related(toDB).build());
sender.send(locale.getString(CommandLang.PROGRESS_FAIL, e.getMessage()));
return;
}
statusCommands.onReload(sender);
}
use of com.djrapitops.plan.exceptions.database.DBOpException in project Plan by plan-player-analytics.
the class DatabaseCommands method performBackup.
public void performBackup(CMDSender sender, Arguments arguments, String dbName, Database fromDB) {
Database toDB = null;
try {
String timeStamp = timestamp.apply(System.currentTimeMillis());
String fileName = dbName + "-backup-" + timeStamp;
sender.send(locale.getString(CommandLang.DB_BACKUP_CREATE, fileName, dbName));
toDB = sqliteFactory.usingFileCalled(fileName);
toDB.init();
toDB.executeTransaction(new BackupCopyTransaction(fromDB, toDB)).get();
} catch (DBOpException | ExecutionException e) {
errorLogger.error(e, ErrorContext.builder().related(sender, arguments).build());
} catch (InterruptedException e) {
toDB.close();
Thread.currentThread().interrupt();
} finally {
if (toDB != null) {
toDB.close();
}
}
}
use of com.djrapitops.plan.exceptions.database.DBOpException in project Plan by plan-player-analytics.
the class DatabaseCommands method performClear.
private void performClear(CMDSender sender, DBType fromDB) {
try {
Database fromDatabase = dbSystem.getActiveDatabaseByType(fromDB);
fromDatabase.init();
sender.send(locale.getString(CommandLang.DB_REMOVAL, fromDB.getName()));
fromDatabase.executeTransaction(new RemoveEverythingTransaction()).get();
queryService.dataCleared();
sender.send(locale.getString(CommandLang.PROGRESS_SUCCESS));
// Reload plugin to register the server into the database
// Otherwise errors will start.
statusCommands.onReload(sender);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (DBOpException | ExecutionException e) {
sender.send(locale.getString(CommandLang.PROGRESS_FAIL, e.getMessage()));
errorLogger.error(e, ErrorContext.builder().related(sender, fromDB.getName()).build());
}
}
use of com.djrapitops.plan.exceptions.database.DBOpException in project Plan by plan-player-analytics.
the class RegistrationCommands method registerUser.
private void registerUser(User user, CMDSender sender, int permissionLevel) {
String username = user.getUsername();
user.setPermissionLevel(permissionLevel);
try {
Database database = dbSystem.getDatabase();
boolean userExists = database.query(WebUserQueries.fetchUser(username)).isPresent();
if (userExists)
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_WEB_USER_EXISTS));
database.executeTransaction(new RegisterWebUserTransaction(user)).get();
sender.send(locale.getString(CommandLang.WEB_USER_REGISTER_SUCCESS, username));
logger.info(locale.getString(CommandLang.WEB_USER_REGISTER_NOTIFY, username, permissionLevel));
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (DBOpException | ExecutionException e) {
errorLogger.warn(e, ErrorContext.builder().related(sender, user, permissionLevel).build());
}
}
Aggregations