forum.bitel.ru http://forum.bitel.ru/ |
|
данные из сервиса Inet в текстовое поле договора http://forum.bitel.ru/viewtopic.php?f=19&t=12072 |
Страница 1 из 1 |
Автор: | Dipress [ 08 ноя 2016, 12:16 ] |
Заголовок сообщения: | данные из сервиса Inet в текстовое поле договора |
Добрый день. Подскажите как сделать. Есть договор, в нем экземпляр модуля Inet, в котором заведем сервис. Необходимо из сервиса каким-то образом извлечь IP адрес и добавить его в текстовое поле в самом договоре. Т.е. при добавлении сервиса в экземпляре Inet, указанный IP адрес должен автоматически добавляться в текстовое поле договора. |
Автор: | Dipress [ 08 ноя 2016, 12:19 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Забыл указать что биллинг 6.2. |
Автор: | Phricker [ 08 ноя 2016, 13:29 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Как то так. Код: package ru.ellcom.bgbilling.scripts.inet; import bitel.billing.common.IPUtils; import bitel.billing.server.contract.bean.ContractParameterManager; import org.apache.log4j.Logger; import ru.bitel.bgbilling.kernel.module.common.bean.User; import ru.bitel.bgbilling.kernel.script.server.dev.EventScript; import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase; import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ; import ru.bitel.bgbilling.modules.inet.api.server.event.InetServChangingEvent; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import ru.bitel.oss.systems.inventory.resource.common.bean.IpResourceSubscription; import ru.bitel.oss.systems.inventory.resource.server.bean.IpResourceSubscriptionDao; import java.net.InetAddress; import java.sql.Connection; public class PasteIPToContractParam extends EventScriptBase<InetServChangingEvent> implements EventScript<InetServChangingEvent> { private static final Logger logger = Logger.getLogger(PasteIPToContractParam.class); @Override public void onEvent(InetServChangingEvent event, Setup setup, ConnectionSet connectionSet) throws Exception { Connection con = connectionSet.getConnection(); int INET_MODULE_ID = 12; int TEXT_PARAM_ID = 1; ContractParameterManager cpm = new ContractParameterManager(con); InetServ service = event.getInetServ(); IpResourceSubscriptionDao ipResourceSubscriptionDao = new IpResourceSubscriptionDao(con, INET_MODULE_ID); IpResourceSubscription ip = ipResourceSubscriptionDao.get(service.getIpResourceSubscriptionId()); byte[] ipAddr = ip.getAddressFrom(); cpm.updateStringParam(event.getContractId(),TEXT_PARAM_ID, InetAddress.getByAddress(ipAddr).toString(), User.USER_SERVER); } } Вешается на событие "Изменяется сервис договора" ![]() |
Автор: | Phricker [ 08 ноя 2016, 13:30 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
![]() |
Автор: | Phricker [ 08 ноя 2016, 13:34 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Ну и да. Выдает NPE (java.lang.NullPointerException), если не указан IP адрес ![]() Но я и не претендовал на законченный скрипт |
Автор: | barguzin2 [ 08 ноя 2016, 13:38 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
А обязательно лезть в подписки на ресурсы? Вроде адрес в самом сервисе фигурирует. И еще маленькое дополнение: Код: String ipStr = InetAddress.getByAddress(serv.getAddressFrom()).getHostAddress(); Вот так адрес будет без начального слэша. |
Автор: | Dipress [ 08 ноя 2016, 13:48 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Phricker писал(а): Ну и да. Выдает NPE (java.lang.NullPointerException), если не указан IP адрес ![]() Но я и не претендовал на законченный скрипт А как можно обработать подобное исключение? |
Автор: | Phricker [ 08 ноя 2016, 13:49 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
barguzin2 писал(а): А обязательно лезть в подписки на ресурсы? Вроде адрес в самом сервисе фигурирует. Тьфу точно, прошляпил его в IDE. Вот что значит кофе с утра не выпить, сижу туплю. Значит будет выглядеть как то так. Код: @Override
public void onEvent(InetServChangingEvent event, Setup setup, ConnectionSet connectionSet) throws Exception { Connection con = connectionSet.getConnection(); int INET_MODULE_ID = 12; int TEXT_PARAM_ID = 1; ContractParameterManager cpm = new ContractParameterManager(con); InetServ service = event.getInetServ(); byte[] ipAddr = service.getAddressFrom(); cpm.updateStringParam(event.getContractId(),TEXT_PARAM_ID, InetAddress.getByAddress(ipAddr).getHostAddress(), User.USER_SERVER); } |
Автор: | Dipress [ 08 ноя 2016, 13:57 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Я правильно понимаю что на java.lang.NullPointerException надо использовать проверку на null Вот эту переменную ? InetServ service = event.getInetServ(); |
Автор: | Phricker [ 08 ноя 2016, 13:58 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Не. По идее проверять надо ipAddr |
Автор: | Dipress [ 09 ноя 2016, 16:30 ] |
Заголовок сообщения: | Re: данные из сервиса Inet в текстовое поле договора |
Благодарю за помощь. В целом все работает как и хотелось. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |