From 055d34471edd6914046cc43dd37dfe95d2565100 Mon Sep 17 00:00:00 2001 From: "adel.kalimullin" Date: Wed, 3 Dec 2025 17:17:30 +0300 Subject: [PATCH] SUPPORT-9634: ip sort --- .../service/IpFilterableGridService.java | 40 +++++++++++++ .../component/service/IpGridV2Service.java | 41 +++++++++++++ .../component/util/GridUtils.java | 34 +++++++++++ .../service/AccountFetchService.java | 21 ++++--- .../util/IpAddressUtils.java | 28 +++++++++ .../Обработка заявки на добавление пользователя.page | 57 +++++++++++-------- .../Обработка заявки на изменение пользователя.page | 36 ++++++++++-- .../Создание заявки на добавление пользователя.page | 6 +- .../Создать заявку на изменение.page | 6 +- 9 files changed, 231 insertions(+), 38 deletions(-) create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java create mode 100644 backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java new file mode 100644 index 00000000..954a4cc5 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpFilterableGridService.java @@ -0,0 +1,40 @@ +package ru.micord.ervu.account_applications.component.service; + + +import component.complex.FilterableByPKGridService; +import model.Filter; +import model.grid.GridRows; +import model.grid.SortInfo; +import ru.micord.ervu.account_applications.component.util.GridUtils; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + +/** + * @author Adel Kalimullin + */ +public class IpFilterableGridService extends FilterableByPKGridService { + private static final String IP_FIELD = "ip_directory$ip_address"; + + @Override + public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) { + GridRows gridRows = super.loadData(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } + + @Override + public GridRows loadDataWithRowCount(Integer offset, Integer limit, Filter[] filters, + SortInfo[] sortInfos) { + GridRows gridRows = super.loadDataWithRowCount(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } +} \ No newline at end of file diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java new file mode 100644 index 00000000..e0d3bb81 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/IpGridV2Service.java @@ -0,0 +1,41 @@ +package ru.micord.ervu.account_applications.component.service; + + +import model.Filter; +import model.grid.GridRows; +import model.grid.SortInfo; +import ru.micord.ervu.account_applications.component.util.GridUtils; +import service.GridV2ServiceImpl; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + + +/** + * @author Adel Kalimullin + */ +public class IpGridV2Service extends GridV2ServiceImpl { + private static final String IP_FIELD = "link_user_application_ip_address$ip_address"; + + @Override + public GridRows loadData(Integer offset, Integer limit, Filter[] filters, SortInfo[] sortInfos) { + GridRows gridRows = super.loadData(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } + + @Override + public GridRows loadDataWithRowCount(Integer offset, Integer limit, Filter[] filters, + SortInfo[] sortInfos) { + GridRows gridRows = super.loadDataWithRowCount(offset, limit, filters, null); + SortOrder sortOrder = (sortInfos != null && sortInfos.length > 0) + ? sortInfos[0].getSortOrder() + : SortOrder.ASC; + + GridUtils.sortByIp(gridRows, sortOrder, IP_FIELD); + return gridRows; + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java new file mode 100644 index 00000000..d11937be --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/util/GridUtils.java @@ -0,0 +1,34 @@ +package ru.micord.ervu.account_applications.component.util; + +import java.util.Arrays; + +import model.grid.GridRow; +import model.grid.GridRows; +import ru.micord.ervu.account_applications.util.IpAddressUtils; + +import ru.cg.webbpm.modules.database.api.dao.option.SortOrder; + +/** + * @author Adel Kalimullin + */ +public final class GridUtils { + + private GridUtils() {} + + public static void sortByIp(GridRows gridRows, SortOrder sortOrder, String columnName) { + if (gridRows == null || gridRows.getRows() == null) { + return; + } + + GridRow[] rows = gridRows.getRows(); + + Arrays.sort(rows, (row1, row2) -> { + String ip1 = (String) row1.get(columnName); + String ip2 = (String) row2.get(columnName); + + int comparison = IpAddressUtils.compareIpAddresses(ip1, ip2); + + return sortOrder == SortOrder.DESC ? -comparison : comparison; + }); + } +} diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java b/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java index f9a8b0c7..899b3958 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/service/AccountFetchService.java @@ -1,11 +1,11 @@ package ru.micord.ervu.account_applications.service; import java.net.URI; -import java.util.Map; -import java.util.List; -import java.util.Set; -import java.util.HashMap; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -30,6 +30,7 @@ import ru.micord.ervu.account_applications.component.model.dto.SearchRequest; import ru.micord.ervu.account_applications.component.model.dto.SearchResponse; import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.service.constant.PathConstant; +import ru.micord.ervu.account_applications.util.IpAddressUtils; import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef; @@ -196,13 +197,19 @@ public class AccountFetchService implements EntityFetchService { } private GridRows convertIpAddressesToGridRows(List ipList) { + List sortedList = new ArrayList<>(ipList); + sortedList.sort((ip1, ip2) -> { + String ip1Str = ip1 != null ? ip1.toString() : ""; + String ip2Str = ip2 != null ? ip2.toString() : ""; + return IpAddressUtils.compareIpAddresses(ip1Str, ip2Str); + }); + List rows = new ArrayList<>(); - int i = 0; - for (Object ip : ipList) { + for (Object ip : sortedList) { GridRow row = new GridRow(); row.put("row_uid", ip); row.put( - editableGridColumnRef != null ? editableGridColumnRef.getObjectId() : FIELD_IP_ADDRESSES, + FIELD_IP_ADDRESSES, ip ); rows.add(row); diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java b/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java new file mode 100644 index 00000000..7232eb44 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu/account_applications/util/IpAddressUtils.java @@ -0,0 +1,28 @@ +package ru.micord.ervu.account_applications.util; + +/** + * @author Adel Kalimullin + */ +public final class IpAddressUtils { + + private IpAddressUtils() {} + + public static int compareIpAddresses(String ip1, String ip2) { + long ip1Long = ipToLong(ip1); + long ip2Long = ipToLong(ip2); + return Long.compare(ip1Long, ip2Long); + } + + private static long ipToLong(String ip) { + if (ip == null || ip.isEmpty() || !ip.matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}")) { + return 0L; + } + + String[] parts = ip.split("\\."); + long result = 0; + for (int i = 0; i < 4; i++) { + result = result * 256 + Integer.parseInt(parts[i]); + } + return result; + } +} diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page index cf3d3ea5..c3347978 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на добавление пользователя.page @@ -2011,7 +2011,6 @@ eaaf9ba1-feca-4c41-9944-e321eee27a58 Hbox true - false false @@ -3057,7 +3056,6 @@ 4b6acb44-bdc9-4015-872b-238d45ce643f Vbox_3 true - false false @@ -3438,18 +3436,48 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":380.0,"y":227.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + + IpGridV2Service + ru.micord.ervu.account_applications.component.service + + + + + + + + +columnSorts + + + + + + field + + {"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"} + + + + sortOrder + + "ASC" + + + + + - GridFormField @@ -4534,27 +4562,6 @@ false true - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - e200392b-c9e6-4197-8fb4-3255508f58d3 - AC_processor - false - true - - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - 73a8ad00-8906-4677-a7b6-04942a3e9679 - AC_creator - false - true - - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - 86b06492-e4d1-45f5-97d0-cde7209d1add - AC_creator - false - true - 133ca212-09a6-413a-ac66-e2f6ce188f1f 9e772048-b43f-42f1-a370-2519dd4f6ad7 diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page index 7f3f8a7a..4c88e5b7 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Обработка заявки на изменение пользователя.page @@ -941,7 +941,6 @@ d4485ba1-6ebe-4745-b661-8685332cfc22 Tab container true - false false @@ -1604,7 +1603,6 @@ 4b6acb44-bdc9-4015-872b-238d45ce643f Vbox_3 true - false false @@ -1662,18 +1660,48 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":249.0,"y":275.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"link_user_application_ip_address":{"tableName":"link_user_application_ip_address","schemaName":"public","x":387.0,"y":254.0,"alias":"link_user_application_ip_address","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0} + + IpGridV2Service + ru.micord.ervu.account_applications.component.service + + + + + + + + + columnSorts + + + + + + field + +{"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"} + + + + sortOrder + +"ASC" + + + + + - GridFormField diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page index 34b94f05..e4a97c2a 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создание заявки на добавление пользователя.page @@ -3329,7 +3329,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":334.0,"y":298.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":141.0,"y":298.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":490.0,"y":303.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} @@ -3342,6 +3342,10 @@ + + IpFilterableGridService + ru.micord.ervu.account_applications.component.service + diff --git a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page index 75c341e9..8bf2d7c3 100644 --- a/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page +++ b/resources/src/main/resources/business-model/Список заявок на пользователя/Создать заявку на изменение.page @@ -6306,7 +6306,7 @@ graph - {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":275.0,"y":164.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":88.0,"y":242.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":455.0,"y":191.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} + {"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"1":{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"2":{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"recruitment_ip":{"tableName":"recruitment_ip","schemaName":"public","x":421.0,"y":280.0,"alias":"recruitment_ip","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"recruitment":{"tableName":"recruitment","schemaName":"public","x":235.0,"y":283.0,"alias":"recruitment","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"},"ip_directory":{"tableName":"ip_directory","schemaName":"public","x":588.0,"y":283.0,"alias":"ip_directory","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null,{"refOnEntityName":"ip_directory","refToEntityName":"recruitment_ip","refToColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"ip_address"}],"refOnColumns":[{"schema":"public","table":"ip_directory","entity":"ip_directory","name":"ip_address"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}},null],[null,null,{"refOnEntityName":"recruitment_ip","refToEntityName":"recruitment","refToColumns":[{"schema":"public","table":"recruitment","entity":"recruitment","name":"idm_id"}],"refOnColumns":[{"schema":"public","table":"recruitment_ip","entity":"recruitment_ip","name":"recruitment_id"}],"required":false,"cyclic":false,"conditionGroup":{"operator":"AND","conditions":[],"groups":[]}}],[null,null,null]],"mainNodeIndex":0} @@ -6319,6 +6319,10 @@ + + IpFilterableGridService + ru.micord.ervu.account_applications.component.service +