Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.bukkit.plugin.Plugin;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.util.Optional;
- public class Database {
- private Plugin Instance;
- ///region Classes
- /**
- * Class to hold database configuration values
- */
- private class DatabaseConfig {
- private String User;
- private String Pass;
- private String Host;
- private String Port;
- private String Database;
- private boolean SSL;
- public String getUser() {
- return User;
- }
- public String getPass() {
- return Pass;
- }
- public String getHost() {
- return Host;
- }
- public String getPort() {
- return Port;
- }
- public String getDatabase() {
- return Database;
- }
- public boolean isSSL() {
- return SSL;
- }
- public DatabaseConfig(String user, String pass, String host, String port, String database, boolean ssl) {
- User = user;
- Pass = pass;
- Host = host;
- Port = port;
- Database = database;
- SSL = ssl;
- }
- }
- ///endregion
- //region Config
- public String getUser() {
- return Instance.getConfig().getString("Database.User");
- }
- public String getPass() {
- return Instance.getConfig().getString("Database.Pass");
- }
- public String getHost() {
- return Instance.getConfig().getString("Database.Host");
- }
- public String getPort() {
- return Instance.getConfig().getString("Database.Port");
- }
- public String getDatabase() {
- return Instance.getConfig().getString("Database.Database");
- }
- public boolean isSSL() {
- return Instance.getConfig().getBoolean("Database.SSL");
- }
- /**
- * Tries to build DatabaseConfig
- * @return DatabaseConfig Optional
- */
- public Optional<DatabaseConfig> getDatabaseConfig() {
- if ((getHost() == null) ||
- (getPort() == null) ||
- (getDatabase() == null) ||
- (getUser() == null) ||
- (getPass() == null)) {
- return Optional.empty();
- }
- return Optional.of(
- new DatabaseConfig(
- getUser(),
- getPass(),
- getHost(),
- getPort(),
- getDatabase(),
- isSSL()
- )
- );
- }
- //endregion
- /**
- * Get a connection to the database.
- * It is your job to close this connection!
- *
- * @return Connection to Database
- */
- public Optional<Connection> getConnection() {
- Optional<DatabaseConfig> Config = getDatabaseConfig();
- if (!Config.isPresent()) {
- System.out.println("Database info missing from config!");
- return Optional.empty();
- }
- try {
- Class.forName("com.mysql.jdbc.Driver");
- return Optional.of(DriverManager.getConnection(
- String.format(
- "jdbc:mysql://%s:%s/%s?useSSL=%s",
- Config.get().getHost(),
- Config.get().getPort(),
- Config.get().getDatabase(),
- String.valueOf(Config.get().isSSL()).toLowerCase()
- ),
- Config.get().getUser(),
- Config.get().getPass()
- ));
- } catch (SQLException e) {
- System.out.println(e.getMessage());
- return Optional.empty();
- } catch (ClassNotFoundException e) {
- System.out.println("jdbc driver not found!");
- return Optional.empty();
- }
- }
- public Database(Plugin instance) {
- Instance = instance;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement