3
0
Fork 0
This repository has been archived on 2024-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
ThemePark/src/main/java/nl/iobyte/themepark/api/database/DatabaseService.java

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();
}
}