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 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 executeAsync(String id, String query, Map objects) { return getDatabase(id).executeAsync(query, objects); } public boolean execute(String id, String query, Map objects) { return getDatabase(id).execute(query, objects); } public Task executeUpdateAsync(String id, String query, Map objects) { return getDatabase(id).executeUpdateAsync(query, objects); } public int executeUpdate(String id, String query, Map objects) { return getDatabase(id).executeUpdate(query, objects); } public Task>> executeQueryAsync(String id, String query, Map objects) { return getDatabase(id).executeQueryAsync(query, objects); } public ArrayList> executeQuery(String id, String query, Map 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(); } }