add base project pom
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
<groupId>nl.interestingcorner.coordinates</groupId>
|
<groupId>nl.interestingcorner.coordinates</groupId>
|
||||||
<artifactId>ic_plugin_coordinates</artifactId>
|
<artifactId>ic_plugin_coordinates</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>ic_plugin_coordinates</name>
|
<name>ic_plugin_coordinates</name>
|
||||||
<!-- FIXME change it to the project's website -->
|
<!-- FIXME change it to the project's website -->
|
||||||
@@ -30,6 +31,12 @@
|
|||||||
<type>pom</type>
|
<type>pom</type>
|
||||||
<scope>import</scope>
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>nl.interestingcorner.core</groupId>
|
||||||
|
<artifactId>ic_plugin_core</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package nl.interestingcorner.coordinates.db;
|
package nl.interestingcorner.coordinates.db;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
@@ -11,9 +8,9 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Properties;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
import nl.interestingcorner.core.db.*;
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ main: nl.interestingcorner.coordinates.App
|
|||||||
name: IC-coords
|
name: IC-coords
|
||||||
version: 0.1
|
version: 0.1
|
||||||
api-version: 1.21
|
api-version: 1.21
|
||||||
|
depend: [IC-core]
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
ic-coords:
|
ic-coords:
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<groupId>nl.interestingcorner.core</groupId>
|
<groupId>nl.interestingcorner.core</groupId>
|
||||||
<artifactId>ic_plugin_core</artifactId>
|
<artifactId>ic_plugin_core</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>ic_plugin_core</name>
|
<name>ic_plugin_core</name>
|
||||||
<!-- FIXME change it to the project's website -->
|
<!-- FIXME change it to the project's website -->
|
||||||
|
|||||||
14
ic_plugin_core/settings.xml
Normal file
14
ic_plugin_core/settings.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>default</id>
|
||||||
|
<properties>
|
||||||
|
<db.username>spigot</db.username>
|
||||||
|
<db.password>Z7nhqy+spigot-minecraft</db.password>
|
||||||
|
<db.name>ic_minecraft</db.name>
|
||||||
|
<db.host>localhost</db.host>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</settings>
|
||||||
@@ -2,16 +2,21 @@ package nl.interestingcorner.core;
|
|||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import nl.interestingcorner.core.db.DatabaseManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hello world!
|
* Core plugin class for the Interesting Corner plugin
|
||||||
*/
|
*/
|
||||||
public class App {
|
public class App extends JavaPlugin {
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
getLogger().info("Hello, SpigotMC!");
|
DatabaseManager.INSTANCE.initialize(this);
|
||||||
|
getLogger().info("Core plugin loaded!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
getLogger().info("See you again, SpigotMC!");
|
DatabaseManager.INSTANCE.close();
|
||||||
|
getLogger().info("Core plugin exited!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package nl.interestingcorner.core.db;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
|
||||||
|
public interface DatabaseInitializeListener {
|
||||||
|
/**
|
||||||
|
* Gets called when the databse has been setup and tables can be initialized.
|
||||||
|
* @param connection the connection to the database
|
||||||
|
*/
|
||||||
|
void initializeDatabaseTables(Connection connection);
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
package nl.interestingcorner.core.db;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
public enum DatabaseManager {
|
||||||
|
INSTANCE;
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
private JavaPlugin app;
|
||||||
|
private boolean initialized = false;
|
||||||
|
private final List<DatabaseInitializeListener> databaseInitializeListeners = new ArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the database. Creates the file and sets up the db structure.
|
||||||
|
*
|
||||||
|
* @param app the app to use for logging
|
||||||
|
* @return true if the database was initialized successfully. False if not.
|
||||||
|
*/
|
||||||
|
public boolean initialize(JavaPlugin app) {
|
||||||
|
if (this.initialized) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.app = app;
|
||||||
|
|
||||||
|
if (!setupDatabase()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
initializeTables();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Closes the connectino to the database
|
||||||
|
*
|
||||||
|
* @return true if the connection closed succesfully, false if not.
|
||||||
|
*/
|
||||||
|
public boolean close() {
|
||||||
|
try {
|
||||||
|
if (this.connection != null && !this.connection.isClosed()) {
|
||||||
|
this.connection.close();
|
||||||
|
this.initialized = false;
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
this.app.getLogger().log(Level.SEVERE, "Error while closing the databse connection: {0}", ex.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerDatabaseInitializeListener(DatabaseInitializeListener listener) {
|
||||||
|
this.databaseInitializeListeners.add(listener);
|
||||||
|
|
||||||
|
// immediately initialize if the database is already initialized
|
||||||
|
if (this.initialized) {
|
||||||
|
try {
|
||||||
|
listener.initializeDatabaseTables(this.connection);
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.app.getLogger().log(Level.SEVERE, "Could not initialize database tables: {0}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets up the connectino to the database. Creates a new .db file if it
|
||||||
|
* doesn't exist yet.
|
||||||
|
*
|
||||||
|
* @return true if the connection was set up successfully. False if not.
|
||||||
|
*/
|
||||||
|
private boolean setupDatabase() {
|
||||||
|
if (!this.app.getDataFolder().exists()) {
|
||||||
|
if (!this.app.getDataFolder().mkdirs()) {
|
||||||
|
app.getLogger().severe("Could not create data folder");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
File dbFile = new File(app.getDataFolder(), "database.db");
|
||||||
|
String url = "jdbc:sqlite:" + dbFile.getAbsolutePath();
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.connection = DriverManager.getConnection(url);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
this.app.getLogger().log(Level.SEVERE, "Could not connect to database file {0}: {1}",
|
||||||
|
new Object[] { dbFile, e.getMessage() });
|
||||||
|
}
|
||||||
|
|
||||||
|
this.app.getLogger().log(Level.INFO, "Connected to SQLite database: {0}", dbFile.getName());
|
||||||
|
this.initialized = true;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initializes the tables for the database.
|
||||||
|
*/
|
||||||
|
private void initializeTables() {
|
||||||
|
for (DatabaseInitializeListener listener : this.databaseInitializeListeners) {
|
||||||
|
try {
|
||||||
|
listener.initializeDatabaseTables(this.connection);
|
||||||
|
} catch (Exception e) {
|
||||||
|
this.app.getLogger().log(Level.SEVERE, "Could not initialize database tables: {0}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
12
pom.xml
Normal file
12
pom.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<project>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>nl.interestingcorner</groupId>
|
||||||
|
<artifactId>ic_plugins</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>ic_plugin_core</module>
|
||||||
|
<module>ic_plugin_coordinates</module>
|
||||||
|
</modules>
|
||||||
|
</project>
|
||||||
Reference in New Issue
Block a user