94 lines
2.6 KiB
Java
Executable file
94 lines
2.6 KiB
Java
Executable file
package nl.iobyte.themepark.api.database;
|
|
|
|
import nl.iobyte.themepark.api.database.objects.Database;
|
|
import nl.iobyte.themepark.api.database.objects.types.NullDatabase;
|
|
import nl.iobyte.themepark.scheduler.Task;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class DatabaseService {
|
|
|
|
private final Map<String, Database> databases = new HashMap<>();
|
|
|
|
/**
|
|
* Add Database to DatabaseService
|
|
* @param id String
|
|
* @param database Database
|
|
*/
|
|
public void addDatabase(String id, Database database) {
|
|
if(id == null || id.isEmpty() || database == null)
|
|
return;
|
|
|
|
if(databases.containsKey(id))
|
|
return;
|
|
|
|
databases.put(id, database);
|
|
}
|
|
|
|
/**
|
|
* Get Database
|
|
* @param id String
|
|
* @return Database
|
|
*/
|
|
public Database getDatabase(String id) {
|
|
if(id == null || id.isEmpty())
|
|
return new NullDatabase();
|
|
|
|
return databases.getOrDefault(id, new NullDatabase());
|
|
}
|
|
|
|
public Task<Boolean> executeAsync(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).executeAsync(query, objects);
|
|
}
|
|
|
|
public boolean execute(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).execute(query, objects);
|
|
}
|
|
|
|
public Task<Integer> executeUpdateAsync(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).executeUpdateAsync(query, objects);
|
|
}
|
|
|
|
public int executeUpdate(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).executeUpdate(query, objects);
|
|
}
|
|
|
|
public Task<ArrayList<Map<String, Object>>> executeQueryAsync(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).executeQueryAsync(query, objects);
|
|
}
|
|
|
|
public ArrayList<Map<String, Object>> executeQuery(String id, String query, Map<Integer, Object> objects) {
|
|
return getDatabase(id).executeQuery(query, objects);
|
|
}
|
|
|
|
/**
|
|
* Check if Database exists
|
|
* @param id String
|
|
* @return Boolean
|
|
*/
|
|
public boolean hasDatabase(String id) {
|
|
if(id == null || id.isEmpty())
|
|
return false;
|
|
|
|
return databases.containsKey(id);
|
|
}
|
|
|
|
/**
|
|
* Remove Database
|
|
* @param id String
|
|
*/
|
|
public void removeDatabase(String id) {
|
|
Database db = databases.remove(id);
|
|
if(db == null)
|
|
return;
|
|
|
|
db.closeConnection();
|
|
}
|
|
|
|
public void stop() {
|
|
for(Database database : databases.values())
|
|
database.closeConnection();
|
|
}
|
|
|
|
}
|