diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionGraphDto.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionGraphDto.java
new file mode 100644
index 0000000000..77976a4b9b
--- /dev/null
+++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionGraphDto.java
@@ -0,0 +1,112 @@
+/*
+ * 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 .
+ */
+package com.djrapitops.plan.delivery.domain.datatransfer.extension;
+
+import com.djrapitops.plan.extension.FormatType;
+import com.djrapitops.plan.extension.graph.DataPoint;
+import com.djrapitops.plan.extension.graph.XAxisType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author AuroraLS3
+ */
+public class ExtensionGraphDto {
+
+ private final String displayName;
+ private final XAxisType xAxisType;
+ private final int xAxisSoftMin;
+ private final int xAxisSoftMax;
+ private final int yAxisSoftMin;
+ private final int yAxisSoftMax;
+ private final int columnCount;
+ private final List unitNames = new ArrayList<>();
+ private final List valueFormats = new ArrayList<>();
+ private final List seriesColors = new ArrayList<>();
+ private final boolean supportsStacking;
+
+ private final List dataPoints = new ArrayList<>();
+
+ public ExtensionGraphDto(
+ String displayName,
+ XAxisType xAxisType, int xAxisSoftMin, int xAxisSoftMax,
+ int yAxisSoftMin, int yAxisSoftMax, int columnCount,
+ boolean supportsStacking
+ ) {
+ this.displayName = displayName;
+ this.xAxisType = xAxisType;
+ this.xAxisSoftMin = xAxisSoftMin;
+ this.xAxisSoftMax = xAxisSoftMax;
+ this.yAxisSoftMin = yAxisSoftMin;
+ this.yAxisSoftMax = yAxisSoftMax;
+ this.columnCount = columnCount;
+ this.supportsStacking = supportsStacking;
+ }
+
+ public void addPoint(DataPoint dataPoint) {
+ dataPoints.add(dataPoint);
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public XAxisType getxAxisType() {
+ return xAxisType;
+ }
+
+ public int getxAxisSoftMin() {
+ return xAxisSoftMin;
+ }
+
+ public int getxAxisSoftMax() {
+ return xAxisSoftMax;
+ }
+
+ public int getyAxisSoftMin() {
+ return yAxisSoftMin;
+ }
+
+ public int getyAxisSoftMax() {
+ return yAxisSoftMax;
+ }
+
+ public int getColumnCount() {
+ return columnCount;
+ }
+
+ public List getUnitNames() {
+ return unitNames;
+ }
+
+ public List getValueFormats() {
+ return valueFormats;
+ }
+
+ public List getSeriesColors() {
+ return seriesColors;
+ }
+
+ public boolean isSupportsStacking() {
+ return supportsStacking;
+ }
+
+ public List getDataPoints() {
+ return dataPoints;
+ }
+}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionTabDataDto.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionTabDataDto.java
index 8a1129d39e..266736b52c 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionTabDataDto.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionTabDataDto.java
@@ -26,6 +26,7 @@
import java.util.Optional;
import java.util.stream.Collectors;
+// TODO #2544 Add Table names to ExtensionTabDto
public class ExtensionTabDataDto {
private final TabInformationDto tabInformation; // Can be null in case where no tab was defined for provider.
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/JSONFactory.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/JSONFactory.java
index 397aeec22b..6491d83a37 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/JSONFactory.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/JSONFactory.java
@@ -27,7 +27,7 @@
import com.djrapitops.plan.delivery.formatting.Formatters;
import com.djrapitops.plan.delivery.rendering.json.graphs.Graphs;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionServerTableDataQuery;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.ExtensionServerTableDataQuery;
import com.djrapitops.plan.gathering.ServerUptimeCalculator;
import com.djrapitops.plan.gathering.cache.SessionCache;
import com.djrapitops.plan.gathering.domain.*;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/query/QueryJSONResolver.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/query/QueryJSONResolver.java
index ca07f8f89a..62c94aa909 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/query/QueryJSONResolver.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/query/QueryJSONResolver.java
@@ -34,7 +34,7 @@
import com.djrapitops.plan.delivery.web.resolver.request.WebUser;
import com.djrapitops.plan.delivery.webserver.RequestBodyConverter;
import com.djrapitops.plan.delivery.webserver.cache.JSONStorage;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionQueryResultTableDataQuery;
+import com.djrapitops.plan.extension.implementation.storage.queries.playertable.ExtensionQueryResultTableDataQuery;
import com.djrapitops.plan.identification.ServerInfo;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.settings.config.PlanConfig;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java
index c89df47e57..1c0f7f903b 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java
@@ -23,6 +23,8 @@
import com.djrapitops.plan.extension.icon.Icon;
import com.djrapitops.plan.extension.implementation.TabInformation;
import com.djrapitops.plan.extension.implementation.results.*;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.ExtensionPlayerTablesQuery;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.QueriedTables;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerDataQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerDataQuery.java
index cbd5263f70..c03158a19f 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerDataQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerDataQuery.java
@@ -23,6 +23,9 @@
import com.djrapitops.plan.extension.icon.Icon;
import com.djrapitops.plan.extension.implementation.TabInformation;
import com.djrapitops.plan.extension.implementation.results.*;
+import com.djrapitops.plan.extension.implementation.storage.queries.aggregate.*;
+import com.djrapitops.plan.extension.implementation.storage.queries.playertable.ExtensionServerTablesQuery;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.QueriedTables;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateBooleansQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateBooleansQuery.java
similarity index 98%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateBooleansQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateBooleansQuery.java
index 2564dec180..2b389ab9f3 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateBooleansQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateBooleansQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.aggregate;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
@@ -25,6 +25,7 @@
import com.djrapitops.plan.extension.implementation.results.ExtensionDescription;
import com.djrapitops.plan.extension.implementation.results.ExtensionDoubleData;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
+import com.djrapitops.plan.extension.implementation.storage.queries.QueriedTabData;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateDoublesQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateDoublesQuery.java
similarity index 98%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateDoublesQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateDoublesQuery.java
index 8b7668899b..1ae59319a6 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateDoublesQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateDoublesQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.aggregate;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
@@ -25,6 +25,7 @@
import com.djrapitops.plan.extension.implementation.results.ExtensionDescription;
import com.djrapitops.plan.extension.implementation.results.ExtensionDoubleData;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
+import com.djrapitops.plan.extension.implementation.storage.queries.QueriedTabData;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateGroupsQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateGroupsQuery.java
similarity index 98%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateGroupsQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateGroupsQuery.java
index 58646a2a7c..9f25d78318 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateGroupsQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateGroupsQuery.java
@@ -14,13 +14,14 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.aggregate;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
import com.djrapitops.plan.extension.icon.Family;
import com.djrapitops.plan.extension.icon.Icon;
import com.djrapitops.plan.extension.implementation.results.ExtensionData;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.QueriedTables;
import com.djrapitops.plan.extension.table.Table;
import com.djrapitops.plan.extension.table.TableAccessor;
import com.djrapitops.plan.identification.ServerUUID;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateNumbersQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateNumbersQuery.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateNumbersQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateNumbersQuery.java
index 92543c4ca5..8437560ffa 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregateNumbersQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregateNumbersQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.aggregate;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.FormatType;
@@ -26,6 +26,7 @@
import com.djrapitops.plan.extension.implementation.results.ExtensionDescription;
import com.djrapitops.plan.extension.implementation.results.ExtensionNumberData;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
+import com.djrapitops.plan.extension.implementation.storage.queries.QueriedTabData;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregatePercentagesQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregatePercentagesQuery.java
similarity index 98%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregatePercentagesQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregatePercentagesQuery.java
index 2292e2811d..be09fe0fe5 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionAggregatePercentagesQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/aggregate/ExtensionAggregatePercentagesQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.aggregate;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
@@ -25,6 +25,7 @@
import com.djrapitops.plan.extension.implementation.results.ExtensionDescription;
import com.djrapitops.plan.extension.implementation.results.ExtensionDoubleData;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
+import com.djrapitops.plan.extension.implementation.storage.queries.QueriedTabData;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.storage.database.SQLDB;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionGraphQueries.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionGraphQueries.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionGraphQueries.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionGraphQueries.java
index 0ae6a74ab8..3c1d14a7d6 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionGraphQueries.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionGraphQueries.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.graph;
import com.djrapitops.plan.storage.database.queries.Query;
import com.djrapitops.plan.storage.database.sql.building.Sql;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionServerGraphQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionServerGraphQuery.java
new file mode 100644
index 0000000000..acf721d0a7
--- /dev/null
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionServerGraphQuery.java
@@ -0,0 +1,99 @@
+/*
+ * 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 .
+ */
+package com.djrapitops.plan.extension.implementation.storage.queries.graph;
+
+import com.djrapitops.plan.delivery.domain.datatransfer.extension.ExtensionGraphDto;
+import com.djrapitops.plan.extension.graph.XAxisType;
+import com.djrapitops.plan.identification.ServerUUID;
+import com.djrapitops.plan.storage.database.SQLDB;
+import com.djrapitops.plan.storage.database.queries.Query;
+import com.djrapitops.plan.storage.database.sql.tables.extension.ExtensionPluginTable;
+import com.djrapitops.plan.storage.database.sql.tables.extension.ExtensionProviderTable;
+import com.djrapitops.plan.storage.database.sql.tables.extension.graph.ExtensionGraphMetadataTable;
+
+import java.util.Optional;
+
+import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
+
+/**
+ * Query for fetching data of a server graph.
+ *
+ * @author AuroraLS3
+ */
+public class ExtensionServerGraphQuery implements Query> {
+
+ private static final ExtensionGraphMetadataTable.TableType TABLE_TYPE = ExtensionGraphMetadataTable.TableType.SERVER;
+
+ private final ServerUUID serverUUID;
+ private final String graphTableName;
+
+ public ExtensionServerGraphQuery(ServerUUID serverUUID, String graphTableName) {
+ this.serverUUID = serverUUID;
+ this.graphTableName = graphTableName;
+ }
+
+ @Override
+ public Optional executeQuery(SQLDB db) {
+ Optional metadata = db.query(getMetadata());
+ if (metadata.isEmpty()) {
+ return Optional.empty();
+ }
+ // Optional being found means that the table name should exist and is no longer an SQL injection risk.
+ addLabels(metadata.get());
+ addUnits(metadata.get());
+ addFormats(metadata.get());
+ addValues(metadata.get());
+
+ return metadata;
+ }
+
+ private void addValues(ExtensionGraphDto extensionGraphDto) {
+
+ }
+
+ private void addFormats(ExtensionGraphDto extensionGraphDto) {
+
+ }
+
+ private void addUnits(ExtensionGraphDto extensionGraphDto) {
+
+ }
+
+ // TODO #2544 add series labels to the graph point provider
+ private void addLabels(ExtensionGraphDto extensionGraphDto) {
+
+ }
+
+ private Query> getMetadata() {
+ String sql = SELECT + "*" + FROM + ExtensionGraphMetadataTable.TABLE_NAME + " m " +
+ INNER_JOIN + ExtensionProviderTable.TABLE_NAME + " p ON p.id=m." + ExtensionGraphMetadataTable.PROVIDER_ID +
+ INNER_JOIN + ExtensionPluginTable.TABLE_NAME + " pl ON pl.id=p." + ExtensionProviderTable.PLUGIN_ID +
+ WHERE + ExtensionGraphMetadataTable.GRAPH_TABLE_NAME + "=?" +
+ AND + ExtensionGraphMetadataTable.TABLE_TYPE + "=?" +
+ AND + ExtensionPluginTable.SERVER_UUID + "=?";
+ return db -> db.queryOptional(sql, set -> new ExtensionGraphDto(
+ set.getString(ExtensionProviderTable.TEXT),
+ XAxisType.valueOf(set.getString(ExtensionGraphMetadataTable.X_AXIS_TYPE)),
+ set.getInt(ExtensionGraphMetadataTable.X_AXIS_SOFT_MIN),
+ set.getInt(ExtensionGraphMetadataTable.X_AXIS_SOFT_MAX),
+ set.getInt(ExtensionGraphMetadataTable.Y_AXIS_SOFT_MIN),
+ set.getInt(ExtensionGraphMetadataTable.Y_AXIS_SOFT_MAX),
+ set.getInt(ExtensionGraphMetadataTable.COLUMN_COUNT),
+ set.getBoolean(ExtensionGraphMetadataTable.SUPPORTS_STACKING)
+ ), graphTableName, TABLE_TYPE.getType(), serverUUID);
+ }
+}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionQueryResultTableDataQuery.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionQueryResultTableDataQuery.java
index a157ffc4df..2eb7c7bc14 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionQueryResultTableDataQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.playertable;
import com.djrapitops.plan.extension.FormatType;
import com.djrapitops.plan.extension.icon.Color;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTablesQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionServerTablesQuery.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTablesQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionServerTablesQuery.java
index 3390fc3269..d83619ef68 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTablesQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/playertable/ExtensionServerTablesQuery.java
@@ -14,13 +14,14 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.playertable;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
import com.djrapitops.plan.extension.icon.Family;
import com.djrapitops.plan.extension.icon.Icon;
import com.djrapitops.plan.extension.implementation.results.ExtensionData;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.QueriedTables;
import com.djrapitops.plan.extension.table.Table;
import com.djrapitops.plan.extension.table.TableAccessor;
import com.djrapitops.plan.extension.table.TableColumnFormat;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerTablesQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionPlayerTablesQuery.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerTablesQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionPlayerTablesQuery.java
index 876b1c88ee..e271116056 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerTablesQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionPlayerTablesQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.table;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTableDataQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionServerTableDataQuery.java
similarity index 99%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTableDataQuery.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionServerTableDataQuery.java
index 0751c3dee8..1e028397c9 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerTableDataQuery.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/ExtensionServerTableDataQuery.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.table;
import com.djrapitops.plan.extension.FormatType;
import com.djrapitops.plan.extension.icon.Color;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/QueriedTables.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/QueriedTables.java
similarity index 97%
rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/QueriedTables.java
rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/QueriedTables.java
index e8ff97d3af..9f6dad14f2 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/QueriedTables.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/table/QueriedTables.java
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package com.djrapitops.plan.extension.implementation.storage.queries;
+package com.djrapitops.plan.extension.implementation.storage.queries.table;
import com.djrapitops.plan.extension.ElementOrder;
import com.djrapitops.plan.extension.icon.Color;
@@ -22,6 +22,7 @@
import com.djrapitops.plan.extension.implementation.TabInformation;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
import com.djrapitops.plan.extension.implementation.results.ExtensionTableData;
+import com.djrapitops.plan.extension.implementation.storage.queries.QueriedTabData;
import com.djrapitops.plan.extension.table.Table;
import com.djrapitops.plan.extension.table.TableAccessor;
import com.djrapitops.plan.utilities.java.Maps;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGraphPointProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGraphPointProviderTransaction.java
index ce7080d66c..58ec1b8514 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGraphPointProviderTransaction.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGraphPointProviderTransaction.java
@@ -57,7 +57,6 @@ public StoreGraphPointProviderTransaction(
ExtensionMethod method,
ProviderInformation info,
ServerUUID serverUUID
-
) {
this.annotation = annotation;
this.method = method;
@@ -274,14 +273,15 @@ private Executable insertMetadata() {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setBoolean(1, ExtensionExtractor.actuallySupportsStacking(annotation));
- statement.setInt(2, annotation.yAxisSoftMax());
- statement.setInt(3, annotation.yAxisSoftMin());
- statement.setInt(4, annotation.xAxisSoftMax());
- statement.setInt(5, annotation.xAxisSoftMin());
- statement.setString(6, ExtensionGraphMetadataTable.getTableName(info.getPluginName(), method.getMethodName()));
- statement.setInt(7, getTableType().getType());
- ExtensionTabTable.set3TabValuesToStatement(statement, 8, info.getTab().orElse(null), info.getPluginName(), serverUUID);
- ExtensionProviderTable.set3PluginValuesToStatement(statement, 11, info.getName(), info.getPluginName(), serverUUID);
+ statement.setString(2, annotation.xAxisType().name());
+ statement.setInt(3, annotation.yAxisSoftMax());
+ statement.setInt(4, annotation.yAxisSoftMin());
+ statement.setInt(5, annotation.xAxisSoftMax());
+ statement.setInt(6, annotation.xAxisSoftMin());
+ statement.setString(7, ExtensionGraphMetadataTable.getTableName(info.getPluginName(), method.getMethodName()));
+ statement.setInt(8, getTableType().getType());
+ ExtensionTabTable.set3TabValuesToStatement(statement, 9, info.getTab().orElse(null), info.getPluginName(), serverUUID);
+ ExtensionProviderTable.set3PluginValuesToStatement(statement, 12, info.getName(), info.getPluginName(), serverUUID);
}
};
}
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/results/RemoveGraphTablesTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/results/RemoveGraphTablesTransaction.java
index f0631f8c16..44dfd292ea 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/results/RemoveGraphTablesTransaction.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/results/RemoveGraphTablesTransaction.java
@@ -16,7 +16,7 @@
*/
package com.djrapitops.plan.extension.implementation.storage.transactions.results;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionGraphQueries;
+import com.djrapitops.plan.extension.implementation.storage.queries.graph.ExtensionGraphQueries;
import com.djrapitops.plan.storage.database.transactions.Transaction;
import java.util.List;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/extension/graph/ExtensionGraphMetadataTable.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/extension/graph/ExtensionGraphMetadataTable.java
index e48f7ef5b4..fc4e900451 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/extension/graph/ExtensionGraphMetadataTable.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/extension/graph/ExtensionGraphMetadataTable.java
@@ -47,6 +47,7 @@ public class ExtensionGraphMetadataTable {
public static final String PROVIDER_ID = "provider_id";
public static final String TAB_ID = "tab_id";
public static final String SUPPORTS_STACKING = "supports_stacking";
+ public static final String X_AXIS_TYPE = "x_axis_type";
public static final String Y_AXIS_SOFT_MAX = "y_axis_soft_max";
public static final String Y_AXIS_SOFT_MIN = "y_axis_soft_min";
public static final String X_AXIS_SOFT_MAX = "x_axis_soft_max";
@@ -57,6 +58,7 @@ public class ExtensionGraphMetadataTable {
@Language("SQL")
public static final String INSERT_STATEMENT = "INSERT INTO " + TABLE_NAME + " (" +
SUPPORTS_STACKING + ',' +
+ X_AXIS_TYPE + ',' +
Y_AXIS_SOFT_MAX + ',' +
Y_AXIS_SOFT_MIN + ',' +
X_AXIS_SOFT_MAX + ',' +
@@ -65,13 +67,14 @@ public class ExtensionGraphMetadataTable {
TABLE_TYPE + ',' +
TAB_ID + ',' +
PROVIDER_ID +
- ") VALUES (?, ?, ?, ?, ?, ?, ?," +
+ ") VALUES (?, ?, ?, ?, ?, ?, ?, ?," +
ExtensionTabTable.STATEMENT_SELECT_TAB_ID + ',' +
ExtensionProviderTable.STATEMENT_SELECT_PROVIDER_ID +
")";
@Language("SQL")
public static final String UPDATE_STATEMENT = "UPDATE " + TABLE_NAME + " SET " +
SUPPORTS_STACKING + "=?," +
+ X_AXIS_TYPE + "=?," +
Y_AXIS_SOFT_MAX + "=?," +
Y_AXIS_SOFT_MIN + "=?," +
X_AXIS_SOFT_MAX + "=?," +
@@ -101,6 +104,7 @@ public static String createTableSQL(DBType dbType) {
.column(PROVIDER_ID, Sql.INT).notNull()
.column(TAB_ID, Sql.INT)
.column(SUPPORTS_STACKING, Sql.BOOL).notNull()
+ .column(X_AXIS_TYPE, Sql.varchar(25)).notNull()
.column(Y_AXIS_SOFT_MAX, Sql.LONG).notNull()
.column(Y_AXIS_SOFT_MIN, Sql.LONG).notNull()
.column(X_AXIS_SOFT_MAX, Sql.LONG).notNull()
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/CombineUserTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/CombineUserTransaction.java
index d65e5ace55..050d803055 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/CombineUserTransaction.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/CombineUserTransaction.java
@@ -16,7 +16,7 @@
*/
package com.djrapitops.plan.storage.database.transactions.commands;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionGraphQueries;
+import com.djrapitops.plan.extension.implementation.storage.queries.graph.ExtensionGraphQueries;
import com.djrapitops.plan.storage.database.queries.objects.BaseUserQueries;
import com.djrapitops.plan.storage.database.sql.tables.*;
import com.djrapitops.plan.storage.database.sql.tables.extension.graph.ExtensionGraphMetadataTable;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/RemovePlayerTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/RemovePlayerTransaction.java
index dc5ff2d7a9..bd48634de4 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/RemovePlayerTransaction.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/commands/RemovePlayerTransaction.java
@@ -16,7 +16,7 @@
*/
package com.djrapitops.plan.storage.database.transactions.commands;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionGraphQueries;
+import com.djrapitops.plan.extension.implementation.storage.queries.graph.ExtensionGraphQueries;
import com.djrapitops.plan.storage.database.queries.PlayerFetchQueries;
import com.djrapitops.plan.storage.database.sql.tables.*;
import com.djrapitops.plan.storage.database.sql.tables.extension.ExtensionGroupsTable;
diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/init/RemoveOldExtensionsTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/init/RemoveOldExtensionsTransaction.java
index e206ee7a40..de95945dda 100644
--- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/init/RemoveOldExtensionsTransaction.java
+++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/transactions/init/RemoveOldExtensionsTransaction.java
@@ -16,7 +16,7 @@
*/
package com.djrapitops.plan.storage.database.transactions.init;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionGraphQueries;
+import com.djrapitops.plan.extension.implementation.storage.queries.graph.ExtensionGraphQueries;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.settings.config.ExtensionSettings;
import com.djrapitops.plan.storage.database.queries.Query;
diff --git a/Plan/common/src/test/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQueryTest.java b/Plan/common/src/test/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQueryTest.java
index 4a2679e414..c01e292c80 100644
--- a/Plan/common/src/test/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQueryTest.java
+++ b/Plan/common/src/test/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionQueryResultTableDataQueryTest.java
@@ -19,6 +19,7 @@
import com.djrapitops.plan.extension.CallEvents;
import com.djrapitops.plan.extension.ExtensionSvc;
import com.djrapitops.plan.extension.implementation.results.ExtensionTabData;
+import com.djrapitops.plan.extension.implementation.storage.queries.playertable.ExtensionQueryResultTableDataQuery;
import com.djrapitops.plan.gathering.domain.DataMap;
import com.djrapitops.plan.gathering.domain.FinishedSession;
import com.djrapitops.plan.identification.ServerUUID;
diff --git a/Plan/common/src/test/java/com/djrapitops/plan/storage/database/queries/ExtensionsDatabaseTest.java b/Plan/common/src/test/java/com/djrapitops/plan/storage/database/queries/ExtensionsDatabaseTest.java
index 36570e4746..e287291063 100644
--- a/Plan/common/src/test/java/com/djrapitops/plan/storage/database/queries/ExtensionsDatabaseTest.java
+++ b/Plan/common/src/test/java/com/djrapitops/plan/storage/database/queries/ExtensionsDatabaseTest.java
@@ -29,7 +29,7 @@
import com.djrapitops.plan.extension.implementation.results.*;
import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionPlayerDataQuery;
import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionServerDataQuery;
-import com.djrapitops.plan.extension.implementation.storage.queries.ExtensionServerTableDataQuery;
+import com.djrapitops.plan.extension.implementation.storage.queries.table.ExtensionServerTableDataQuery;
import com.djrapitops.plan.extension.table.Table;
import com.djrapitops.plan.gathering.domain.ActiveSession;
import com.djrapitops.plan.gathering.domain.WorldTimes;