Removed ProxyAPI and ServerAPI since implementations are the same

This commit is contained in:
Rsl1122 2019-02-16 14:48:36 +02:00
parent 23969192c1
commit 039696910c
6 changed files with 50 additions and 148 deletions

View File

@ -19,14 +19,22 @@ package com.djrapitops.plan.api;
import com.djrapitops.plan.api.data.PlayerContainer;
import com.djrapitops.plan.api.data.ServerContainer;
import com.djrapitops.plan.api.exceptions.database.DBOpException;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.data.plugin.PluginData;
import com.djrapitops.plan.db.access.Query;
import com.djrapitops.plan.db.access.queries.containers.ContainerFetchQueries;
import com.djrapitops.plan.db.access.queries.objects.ServerQueries;
import com.djrapitops.plan.db.access.queries.objects.UserIdentifierQueries;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plan.system.database.databases.sql.operation.SQLFetchOps;
import com.djrapitops.plan.utilities.uuid.UUIDUtility;
import com.djrapitops.plugin.logging.L;
import com.djrapitops.plugin.logging.console.PluginLogger;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@ -37,17 +45,36 @@ import java.util.UUID;
*
* @author Rsl1122
*/
public abstract class CommonAPI implements PlanAPI {
@Singleton
public class CommonAPI implements PlanAPI {
private final DBSystem dbSystem;
private final UUIDUtility uuidUtility;
private final HookHandler hookHandler;
private final PluginLogger logger;
private final ErrorHandler errorHandler;
CommonAPI(UUIDUtility uuidUtility, ErrorHandler errorHandler) {
@Inject
public CommonAPI(
DBSystem dbSystem,
UUIDUtility uuidUtility,
HookHandler hookHandler,
PluginLogger logger,
ErrorHandler errorHandler
) {
this.dbSystem = dbSystem;
this.uuidUtility = uuidUtility;
this.hookHandler = hookHandler;
this.logger = logger;
this.errorHandler = errorHandler;
PlanAPIHolder.set(this);
}
@Override
public void addPluginDataSource(PluginData pluginData) {
hookHandler.addPluginDataSource(pluginData);
}
@Override
public String getPlayerInspectPageLink(UUID uuid) {
return getPlayerInspectPageLink(getPlayerName(uuid));
@ -73,8 +100,6 @@ public abstract class CommonAPI implements PlanAPI {
}
}
protected abstract <T> T queryDB(Query<T> query);
@Override
public PlayerContainer fetchPlayerContainer(UUID uuid) {
return new PlayerContainer(queryDB(ContainerFetchQueries.fetchPlayerContainer(uuid)));
@ -94,4 +119,17 @@ public abstract class CommonAPI implements PlanAPI {
public String getPlayerName(UUID playerUUID) {
return queryDB(UserIdentifierQueries.fetchPlayerNameOf(playerUUID)).orElse(null);
}
@Override
public FetchOperations fetchFromPlanDB() {
logger.warn("PlanAPI#fetchFromPlanDB has been deprecated and will be removed in the future. Stack trace to follow");
for (StackTraceElement element : Thread.currentThread().getStackTrace()) {
logger.warn(element.toString());
}
return new SQLFetchOps(dbSystem.getDatabase());
}
private <T> T queryDB(Query<T> query) {
return dbSystem.getDatabase().query(query);
}
}

View File

@ -1,69 +0,0 @@
/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.api;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.data.plugin.PluginData;
import com.djrapitops.plan.db.access.Query;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plan.system.database.databases.sql.operation.SQLFetchOps;
import com.djrapitops.plan.utilities.uuid.UUIDUtility;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* PlanAPI extension for proxy servers.
*
* @author Rsl1122
*/
@Singleton
public class ProxyAPI extends CommonAPI {
private final HookHandler hookHandler;
private final DBSystem dbSystem;
@Inject
public ProxyAPI(
UUIDUtility uuidUtility,
DBSystem dbSystem,
HookHandler hookHandler,
ErrorHandler errorHandler
) {
super(uuidUtility, errorHandler);
this.dbSystem = dbSystem;
this.hookHandler = hookHandler;
}
@Override
public void addPluginDataSource(PluginData pluginData) {
hookHandler.addPluginDataSource(pluginData);
}
@Override
public FetchOperations fetchFromPlanDB() {
return new SQLFetchOps(dbSystem.getDatabase());
}
@Override
protected <T> T queryDB(Query<T> query) {
return dbSystem.getDatabase().query(query);
}
}

View File

@ -1,68 +0,0 @@
/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.api;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.data.plugin.PluginData;
import com.djrapitops.plan.db.access.Query;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plan.system.database.databases.sql.operation.SQLFetchOps;
import com.djrapitops.plan.utilities.uuid.UUIDUtility;
import com.djrapitops.plugin.logging.error.ErrorHandler;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* PlanAPI extension for Bukkit
*
* @author Rsl1122
*/
@Singleton
public class ServerAPI extends CommonAPI {
private final HookHandler hookHandler;
private final DBSystem dbSystem;
@Inject
public ServerAPI(
UUIDUtility uuidUtility,
HookHandler hookHandler,
DBSystem dbSystem,
ErrorHandler errorHandler
) {
super(uuidUtility, errorHandler);
this.hookHandler = hookHandler;
this.dbSystem = dbSystem;
}
@Override
public void addPluginDataSource(PluginData pluginData) {
hookHandler.addPluginDataSource(pluginData);
}
@Override
public FetchOperations fetchFromPlanDB() {
return new SQLFetchOps(dbSystem.getDatabase());
}
@Override
protected <T> T queryDB(Query<T> query) {
return dbSystem.getDatabase().query(query);
}
}

View File

@ -16,8 +16,8 @@
*/
package com.djrapitops.plan.modules;
import com.djrapitops.plan.api.CommonAPI;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.ProxyAPI;
import com.djrapitops.plan.system.cache.ProxySessionCache;
import com.djrapitops.plan.system.cache.SessionCache;
import com.djrapitops.plan.system.database.DBSystem;
@ -42,7 +42,7 @@ import dagger.Module;
public interface ProxySuperClassBindingModule {
@Binds
PlanAPI bindProxyPlanAPI(ProxyAPI proxyAPI);
PlanAPI bindProxyPlanAPI(CommonAPI proxyAPI);
@Binds
DBSystem bindProxyDatabaseSystem(ProxyDBSystem proxyDBSystem);

View File

@ -16,8 +16,8 @@
*/
package com.djrapitops.plan.modules;
import com.djrapitops.plan.api.CommonAPI;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.ServerAPI;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.ServerInfoSystem;
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
@ -34,7 +34,7 @@ import dagger.Module;
public interface ServerSuperClassBindingModule {
@Binds
PlanAPI bindServerPlanAPI(ServerAPI serverAPI);
PlanAPI bindServerPlanAPI(CommonAPI serverAPI);
@Binds
InfoSystem bindServerInfoSystem(ServerInfoSystem serverInfoSystem);

View File

@ -16,7 +16,7 @@
*/
package com.djrapitops.plan.utilities.html.tables;
import com.djrapitops.plan.api.ServerAPI;
import com.djrapitops.plan.api.CommonAPI;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.data.store.containers.PlayerContainer;
import com.djrapitops.plan.data.store.keys.PlayerKeys;
@ -45,10 +45,11 @@ public class PlayersTableTest {
@BeforeClass
public static void setUpClass() {
new ServerAPI(
new CommonAPI(
Mockito.mock(DBSystem.class),
Mockito.mock(UUIDUtility.class),
Mockito.mock(HookHandler.class),
Mockito.mock(DBSystem.class),
new TestPluginLogger(),
new ConsoleErrorLogger(new TestPluginLogger())
);
}