Я пытаюсь реализовать фильтрацию по списку сотрудниковDTO. У меня есть список SearchCritera, который я хочу наложить на список для фильтрации. Вот структуры классов.
[
{
"key": "education.degree",
// would reside in details.education.degree where education is an array of {degree, city}
"value": "BBA",
"condition": "EQUALS"
},
{
"key": "education.degree",
"value": "MBAA",
"condition": "EQUALS",
"operation": "AND"
},
{
"key": "education.degree",
"value": "BA",
"condition": "EQUALS",
"operation": "OR"
},
{
"key": "middle_name",
"value": "Anne",
"condition": "EQUALS",
"operation": "NOT"
}
]
Это то, что я реализовал для фильтрации списка сотрудников. Но я получаю неточные результаты, основанные на этом методе фильтрации. Должно быть, я где-то ошибаюсь.
Я пытаюсь реализовать фильтрацию по списку сотрудниковDTO. У меня есть список SearchCritera, который я хочу наложить на список для фильтрации. Вот структуры классов. [code]public class EmployeeDTO { private String id; private String employeeId; private String email; private String phone; private String firstName; private String lastName; private String middleName; private LocalDate dob; private Map details; // for storing dynamic nested data }
public class SearchCriteria { private String key; private String value; private SearchCondition condition; private SearchOperation operation; }
public enum SearchOperation { AND, OR, NOT } [/code] Вы можете ожидать, что список SearchCriteria будет чем-то вроде этого: [code][ { "key": "education.degree", // would reside in details.education.degree where education is an array of {degree, city} "value": "BBA", "condition": "EQUALS" }, { "key": "education.degree", "value": "MBAA", "condition": "EQUALS", "operation": "AND" }, { "key": "education.degree", "value": "BA", "condition": "EQUALS", "operation": "OR" }, { "key": "middle_name", "value": "Anne", "condition": "EQUALS", "operation": "NOT" } ] [/code] Это то, что я реализовал для фильтрации списка сотрудников. Но я получаю неточные результаты, основанные на этом методе фильтрации. Должно быть, я где-то ошибаюсь. [code]public class EmployeeFilter { private static final Logger log = LoggerFactory.getLogger(EmployeeFilter.class); private static final String OUTPUT_1 = "output_1"; private static final String OUTPUT_2 = "output_2";
public Map processNode(List employees, List searchCriteria) { Map filteredEmployees = filterEmployees(employees, searchCriteria);
JSONObject validEmployeesJson = new JSONObject(); validEmployeesJson.put(Constants.EMPLOYEES, filteredEmployees.get("valid"));
JSONObject invalidEmployeesJson = new JSONObject(); invalidEmployeesJson.put(Constants.EMPLOYEES, filteredEmployees.get("invalid"));