Advertisement
Guest User

Untitled

a guest
Jan 13th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. import org.bukkit.plugin.Plugin;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.SQLException;
  6. import java.util.Optional;
  7.  
  8. public class Database {
  9. private Plugin Instance;
  10.  
  11. ///region Classes
  12.  
  13. /**
  14. * Class to hold database configuration values
  15. */
  16. private class DatabaseConfig {
  17. private String User;
  18. private String Pass;
  19. private String Host;
  20. private String Port;
  21. private String Database;
  22. private boolean SSL;
  23.  
  24. public String getUser() {
  25. return User;
  26. }
  27.  
  28. public String getPass() {
  29. return Pass;
  30. }
  31.  
  32. public String getHost() {
  33. return Host;
  34. }
  35.  
  36. public String getPort() {
  37. return Port;
  38. }
  39.  
  40. public String getDatabase() {
  41. return Database;
  42. }
  43.  
  44. public boolean isSSL() {
  45. return SSL;
  46. }
  47.  
  48. public DatabaseConfig(String user, String pass, String host, String port, String database, boolean ssl) {
  49. User = user;
  50. Pass = pass;
  51. Host = host;
  52. Port = port;
  53. Database = database;
  54. SSL = ssl;
  55. }
  56. }
  57.  
  58. ///endregion
  59.  
  60. //region Config
  61.  
  62. public String getUser() {
  63. return Instance.getConfig().getString("Database.User");
  64. }
  65.  
  66. public String getPass() {
  67. return Instance.getConfig().getString("Database.Pass");
  68. }
  69.  
  70. public String getHost() {
  71. return Instance.getConfig().getString("Database.Host");
  72. }
  73.  
  74. public String getPort() {
  75. return Instance.getConfig().getString("Database.Port");
  76. }
  77.  
  78. public String getDatabase() {
  79. return Instance.getConfig().getString("Database.Database");
  80. }
  81.  
  82. public boolean isSSL() {
  83. return Instance.getConfig().getBoolean("Database.SSL");
  84. }
  85.  
  86. /**
  87. * Tries to build DatabaseConfig
  88. * @return DatabaseConfig Optional
  89. */
  90. public Optional<DatabaseConfig> getDatabaseConfig() {
  91. if ((getHost() == null) ||
  92. (getPort() == null) ||
  93. (getDatabase() == null) ||
  94. (getUser() == null) ||
  95. (getPass() == null)) {
  96.  
  97. return Optional.empty();
  98. }
  99.  
  100. return Optional.of(
  101. new DatabaseConfig(
  102. getUser(),
  103. getPass(),
  104. getHost(),
  105. getPort(),
  106. getDatabase(),
  107. isSSL()
  108. )
  109. );
  110. }
  111.  
  112. //endregion
  113.  
  114. /**
  115. * Get a connection to the database.
  116. * It is your job to close this connection!
  117. *
  118. * @return Connection to Database
  119. */
  120. public Optional<Connection> getConnection() {
  121. Optional<DatabaseConfig> Config = getDatabaseConfig();
  122.  
  123. if (!Config.isPresent()) {
  124. System.out.println("Database info missing from config!");
  125. return Optional.empty();
  126. }
  127.  
  128. try {
  129. Class.forName("com.mysql.jdbc.Driver");
  130.  
  131. return Optional.of(DriverManager.getConnection(
  132. String.format(
  133. "jdbc:mysql://%s:%s/%s?useSSL=%s",
  134. Config.get().getHost(),
  135. Config.get().getPort(),
  136. Config.get().getDatabase(),
  137. String.valueOf(Config.get().isSSL()).toLowerCase()
  138. ),
  139. Config.get().getUser(),
  140. Config.get().getPass()
  141. ));
  142.  
  143. } catch (SQLException e) {
  144. System.out.println(e.getMessage());
  145. return Optional.empty();
  146.  
  147. } catch (ClassNotFoundException e) {
  148. System.out.println("jdbc driver not found!");
  149. return Optional.empty();
  150. }
  151. }
  152.  
  153. public Database(Plugin instance) {
  154. Instance = instance;
  155. }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement