BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 08:53

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 10:12 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Добрый день. Сегодня в канале джабера обсуждалась проблемка одна. В итоге-то все решилось, но мне кажется не самым лучшим способом. Хочется услышать комментарии разработчиков. Тем более самому интересно ввиду скорого перехода на 5.2

Код:
package contract.module.voiceip;

import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import ru.bitel.bgbilling.kernel.event.events.ContractParamChangedEvent;
import bitel.billing.server.contract.bean.*;

public class login
   extends EventScriptBase
{
   @Override
   public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {
      int cid = event1.getContractId();
      int pid = event1.getParamId();

      print(cid);
      print(pid);
   }
}


так не работало, естественно, потому что getParamId() определен у ContractParamChangedEvent.
сделать вызов
Код:
public void onEvent( ContractParamChangedEvent event1, Setup setup2, ConnectionSet connectionSet3 )

тоже не получается, потому что компилятор ругается что мы не переопределили абстрактный метод.
в итоге пришлось сделать приведение типов
Код:
ContractParamChangedEvent event2=(ContractParamChangedEvent)event1

Но насколько я помню теорию - так делать не сильно хорошо :)

Или пофигу? Если нет, то как лучше сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 10:46 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Код:

import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import ru.bitel.bgbilling.kernel.event.events.ContractParamChangedEvent;
import bitel.billing.server.contract.bean.*;

public class login
   extends EventScriptBase<ContractParamChangedEvent>
{
   @Override
   public void onEvent( ContractParamChangedEvent event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {
      int cid = event1.getContractId();
      int pid = event1.getParamId();

      print(cid);
      print(pid);
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 10:46 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
и называть класс с маленькой буквы не принято в java . Это запутывает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 11:04 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Приводить можно, а иногда и нужно. Но если есть возможность сразу класс типизировать, то так, конечно, будет правильнее и удобнее. Вот в биншеле, очевидно, выбора особо нет.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 11:23 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
stark писал(а):
и называть класс с маленькой буквы не принято в java . Это запутывает.

Ну да, странно что у человека на это компилятор не ругался.

PS А если я захочу на два события один скрипт повесить? Экстендить то можно только 1 класс, это не интерфейс, которых несколько можно воплощать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 11:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Компилятор и не должен ругаться.
Экстендить нужно один класс, он один и тот же. Как вы собираетесь на 2 события 1 скрипт вешать таким образом?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 11:45 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
dimOn писал(а):
Компилятор и не должен ругаться.
Экстендить нужно один класс, он один и тот же. Как вы собираетесь на 2 события 1 скрипт вешать таким образом?

Я про типизацию
Код:
extends EventScriptBase<ContractParamChangedEvent>


Комплиятор ругается. Но вроде только когда внутри Login.java идет public class login { } =)


ps а если метод onEvent() перегрузить?
Должно же будет заработать?:) Или какие-то свои минусы будут?
Код:
@Override
   public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {
    //do nothing;
   }


   public void onEvent( ContractParamChangedEvent event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {
      int cid = event1.getContractId();
      int pid = event1.getParamId();

      print(cid);
      print(pid);
   }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 13:22 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Феанор писал(а):

PS А если я захочу на два события один скрипт повесить? Экстендить то можно только 1 класс, это не интерфейс, которых несколько можно воплощать...


Тогда делаете метод с Event и в нем код. Если нужно, то преобразовании типов делайте. И если код выполнятся по разному должен , то проверка
Код:
if ( event instanceof  ContractParamChangedEvent )
{
}
else  if ( event instanceof  BillCreatedEvent )
{
}




Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 25 июн 2012, 14:52 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
stark писал(а):
Феанор писал(а):

PS А если я захочу на два события один скрипт повесить? Экстендить то можно только 1 класс, это не интерфейс, которых несколько можно воплощать...


Тогда делаете метод с Event и в нем код. Если нужно, то преобразовании типов делайте. И если код выполнятся по разному должен , то проверка
Код:
if ( event instanceof  ContractParamChangedEvent )
{
}
else  if ( event instanceof  BillCreatedEvent )
{
}




ну я так и предполагал вобщем то.. Спасибо )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 26 июн 2012, 05:28 
Не в сети
Клиент

Зарегистрирован: 19 май 2011, 19:29
Сообщения: 42
Карма: 0
Мб такое в wiki занести? Наверно не я один на такие грабли попаду...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 5.2 Скрипт события
СообщениеДобавлено: 26 июн 2012, 07:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Andrew писал(а):
Мб такое в wiki занести? Наверно не я один на такие грабли попаду...

Так в чем проблема ;)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.044s | 39 Queries | GZIP : On ]