Made filters more error-resilient for the future

This commit is contained in:
Risto Lahtela 2021-03-21 13:43:41 +02:00
parent ac9ca5949e
commit 8e0d833f3f

View File

@ -34,6 +34,8 @@ import com.djrapitops.plan.storage.database.queries.filter.QueryFilters;
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.TPSQueries; import com.djrapitops.plan.storage.database.queries.objects.TPSQueries;
import com.djrapitops.plan.utilities.java.Lists; import com.djrapitops.plan.utilities.java.Lists;
import com.djrapitops.plan.utilities.logging.ErrorContext;
import com.djrapitops.plan.utilities.logging.ErrorLogger;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import javax.inject.Inject; import javax.inject.Inject;
@ -50,6 +52,7 @@ public class FiltersJSONResolver implements Resolver {
private final QueryFilters filters; private final QueryFilters filters;
private final Graphs graphs; private final Graphs graphs;
private final Formatters formatters; private final Formatters formatters;
private final ErrorLogger errorLogger;
@Inject @Inject
public FiltersJSONResolver( public FiltersJSONResolver(
@ -57,13 +60,15 @@ public class FiltersJSONResolver implements Resolver {
DBSystem dbSystem, DBSystem dbSystem,
QueryFilters filters, QueryFilters filters,
Graphs graphs, Graphs graphs,
Formatters formatters Formatters formatters,
ErrorLogger errorLogger
) { ) {
this.serverInfo = serverInfo; this.serverInfo = serverInfo;
this.dbSystem = dbSystem; this.dbSystem = dbSystem;
this.filters = filters; this.filters = filters;
this.graphs = graphs; this.graphs = graphs;
this.formatters = formatters; this.formatters = formatters;
this.errorLogger = errorLogger;
} }
@Override @Override
@ -106,7 +111,7 @@ public class FiltersJSONResolver implements Resolver {
/** /**
* JSON serialization class. * JSON serialization class.
*/ */
static class FilterResponseJSON { class FilterResponseJSON {
final List<FilterJSON> filters; final List<FilterJSON> filters;
final ViewJSON view; final ViewJSON view;
final List<Double[]> viewPoints; final List<Double[]> viewPoints;
@ -115,7 +120,14 @@ public class FiltersJSONResolver implements Resolver {
this.viewPoints = viewPoints; this.viewPoints = viewPoints;
this.filters = new ArrayList<>(); this.filters = new ArrayList<>();
for (Map.Entry<String, Filter> entry : filtersByKind.entrySet()) { for (Map.Entry<String, Filter> entry : filtersByKind.entrySet()) {
filters.add(new FilterJSON(entry.getKey(), entry.getValue())); try {
filters.add(new FilterJSON(entry.getKey(), entry.getValue()));
} catch (Exception e) {
errorLogger.error(e, ErrorContext.builder()
.whatToDo("Report this, filter '" + entry.getKey() + "' has implementation error.")
.related(entry.getValue())
.build());
}
} }
Collections.sort(filters); Collections.sort(filters);
this.view = view; this.view = view;