SUPPORT-9634: ip sort

This commit is contained in:
adel.kalimullin 2025-12-03 17:17:30 +03:00 committed by adel.ka
parent 2fe8777911
commit 055d34471e
9 changed files with 231 additions and 38 deletions

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
});
}
}

View file

@ -1,11 +1,11 @@
package ru.micord.ervu.account_applications.service; package ru.micord.ervu.account_applications.service;
import java.net.URI; 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.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.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; 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.component.model.dto.SearchResponse;
import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.security.context.SecurityContext;
import ru.micord.ervu.account_applications.service.constant.PathConstant; 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; import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef;
@ -196,13 +197,19 @@ public class AccountFetchService implements EntityFetchService<Account> {
} }
private GridRows convertIpAddressesToGridRows(List<?> ipList) { 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<GridRow> rows = new ArrayList<>(); List<GridRow> rows = new ArrayList<>();
int i = 0; for (Object ip : sortedList) {
for (Object ip : ipList) {
GridRow row = new GridRow(); GridRow row = new GridRow();
row.put("row_uid", ip); row.put("row_uid", ip);
row.put( row.put(
editableGridColumnRef != null ? editableGridColumnRef.getObjectId() : FIELD_IP_ADDRESSES, FIELD_IP_ADDRESSES,
ip ip
); );
rows.add(row); rows.add(row);

View file

@ -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;
}
}

View file

@ -2011,7 +2011,6 @@
<componentRootId>eaaf9ba1-feca-4c41-9944-e321eee27a58</componentRootId> <componentRootId>eaaf9ba1-feca-4c41-9944-e321eee27a58</componentRootId>
<name>Hbox</name> <name>Hbox</name>
<container>true</container> <container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered> <childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/> <scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"/>
<scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/> <scripts id="b6068710-0f31-48ec-8e03-c0c1480a40c0"/>
@ -3057,7 +3056,6 @@
<componentRootId>4b6acb44-bdc9-4015-872b-238d45ce643f</componentRootId> <componentRootId>4b6acb44-bdc9-4015-872b-238d45ce643f</componentRootId>
<name>Vbox_3</name> <name>Vbox_3</name>
<container>true</container> <container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered> <childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"> <scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties> <properties>
@ -3438,18 +3436,48 @@
<entry> <entry>
<key>graph</key> <key>graph</key>
<value> <value>
<simple>{"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}</simple> <simple>{"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}</simple>
</value> </value>
</entry> </entry>
</complex> </complex>
</value> </value>
</entry> </entry>
</complex> </complex>
<implRef type="JAVA">
<className>IpGridV2Service</className>
<packageName>ru.micord.ervu.account_applications.component.service</packageName>
</implRef>
</value>
</entry>
</properties>
</scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6">
<properties>
<entry>
<key>columnSorts</key>
<value>
<item id="e296c9a4-8516-43d1-ae17-95529077dd19" removed="false">
<value>
<complex>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"}</simple>
</value>
</entry>
<entry>
<key>sortOrder</key>
<value>
<simple>"ASC"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value> </value>
</entry> </entry>
</properties> </properties>
</scripts> </scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6"/>
<scripts id="3f018695-895b-463b-9292-37d976a933b0"> <scripts id="3f018695-895b-463b-9292-37d976a933b0">
<classRef type="TS"> <classRef type="TS">
<className>GridFormField</className> <className>GridFormField</className>
@ -4534,27 +4562,6 @@
<container>false</container> <container>false</container>
<removed>true</removed> <removed>true</removed>
</children> </children>
<children id="e200392b-c9e6-4197-8fb4-3255508f58d3">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>e200392b-c9e6-4197-8fb4-3255508f58d3</componentRootId>
<name>AC_processor</name>
<container>false</container>
<removed>true</removed>
</children>
<children id="73a8ad00-8906-4677-a7b6-04942a3e9679">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>73a8ad00-8906-4677-a7b6-04942a3e9679</componentRootId>
<name>AC_creator</name>
<container>false</container>
<removed>true</removed>
</children>
<children id="86b06492-e4d1-45f5-97d0-cde7209d1add">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>86b06492-e4d1-45f5-97d0-cde7209d1add</componentRootId>
<name>AC_creator</name>
<container>false</container>
<removed>true</removed>
</children>
<children id="9e772048-b43f-42f1-a370-2519dd4f6ad7"> <children id="9e772048-b43f-42f1-a370-2519dd4f6ad7">
<prototypeId>133ca212-09a6-413a-ac66-e2f6ce188f1f</prototypeId> <prototypeId>133ca212-09a6-413a-ac66-e2f6ce188f1f</prototypeId>
<componentRootId>9e772048-b43f-42f1-a370-2519dd4f6ad7</componentRootId> <componentRootId>9e772048-b43f-42f1-a370-2519dd4f6ad7</componentRootId>

View file

@ -941,7 +941,6 @@
<componentRootId>d4485ba1-6ebe-4745-b661-8685332cfc22</componentRootId> <componentRootId>d4485ba1-6ebe-4745-b661-8685332cfc22</componentRootId>
<name>Tab container</name> <name>Tab container</name>
<container>true</container> <container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered> <childrenReordered>false</childrenReordered>
<scripts id="1c20b23e-f269-42ff-aa6f-ec2e7ff152cf"/> <scripts id="1c20b23e-f269-42ff-aa6f-ec2e7ff152cf"/>
<scripts id="aba9b3cf-fe50-4149-84cd-ff7b6ed4e99d"/> <scripts id="aba9b3cf-fe50-4149-84cd-ff7b6ed4e99d"/>
@ -1604,7 +1603,6 @@
<componentRootId>4b6acb44-bdc9-4015-872b-238d45ce643f</componentRootId> <componentRootId>4b6acb44-bdc9-4015-872b-238d45ce643f</componentRootId>
<name>Vbox_3</name> <name>Vbox_3</name>
<container>true</container> <container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered> <childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f"> <scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties> <properties>
@ -1662,18 +1660,48 @@
<entry> <entry>
<key>graph</key> <key>graph</key>
<value> <value>
<simple>{"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}</simple> <simple>{"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}</simple>
</value> </value>
</entry> </entry>
</complex> </complex>
</value> </value>
</entry> </entry>
</complex> </complex>
<implRef type="JAVA">
<className>IpGridV2Service</className>
<packageName>ru.micord.ervu.account_applications.component.service</packageName>
</implRef>
</value>
</entry>
</properties>
</scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6">
<properties>
<entry>
<key>columnSorts</key>
<value>
<item id="76b957b4-d215-4691-8bec-95d3b6403e77" removed="false">
<value>
<complex>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"link_user_application_ip_address","entity":"link_user_application_ip_address","name":"ip_address"}</simple>
</value>
</entry>
<entry>
<key>sortOrder</key>
<value>
<simple>"ASC"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value> </value>
</entry> </entry>
</properties> </properties>
</scripts> </scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6"/>
<scripts id="91768a69-9949-4346-a63d-2df11c486dac"> <scripts id="91768a69-9949-4346-a63d-2df11c486dac">
<classRef type="TS"> <classRef type="TS">
<className>GridFormField</className> <className>GridFormField</className>

View file

@ -3329,7 +3329,7 @@
<entry> <entry>
<key>graph</key> <key>graph</key>
<value> <value>
<simple>{"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}</simple> <simple>{"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}</simple>
</value> </value>
</entry> </entry>
<entry> <entry>
@ -3342,6 +3342,10 @@
</value> </value>
</entry> </entry>
</complex> </complex>
<implRef type="JAVA">
<className>IpFilterableGridService</className>
<packageName>ru.micord.ervu.account_applications.component.service</packageName>
</implRef>
</value> </value>
</entry> </entry>
</properties> </properties>

View file

@ -6306,7 +6306,7 @@
<entry> <entry>
<key>graph</key> <key>graph</key>
<value> <value>
<simple>{"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}</simple> <simple>{"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}</simple>
</value> </value>
</entry> </entry>
<entry> <entry>
@ -6319,6 +6319,10 @@
</value> </value>
</entry> </entry>
</complex> </complex>
<implRef type="JAVA">
<className>IpFilterableGridService</className>
<packageName>ru.micord.ervu.account_applications.component.service</packageName>
</implRef>
</value> </value>
</entry> </entry>
</properties> </properties>