BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 04 май 2024, 18:57

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: скрипт 5.2 ошибка на equals
СообщениеДобавлено: 12 июл 2012, 17:22 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Имеем кусок кода в котором выходит ошибка, не пойму почему она выходит
Код:
import bitel.billing.server.contract.bean.*;
import java.util.*;
import bitel.billing.server.util.*;
import bitel.billing.server.radius.*;
import java.sql.*;
import java.util.*;
import bitel.billing.common.TimeUtils;
import bitel.billing.server.util.Utils;
import bitel.billing.server.card.bean.*;
import ru.bitel.bgbilling.kernel.network.radius.*;
alias =  request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" );
if( login == null || alias == null || alias.equals("") ) {
response.setPacketType((byte)3); // Reject
}


Код:
Attempt to resolve method: equals() on undefined variable or class name: alias : at Line: 73 : in file: Function [id:1; title:Test] : alias .equals ( "" )
java.util.concurrent.ExecutionException: Sourced file: Function [id:1; title:Test] : Attempt to resolve method: equals() on undefined variable or class name: alias : at Line: 73 : in file: Function [id:1; title:Test] : alias .equals ( "" )


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
код точно такой ? может целиком покажите ? есть подозрение что у вас alias где-то внутри скобок {} присваивается, а потом к нему обращаются .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скрипт 5.2 ошибка на equals
СообщениеДобавлено: 13 июл 2012, 10:02 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
так и есть alias указывается внутри {} а далее по коду к нему обращается. На версии 5,1 отрабатывало без ошибок
Код:
if( cmds.get("set-ani") != null ) {
   // ставим аон или сбрасываем
   if( "1".equals(cmds.get("set-ani")) ) {
      //alias = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id );
        alias =  request.getStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, "" );
   } else {
      alias = "x";
   }

   if( login == null || alias == null || alias.equals("") ) {
      // ошибка
      print("Error: "+login+" cid:"+alias);
      response.setPacketType((byte)3); // Reject
   } else {
      print("Updating alias_"+event.moduleID+" "+login.getId()+" to:"+alias);
      
      // ищем у чел логин тип == 3 (авторизация по номеру)
      int loginType=3;
      loginid=0;
      lid=0;
      isOk = true;

      if(! "x".equals(alias)) {
         // первым делом проверяем есть ли у когото уже такой алиас
         // и активен ли он
         ps = con.prepareStatement("select cid,login_id,date1,date2  from user_alias_"+event.moduleID+" a join user_login_"+event.moduleID+" l on l.id=a.login_id where (date1 is null or date1 <= now()) and (date2 is null or date2>=now()) and login_alias = ?");
         ps.setString(1, alias);
         ResultSet rs=ps.executeQuery();
         if(rs.next()) {
            // если активен и не наш то облом...
            if( rs.getInt(1) !=  contract.getId() ) {
               print("Active and in use on cid="+rs.getInt(1));
               response.setPacketType((byte)3); // Reject
               //response.setVendorStringAttribute( 103, String.valueOf(113));
               response.setStringAttribute(9, 103, String.valueOf(113));
 
               isOk=false;
            }
         } else {
            // убиваем не наши активные алиасы (если есть)
            ps = con.prepareStatement("delete from user_alias_"+event.moduleID+" where login_alias = ?");
            ps.setString(1, alias);
            ps.executeUpdate();
         }
         ps.close();
      }
      
      if(isOk) {
         ps = con.prepareStatement("SELECT login,id FROM user_login_"+event.moduleID+" WHERE cid=? and type=? order by login");
         ps.setInt(1, contract.getId());
         ps.setInt(2, loginType);
         ResultSet rs=ps.executeQuery();
         if(rs.next()) { loginid = rs.getInt(1); lid = rs.getInt(2); }
         ps.close();

         if ( loginid == 0 ) {
            // нет старого логина ... создаем новый логин
            int loginid=1000000;
               ps = con.prepareStatement("SELECT max(login) FROM user_login_"+event.moduleID+" WHERE login>"+loginid);
               ResultSet rs=ps.executeQuery();
               if(rs.next()) loginid = rs.getInt(1);
            if(loginid < 1000000) loginid=1000000;
               loginid++;
            ps.close();

            print("Create new login "+loginid);
               ps = con.prepareStatement("INSERT INTO user_login_"+event.moduleID+" ( cid, login, date1, date2, status, comment, type ) VALUES (?,?,?,?,?,?,?)");
               ps.setInt(1, contract.getId());
               ps.setInt(2, loginid);
//                  ps.setDate(3,TimeUtils.convertCalendarToSqlDate(contract.getDate1()));
                                ps.setDate(3, contract.getDateFrom());
//                  ps.setDate(4,TimeUtils.convertCalendarToSqlDate(contract.getDate2()));
                                ps.setDate(4, contract.getDateTo());
               ps.setInt(5, 0);
               ps.setString(6, "set via IVR ");
               ps.setInt(7, loginType);
               ps.executeUpdate();
               int lid = Utils.lastInsertId(con);
            ps.close();
         } else {
            print("Using old login "+loginid);
         }
     

         ps = con.prepareStatement("DELETE FROM user_alias_"+event.moduleID+" WHERE login_id=?");
         ps.setInt(1, lid);
         ps.executeUpdate();
         ps.close();

         if(! "x".equals(alias)) {
            ps = con.prepareStatement("REPLACE INTO user_alias_"+event.moduleID+" VALUES ( ?, ? )");
            ps.setInt(1, lid);
            ps.setString(2, alias);
            ps.executeUpdate();
            print("Set lod="+lid+" alias="+alias);
         }
         response.setPacketType((byte)2); // Accept
      }
   }
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: скрипт 5.2 ошибка на equals
СообщениеДобавлено: 13 июл 2012, 10:31 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
При объявлении внутри скобок переменная только внутри этих скобок и живет. Объявите переменную явно в самом начале. Пусть как нулл даже.


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

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


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

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Да, прописал переменную в начале скрипта и все заработало.
Ссылку которую дали на wiki не работает.


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
madmax писал(а):
Да, прописал переменную в начале скрипта и все заработало.
Ссылку которую дали на wiki не работает.

поправил ссылку


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

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


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

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


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

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