From a16b9c8d645b1d4a19a08780da44b51edf32ee96 Mon Sep 17 00:00:00 2001 From: Aurora Lahtela <24460436+AuroraLS3@users.noreply.github.com> Date: Fri, 17 Jan 2025 18:47:47 +0200 Subject: [PATCH] Unfinished graph query --- .../extension/ExtensionGraphDto.java | 112 ++++++++++++++++++ .../extension/ExtensionTabDataDto.java | 1 + .../delivery/rendering/json/JSONFactory.java | 2 +- .../json/query/QueryJSONResolver.java | 2 +- .../queries/ExtensionPlayerDataQuery.java | 2 + .../queries/ExtensionServerDataQuery.java | 3 + .../ExtensionAggregateBooleansQuery.java | 3 +- .../ExtensionAggregateDoublesQuery.java | 3 +- .../ExtensionAggregateGroupsQuery.java | 3 +- .../ExtensionAggregateNumbersQuery.java | 3 +- .../ExtensionAggregatePercentagesQuery.java | 3 +- .../{ => graph}/ExtensionGraphQueries.java | 2 +- .../graph/ExtensionServerGraphQuery.java | 99 ++++++++++++++++ .../ExtensionQueryResultTableDataQuery.java | 2 +- .../ExtensionServerTablesQuery.java | 3 +- .../ExtensionPlayerTablesQuery.java | 2 +- .../ExtensionServerTableDataQuery.java | 2 +- .../queries/{ => table}/QueriedTables.java | 3 +- .../StoreGraphPointProviderTransaction.java | 18 +-- .../results/RemoveGraphTablesTransaction.java | 2 +- .../graph/ExtensionGraphMetadataTable.java | 6 +- .../commands/CombineUserTransaction.java | 2 +- .../commands/RemovePlayerTransaction.java | 2 +- .../init/RemoveOldExtensionsTransaction.java | 2 +- ...xtensionQueryResultTableDataQueryTest.java | 1 + .../queries/ExtensionsDatabaseTest.java | 2 +- 26 files changed, 257 insertions(+), 28 deletions(-) create mode 100644 Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/datatransfer/extension/ExtensionGraphDto.java rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => aggregate}/ExtensionAggregateBooleansQuery.java (98%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => aggregate}/ExtensionAggregateDoublesQuery.java (98%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => aggregate}/ExtensionAggregateGroupsQuery.java (98%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => aggregate}/ExtensionAggregateNumbersQuery.java (99%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => aggregate}/ExtensionAggregatePercentagesQuery.java (98%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => graph}/ExtensionGraphQueries.java (99%) create mode 100644 Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/graph/ExtensionServerGraphQuery.java rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => playertable}/ExtensionQueryResultTableDataQuery.java (99%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => playertable}/ExtensionServerTablesQuery.java (99%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => table}/ExtensionPlayerTablesQuery.java (99%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => table}/ExtensionServerTableDataQuery.java (99%) rename Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/{ => table}/QueriedTables.java (97%) 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;