forum.bitel.ru
http://forum.bitel.ru/

Как динамическим кодом создать дочерний сервис?
http://forum.bitel.ru/viewtopic.php?f=44&t=12043
Страница 1 из 1

Автор:  Shadance [ 26 окт 2016, 20:50 ]
Заголовок сообщения:  Как динамическим кодом создать дочерний сервис?

Добрый день!
Использую следующий код, но в результате создается два сервиса в корне, а нужно получить первый в корне и второй дочерним к первому.
Как это сделать?

Код:
         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 );

Автор:  barguzin2 [ 27 окт 2016, 08:53 ]
Заголовок сообщения:  Re: Как динамическим кодом создать дочерний сервис?

вот это
Код:
is2.setParentId(is1.getId());

нужно вызывать ПОСЛЕ
Код:
servService.inetServUpdate( is1, optionList, false, false, 0 );

думаю, понятно, почему.

Автор:  Shadance [ 29 окт 2016, 11:46 ]
Заголовок сообщения:  Re: Как динамическим кодом создать дочерний сервис?

barguzin2 писал(а):
вот это
Код:
is2.setParentId(is1.getId());

нужно вызывать ПОСЛЕ
Код:
servService.inetServUpdate( is1, optionList, false, false, 0 );

думаю, понятно, почему.


Ок, спасибо! помогло.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/