Я пытаюсь найти лучший подход для отображения комбинированных таблиц на основе логики соответствия и критериев поиска ввода.
Вот ситуация:
У нас есть таблица клиентов, хранящаяся локально. Области интересов: ssn, имя, фамилия и дата рождения.
У нас также есть веб-сервис, который предоставляет ту же информацию. Некоторые клиенты из веб-службы такие же, как локальный файл, некоторые другие.
SSN также не требуется.
Мне нужно объединить эти данные для просмотра на дисплее Grails.
Критериями комбинации являются: 1) совпадение по SSN. 2) Для любых оставшихся записей, точное совпадение по имени, фамилии и дате рождения.
На данный момент нет необходимости в soundex или приблизительной логике.
Похоже, что я должен сделать, это извлечь все записи из обоих входов в одну коллекцию, каким-то образом сделать ее набором для SSN. Затем уберите пустую ссн.
Это будет обрабатывать сопоставление SSN (как только я выясню, как сделать это набором).
Затем мне нужно вернуться к исходным двум исходным источникам (кэшированным в коллекции для предотвращения повторного чтения) и удалить все записи, которые существуют в наборе SSN, полученном ранее.
Затем создайте еще один набор на основе имени, фамилии и даты рождения - еще раз, если я смогу выяснить, как сделать набор.
Затем объедините две производные коллекции в одну коллекцию. Коллекция должна быть отсортирована для демонстрации.
Имеет ли это смысл? Я думаю, что критерии поиска ограничат количество извлекаемых записей, поэтому я могу сделать это в памяти.
По сути, я ищу некоторые идеи о том, как код Grails будет выглядеть для достижения вышеуказанной логики (при условии, что это хороший подход). Локальная таблица клиентов - это объект домена, а то, что я получаю от WS, - это список объектов в массиве.
Кроме того, мне не совсем понятно, как будут затронуты maxresults, firstResult и порядок, используемые для отображения. Я думаю, что мне нужно сначала прочитать все записи, которые соответствуют критериям поиска, выполнить объединение и отобразить из производной коллекции.