I do not really get what the last two requirements want, It seems to me everything is okay.
package com.codegym.task.task23.task2304;
import javax.naming.Name;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.UnaryOperator;
/*
Inner 3
*/
public class Solution {
private List<Task> tasks;
private List<String> names;
private DbDataProvider taskDataProvider = new TaskDataProvider();
private DbDataProvider nameDataProvider = new NameDataProvider();
public void refresh() {
Map taskCriteria = MockView.getFakeTaskCriteria();
taskDataProvider.refreshAllData(taskCriteria);
Map nameCriteria = MockView.getFakeNameCriteria();
nameDataProvider.refreshAllData(nameCriteria);
}
private class TaskDataProvider implements DbDataProvider<Task> {
@Override
public void refreshAllData(Map criteria) {
Solution.this.tasks.addAll(Objects.requireNonNull(MockDB.getFakeTasks(criteria)));
}
}
private class NameDataProvider implements DbDataProvider<String> {
@Override
public void refreshAllData(Map criteria) {
Solution.this.names.addAll(Objects.requireNonNull(MockDB.getFakeNames(criteria)));
}
}
private interface DbDataProvider<T> {
void refreshAllData(Map criteria);
}
class Task {
}
public static void main(String[] args) {
}
}