BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 22:09

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 22 ноя 2011, 17:08 
Не в сети

Зарегистрирован: 28 сен 2011, 11:40
Сообщения: 60
Карма: 0
Здравствйте, коллеги.
сделал я себе нормализацию номера, он даже работает.
Но так-как я не программер хотел попросить посмотреть и быть может помочь оптимизировать. :?:

Код:
import bitel.billing.server.radius.*;
import java.util.regex.*;

callingStationId = RadiusStandartAttributes.Calling_Station_Id;
calledStationId = RadiusStandartAttributes.Called_Station_Id;
username = RadiusStandartAttributes.User_Name;

if (callingStationId == null ) { String callingStationId = "78120000000"; };

//Матчим и заменяем DID
String DID = request.getStringAttribute(calledStationId).replaceFirst("^8(\\d{10})$","7$1");
if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); };
String DID = request.getStringAttribute(calledStationId).replaceFirst("^(\\d{10})$","7$1");
if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); };
// Если это входящий короткий - приводим его к требуемому формату
String DID = request.getStringAttribute(calledStationId).replaceFirst("^777(\\d)$","7812000000$1");
if (DID != request.getStringAttribute(calledStationId)) { request.setStringAttribute(calledStationId, DID); };
//Матчим и заменяем ANI
String ANI = request.getStringAttribute(callingStationId).replaceFirst("^8(\\d{10})$","7$1");
if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); };
String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{10})$","7$1");
if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); };
String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{3})$","78120000$1");
if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); };
String ANI = request.getStringAttribute(callingStationId).replaceFirst("^(\\d{4})$","7812000$1");
if (ANI != request.getStringAttribute(callingStationId)) { request.setStringAttribute(callingStationId, ANI); };
//Матчим и заменяем То по чему иногда авторизуем
String User = request.getStringAttribute(username).replaceFirst("^8(\\d{10})$","7$1");
if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); };
String User = request.getStringAttribute(username).replaceFirst("^(\\d{10})$","7$1");
if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); };
String User = request.getStringAttribute(username).replaceFirst("^(\\d{3})$","78120000$1");
if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); };
String User = request.getStringAttribute(username).replaceFirst("^(\\d{4})$","7812000$1");
if (User != request.getStringAttribute(username)) { request.setStringAttribute(username, User); };

_________________
Клиент: вер. 5.2 сборка 1027 от 27.08.2012 12:07:51
Сервер: вер. 5.2 сборка 1283 от 28.08.2012 11:38:39


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 ноя 2011, 17:26 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Лучше один раз получить getStringAttribute( ) и один раз в конце установить setStringAttribute( ).
И new String( "asd ) != "asd", нужно проверять методом equals - new String( "asd" ).equals( "asd" ) == true.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 ноя 2011, 14:17 
Не в сети

Зарегистрирован: 28 сен 2011, 11:40
Сообщения: 60
Карма: 0
Amir писал(а):
Лучше один раз получить getStringAttribute( ) и один раз в конце установить setStringAttribute( ).
И new String( "asd ) != "asd", нужно проверять методом equals - new String( "asd" ).equals( "asd" ) == true.


Ну яж сказал что я ни разу не программер, и близко не стою. Если не сложно - покажите как это будет выглядить.
И еще столкнулся с проблемой - не всегда есть переменная callingStationID - т.е. иногда она не приходит с потока, как проверять на ее отсутствие? и если что прировнять к какойнибудь другой? Я попробовал сделать так:

Код:
if (callingStationId == null ) { String callingStationId = "78120000000"; };

не работает, вопрос как это сделать правильно?

_________________
Клиент: вер. 5.2 сборка 1027 от 27.08.2012 12:07:51
Сервер: вер. 5.2 сборка 1283 от 28.08.2012 11:38:39


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 дек 2011, 19:46 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Примерно так:
Код:
import bitel.billing.server.radius.*;
import java.util.regex.*;

String calledStationId = request.getStringAttribute( RadiusStandartAttributes.Called_Station_Id );
//Матчим и заменяем DID
calledStationId = calledStationId.replaceFirst("^8(\\d{10})$","7$1");
calledStationId = calledStationId.replaceFirst("^(\\d{10})$","7$1");
// Если это входящий короткий - приводим его к требуемому формату
calledStationId = calledStationId.replaceFirst("^777(\\d)$","7812000000$1");

String callingStationId = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id );
if (callingStationId == null ) { callingStationId = "78120000000"; };
//Матчим и заменяем ANI
callingStationId = callingStationId.replaceFirst("^8(\\d{10})$","7$1");
callingStationId = callingStationId.replaceFirst("^(\\d{10})$","7$1");
callingStationId = callingStationId.replaceFirst("^(\\d{3})$","78120000$1");
callingStationId = callingStationId.replaceFirst("^(\\d{4})$","7812000$1");

String username = request.getStringAttribute( RadiusStandartAttributes.User_Name );
//Матчим и заменяем То по чему иногда авторизуем
username = username.replaceFirst("^8(\\d{10})$","7$1");
username = username.replaceFirst("^(\\d{10})$","7$1");
username = username.replaceFirst("^(\\d{3})$","78120000$1");
username = username.replaceFirst("^(\\d{4})$","7812000$1");

request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, calledStationId );
request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, callingStationId );
request.setStringAttribute( RadiusStandartAttributes.User_Name, username );


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

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


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

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


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

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