Skip to content

Commit

Permalink
Unfinished graph query
Browse files Browse the repository at this point in the history
  • Loading branch information
AuroraLS3 committed Feb 22, 2025
1 parent 62f7191 commit a16b9c8
Show file tree
Hide file tree
Showing 26 changed files with 257 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -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 <https://www.gnu.org/licenses/>.
*/
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<String> unitNames = new ArrayList<>();
private final List<FormatType> valueFormats = new ArrayList<>();
private final List<String> seriesColors = new ArrayList<>();
private final boolean supportsStacking;

private final List<DataPoint> 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<String> getUnitNames() {
return unitNames;
}

public List<FormatType> getValueFormats() {
return valueFormats;
}

public List<String> getSeriesColors() {
return seriesColors;
}

public boolean isSupportsStacking() {
return supportsStacking;
}

public List<DataPoint> getDataPoints() {
return dataPoints;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
* 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.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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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 <https://www.gnu.org/licenses/>.
*/
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<Optional<ExtensionGraphDto>> {

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<ExtensionGraphDto> executeQuery(SQLDB db) {
Optional<ExtensionGraphDto> 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<Optional<ExtensionGraphDto>> 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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
* 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.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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* 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.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;
Expand Down
Loading

0 comments on commit a16b9c8

Please sign in to comment.