mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-13 17:38:03 +08:00
Jobs PluginData
This commit is contained in:
parent
4427baa744
commit
56ac0da8fe
@ -1,84 +0,0 @@
|
||||
package com.djrapitops.pluginbridge.plan.jobs;
|
||||
|
||||
import com.gamingmesh.jobs.Jobs;
|
||||
import com.gamingmesh.jobs.dao.JobsDAOData;
|
||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* PluginData class for Jobs-plugin.
|
||||
* <p>
|
||||
* Registered to the plugin by JobsHook
|
||||
*
|
||||
* @author Rsl1122
|
||||
* @see JobsHook
|
||||
* @since 3.2.1
|
||||
*/
|
||||
public class JobsAnalysisJobTable extends PluginData {
|
||||
|
||||
/**
|
||||
* Class Constructor, sets the parameters of the PluginData object.
|
||||
*/
|
||||
public JobsAnalysisJobTable() {
|
||||
super("Jobs", "analysis_table", AnalysisType.HTML);
|
||||
final String job = Html.FONT_AWESOME_ICON.parse("suitcase") + " Job";
|
||||
final String workers = Html.FONT_AWESOME_ICON.parse("users") + " Workers";
|
||||
final String tLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Total Level";
|
||||
final String aLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Avg Level";
|
||||
super.setPrefix(Html.TABLE_START_4.parse(job, workers, aLevel, tLevel));
|
||||
super.setSuffix(Html.TABLE_END.parse());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
||||
List<JobsDAOData> allJobs = Jobs.getDBManager().getDB().getAllJobs()
|
||||
.values().stream()
|
||||
.flatMap(Collection::stream)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (allJobs.isEmpty()) {
|
||||
return parseContainer("", Html.TABLELINE_4.parse("No Players with Jobs", "", "", ""));
|
||||
}
|
||||
|
||||
Map<String, Integer> workers = new HashMap<>();
|
||||
Map<String, Long> totals = new HashMap<>();
|
||||
for (JobsDAOData data : allJobs) {
|
||||
String job = data.getJobName();
|
||||
int level = data.getLevel();
|
||||
if (!workers.containsKey(job)) {
|
||||
workers.put(job, 0);
|
||||
}
|
||||
workers.put(job, workers.get(job) + 1);
|
||||
if (!totals.containsKey(job)) {
|
||||
totals.put(job, 0L);
|
||||
}
|
||||
totals.put(job, totals.get(job) + level);
|
||||
}
|
||||
|
||||
StringBuilder html = new StringBuilder();
|
||||
for (Map.Entry<String, Integer> entry : workers.entrySet()) {
|
||||
String job = entry.getKey();
|
||||
Integer amountOfWorkers = entry.getValue();
|
||||
Long totalLevel = totals.get(job);
|
||||
html.append(Html.TABLELINE_4.parse(
|
||||
job,
|
||||
amountOfWorkers,
|
||||
FormatUtils.cutDecimals(MathUtils.average((int) (long) totalLevel, amountOfWorkers)),
|
||||
totalLevel)
|
||||
);
|
||||
}
|
||||
return parseContainer("", html.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable getValue(UUID uuid) {
|
||||
return -1;
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.pluginbridge.plan.jobs;
|
||||
|
||||
import com.gamingmesh.jobs.Jobs;
|
||||
import com.gamingmesh.jobs.dao.JobsDAOData;
|
||||
import main.java.com.djrapitops.plan.data.additional.*;
|
||||
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* //TODO Class Javadoc Comment
|
||||
*
|
||||
* @author Rsl1122
|
||||
*/
|
||||
public class JobsData extends PluginData {
|
||||
|
||||
public JobsData() {
|
||||
super(ContainerSize.THIRD, "Jobs");
|
||||
super.setIconColor("brown");
|
||||
super.setPluginIcon("suitcase");
|
||||
}
|
||||
|
||||
@Override
|
||||
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) throws Exception {
|
||||
List<JobsDAOData> playersJobs = Jobs.getDBManager().getDB().getAllJobs(null, uuid);
|
||||
|
||||
TableContainer jobTable = new TableContainer(getWithIcon("Job", "suitcase"), getWithIcon("Level", "plus"));
|
||||
for (JobsDAOData job : playersJobs) {
|
||||
jobTable.addRow(job.getJobName(), job.getLevel());
|
||||
}
|
||||
if (playersJobs.isEmpty()) {
|
||||
jobTable.addRow("No Jobs");
|
||||
}
|
||||
inspectContainer.addTable("jobTable", jobTable);
|
||||
|
||||
return inspectContainer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) throws Exception {
|
||||
List<JobsDAOData> allJobs = Jobs.getDBManager().getDB().getAllJobs()
|
||||
.values().stream()
|
||||
.flatMap(Collection::stream)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
TableContainer jobTable = new TableContainer(getWithIcon("Job", "suitcase"), getWithIcon("Workers", "users"), getWithIcon("Total Level", "plus"), getWithIcon("Average Level", "plus"));
|
||||
|
||||
if (allJobs.isEmpty()) {
|
||||
jobTable.addRow("No Jobs with Workers");
|
||||
} else {
|
||||
Map<String, Integer> workers = new HashMap<>();
|
||||
Map<String, Long> totals = new HashMap<>();
|
||||
for (JobsDAOData data : allJobs) {
|
||||
String job = data.getJobName();
|
||||
int level = data.getLevel();
|
||||
workers.put(job, workers.getOrDefault(job, 0) + 1);
|
||||
totals.put(job, totals.getOrDefault(job, 0L) + level);
|
||||
}
|
||||
|
||||
List<String> order = new ArrayList<>(workers.keySet());
|
||||
Collections.sort(order);
|
||||
|
||||
for (String job : order) {
|
||||
int amountOfWorkers = workers.getOrDefault(job, 0);
|
||||
long totalLevel = totals.getOrDefault(job, 0L);
|
||||
jobTable.addRow(
|
||||
job,
|
||||
amountOfWorkers,
|
||||
FormatUtils.cutDecimals(MathUtils.averageDouble(totalLevel, amountOfWorkers)),
|
||||
totalLevel
|
||||
);
|
||||
}
|
||||
}
|
||||
analysisContainer.addTable("jobTable", jobTable);
|
||||
|
||||
|
||||
return analysisContainer;
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
package com.djrapitops.pluginbridge.plan.jobs;
|
||||
|
||||
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
||||
import com.djrapitops.pluginbridge.plan.Hook;
|
||||
import main.java.com.djrapitops.plan.api.API;
|
||||
import main.java.com.djrapitops.plan.data.additional.HookHandler;
|
||||
|
||||
/**
|
||||
* A Class responsible for hooking to Jobs and registering data sources.
|
||||
@ -26,8 +26,7 @@ public class JobsHook extends Hook {
|
||||
|
||||
public void hook() throws NoClassDefFoundError {
|
||||
if (enabled) {
|
||||
addPluginDataSource(new JobsInspectJobTable());
|
||||
addPluginDataSource(new JobsAnalysisJobTable());
|
||||
addPluginDataSource(new JobsData());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,55 +0,0 @@
|
||||
package com.djrapitops.pluginbridge.plan.jobs;
|
||||
|
||||
import com.gamingmesh.jobs.Jobs;
|
||||
import com.gamingmesh.jobs.dao.JobsDAOData;
|
||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* PluginData class for Jobs-plugin.
|
||||
* <p>
|
||||
* Registered to the plugin by JobsHook
|
||||
*
|
||||
* @author Rsl1122
|
||||
* @see JobsHook
|
||||
* @since 3.2.1
|
||||
*/
|
||||
public class JobsInspectJobTable extends PluginData {
|
||||
|
||||
/**
|
||||
* Class Constructor, sets the parameters of the PluginData object.
|
||||
*/
|
||||
public JobsInspectJobTable() {
|
||||
super("Jobs", "inspect_table");
|
||||
super.setAnalysisOnly(false);
|
||||
final String job = Html.FONT_AWESOME_ICON.parse("suitcase") + " Job";
|
||||
final String level = Html.FONT_AWESOME_ICON.parse("plus") + " Level";
|
||||
super.setPrefix(Html.TABLE_START_2.parse(job, level));
|
||||
super.setSuffix(Html.TABLE_END.parse());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
||||
try {
|
||||
List<JobsDAOData> playersJobs = Jobs.getDBManager().getDB().getAllJobs(null, uuid);
|
||||
if (!playersJobs.isEmpty()) {
|
||||
StringBuilder html = new StringBuilder();
|
||||
for (JobsDAOData job : playersJobs) {
|
||||
html.append(Html.TABLELINE_2.parse(job.getJobName(), job.getLevel()));
|
||||
}
|
||||
return parseContainer("", html.toString());
|
||||
}
|
||||
} catch (NullPointerException ignored) {
|
||||
}
|
||||
return parseContainer("", Html.TABLELINE_2.parse("No Jobs.", ""));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable getValue(UUID uuid) {
|
||||
return -1;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user