Добрый день!
Использую следующий код, но в результате создается два сервиса в корне, а нужно получить первый в корне и второй дочерним к первому.
Как это сделать?
Код:
final ServerContext context = ServerContext.get();
final InetServService servService = context.getService( InetServService.class, myConst.INET_MID );
final ResourceService resourceService = context.getService( ResourceService.class, myConst.INET_MID );
InetServ is1 = new InetServ();
is1.setTypeId(myConst.INET_SERVICE_DHCP);
is1.setContractId(cid);
is1.setDateFrom(new java.util.Date());
is1.setDeviceId(deviceId);
is1.setInterfaceId(devicePort);
is1.setStatus(is1.STATUS_ACTIVE);
is1.setDeviceState(is1.STATE_ENABLE);
is1.setLogin(client_ip);
// is.setTitle("111222333");
List<Integer> ipResourceCategoryIds = servService.ipResourceCategoryIds( is1.getDeviceId(), is1.getInterfaceId(), is1.getTypeId() );
List<IpResourceRange> rangeList = resourceService.freeIpResourceRangeList( ipResourceCategoryIds, null, is1.getDateFrom(), is1.getDateTo(), 1, 1 );
if( rangeList != null && rangeList.size() > 0 ) {
IpResourceRange range = rangeList.get(0);
is1.setIpResourceId( range.getIpResourceId() );
is1.setAddressFrom( range.getAddressFrom() );
}
InetServ is2 = new InetServ();
is2.setTypeId(myConst.INET_SERVICE_SUBIP);
is2.setContractId(cid);
is2.setDateFrom(new java.util.Date());
is2.setDeviceId(deviceId);
is2.setLogin(client_ip);
is2.setTitle(client_ip);
// Link services together
is2.setParentId(is1.getId());
List<InetServ> resourceChildren = is1.getChildren();
if(resourceChildren == null)
{
resourceChildren = new ArrayList<InetServ>();
resourceChildren.add(is2);
is1.setChildren(resourceChildren);
}
else
{
resourceChildren.add(is2);
is1.setChildren(resourceChildren);
}
List<InetServOption> optionList = new ArrayList<InetServOption>();
servService.inetServUpdate( is1, optionList, false, false, 0 );
List<InetServOption> optionList2 = new ArrayList<InetServOption>();
servService.inetServUpdate( is2, optionList2, false, false, 0 );