mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-28 12:07:35 +01:00
Added activity index queries and placeholders.
- Added CommonQueries#fetchActivityIndexOf - Added CommonQueries#getActivityGroupForIndex - Added %plan_player_activity_index% - Added %plan_player_activity_group% Affects issues: - Close #1663
This commit is contained in:
parent
e220e40a8c
commit
15c9325eb4
@ -71,4 +71,21 @@ public interface CommonQueries {
|
|||||||
boolean doesDBHaveTable(String table);
|
boolean doesDBHaveTable(String table);
|
||||||
|
|
||||||
boolean doesDBHaveTableColumn(String table, String column);
|
boolean doesDBHaveTableColumn(String table, String column);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates the activity index for the player at a specific date.
|
||||||
|
*
|
||||||
|
* @param playerUUID UUID of the player.
|
||||||
|
* @param epochMs Epoch millisecond to use for calculation
|
||||||
|
* @return a double between 0.0 and 5.0.
|
||||||
|
*/
|
||||||
|
double fetchActivityIndexOf(UUID playerUUID, long epochMs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a String that represents the Activity group for an index.
|
||||||
|
*
|
||||||
|
* @param activityIndex a double between 0.0 and 5.0.
|
||||||
|
* @return Name of the group (in English) that this activityIndex falls within.
|
||||||
|
*/
|
||||||
|
String getActivityGroupForIndex(double activityIndex);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ import com.djrapitops.plan.delivery.formatting.Formatter;
|
|||||||
import com.djrapitops.plan.delivery.formatting.Formatters;
|
import com.djrapitops.plan.delivery.formatting.Formatters;
|
||||||
import com.djrapitops.plan.identification.Server;
|
import com.djrapitops.plan.identification.Server;
|
||||||
import com.djrapitops.plan.identification.ServerInfo;
|
import com.djrapitops.plan.identification.ServerInfo;
|
||||||
|
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||||
|
import com.djrapitops.plan.settings.config.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.storage.database.DBSystem;
|
import com.djrapitops.plan.storage.database.DBSystem;
|
||||||
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
||||||
import com.djrapitops.plan.utilities.Predicates;
|
import com.djrapitops.plan.utilities.Predicates;
|
||||||
@ -42,16 +44,19 @@ import static com.djrapitops.plan.utilities.MiscUtils.*;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class PlayerPlaceHolders implements Placeholders {
|
public class PlayerPlaceHolders implements Placeholders {
|
||||||
|
|
||||||
|
private final PlanConfig config;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
private final Formatters formatters;
|
private final Formatters formatters;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public PlayerPlaceHolders(
|
public PlayerPlaceHolders(
|
||||||
|
PlanConfig config,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
ServerInfo serverInfo,
|
ServerInfo serverInfo,
|
||||||
Formatters formatters
|
Formatters formatters
|
||||||
) {
|
) {
|
||||||
|
this.config = config;
|
||||||
this.dbSystem = dbSystem;
|
this.dbSystem = dbSystem;
|
||||||
this.serverInfo = serverInfo;
|
this.serverInfo = serverInfo;
|
||||||
this.formatters = formatters;
|
this.formatters = formatters;
|
||||||
@ -209,5 +214,18 @@ public class PlayerPlaceHolders implements Placeholders {
|
|||||||
.map(Server::getName)
|
.map(Server::getName)
|
||||||
.orElse("-")
|
.orElse("-")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
placeholders.register("player_activity_index",
|
||||||
|
player -> player.getActivityIndex(
|
||||||
|
now(),
|
||||||
|
config.get(TimeSettings.ACTIVE_PLAY_THRESHOLD)
|
||||||
|
).getValue()
|
||||||
|
);
|
||||||
|
placeholders.register("player_activity_group",
|
||||||
|
player -> player.getActivityIndex(
|
||||||
|
now(),
|
||||||
|
config.get(TimeSettings.ACTIVE_PLAY_THRESHOLD)
|
||||||
|
).getGroup()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,14 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.query;
|
package com.djrapitops.plan.query;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.delivery.domain.mutators.ActivityIndex;
|
||||||
import com.djrapitops.plan.gathering.cache.SessionCache;
|
import com.djrapitops.plan.gathering.cache.SessionCache;
|
||||||
import com.djrapitops.plan.gathering.domain.Session;
|
import com.djrapitops.plan.gathering.domain.Session;
|
||||||
|
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||||
|
import com.djrapitops.plan.settings.config.paths.TimeSettings;
|
||||||
import com.djrapitops.plan.storage.database.DBType;
|
import com.djrapitops.plan.storage.database.DBType;
|
||||||
import com.djrapitops.plan.storage.database.Database;
|
import com.djrapitops.plan.storage.database.Database;
|
||||||
|
import com.djrapitops.plan.storage.database.queries.containers.PlayerContainerQuery;
|
||||||
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
||||||
import com.djrapitops.plan.storage.database.queries.objects.SessionQueries;
|
import com.djrapitops.plan.storage.database.queries.objects.SessionQueries;
|
||||||
import com.djrapitops.plan.storage.database.queries.objects.UserIdentifierQueries;
|
import com.djrapitops.plan.storage.database.queries.objects.UserIdentifierQueries;
|
||||||
@ -34,9 +38,11 @@ import java.util.UUID;
|
|||||||
public class CommonQueriesImplementation implements CommonQueries {
|
public class CommonQueriesImplementation implements CommonQueries {
|
||||||
|
|
||||||
private final Database db;
|
private final Database db;
|
||||||
|
private final PlanConfig config;
|
||||||
|
|
||||||
CommonQueriesImplementation(Database db) {
|
CommonQueriesImplementation(Database db, PlanConfig config) {
|
||||||
this.db = db;
|
this.db = db;
|
||||||
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -98,4 +104,14 @@ public class CommonQueriesImplementation implements CommonQueries {
|
|||||||
throw new IllegalStateException("Unsupported Database Type: " + dbType.getName());
|
throw new IllegalStateException("Unsupported Database Type: " + dbType.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double fetchActivityIndexOf(UUID playerUUID, long epochMs) {
|
||||||
|
return db.query(new PlayerContainerQuery(playerUUID)).getActivityIndex(epochMs, config.get(TimeSettings.ACTIVE_PLAY_THRESHOLD)).getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getActivityGroupForIndex(double activityIndex) {
|
||||||
|
return ActivityIndex.getGroup(activityIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.query;
|
|||||||
|
|
||||||
import com.djrapitops.plan.exceptions.database.DBOpException;
|
import com.djrapitops.plan.exceptions.database.DBOpException;
|
||||||
import com.djrapitops.plan.identification.ServerInfo;
|
import com.djrapitops.plan.identification.ServerInfo;
|
||||||
|
import com.djrapitops.plan.settings.config.PlanConfig;
|
||||||
import com.djrapitops.plan.storage.database.DBSystem;
|
import com.djrapitops.plan.storage.database.DBSystem;
|
||||||
import com.djrapitops.plan.storage.database.Database;
|
import com.djrapitops.plan.storage.database.Database;
|
||||||
import com.djrapitops.plan.storage.database.queries.QueryAPIExecutable;
|
import com.djrapitops.plan.storage.database.queries.QueryAPIExecutable;
|
||||||
@ -40,6 +41,7 @@ import java.util.function.Consumer;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class QuerySvc implements QueryService {
|
public class QuerySvc implements QueryService {
|
||||||
|
|
||||||
|
private final PlanConfig config;
|
||||||
private final DBSystem dbSystem;
|
private final DBSystem dbSystem;
|
||||||
private final ServerInfo serverInfo;
|
private final ServerInfo serverInfo;
|
||||||
private final ErrorLogger errorLogger;
|
private final ErrorLogger errorLogger;
|
||||||
@ -49,10 +51,12 @@ public class QuerySvc implements QueryService {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QuerySvc(
|
public QuerySvc(
|
||||||
|
PlanConfig config,
|
||||||
DBSystem dbSystem,
|
DBSystem dbSystem,
|
||||||
ServerInfo serverInfo,
|
ServerInfo serverInfo,
|
||||||
ErrorLogger errorLogger
|
ErrorLogger errorLogger
|
||||||
) {
|
) {
|
||||||
|
this.config = config;
|
||||||
this.dbSystem = dbSystem;
|
this.dbSystem = dbSystem;
|
||||||
this.serverInfo = serverInfo;
|
this.serverInfo = serverInfo;
|
||||||
this.errorLogger = errorLogger;
|
this.errorLogger = errorLogger;
|
||||||
@ -132,6 +136,6 @@ public class QuerySvc implements QueryService {
|
|||||||
public CommonQueries getCommonQueries() {
|
public CommonQueries getCommonQueries() {
|
||||||
Database database = dbSystem.getDatabase();
|
Database database = dbSystem.getDatabase();
|
||||||
if (database == null) throw new IllegalStateException("Database has not been initialized.");
|
if (database == null) throw new IllegalStateException("Database has not been initialized.");
|
||||||
return new CommonQueriesImplementation(database);
|
return new CommonQueriesImplementation(database, config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user