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

скрипт 5.2 ошибка на equals
http://forum.bitel.ru/viewtopic.php?f=22&t=6960
Страница 1 из 1

Автор:  madmax [ 12 июл 2012, 17:22 ]
Заголовок сообщения:  скрипт 5.2 ошибка на equals

Имеем кусок кода в котором выходит ошибка, не пойму почему она выходит
Код:
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 ( "" )

Автор:  stark [ 13 июл 2012, 09:48 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

код точно такой ? может целиком покажите ? есть подозрение что у вас alias где-то внутри скобок {} присваивается, а потом к нему обращаются .

Автор:  madmax [ 13 июл 2012, 10:02 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

так и есть 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
      }
   }
}

Автор:  Феанор [ 13 июл 2012, 10:31 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

При объявлении внутри скобок переменная только внутри этих скобок и живет. Объявите переменную явно в самом начале. Пусть как нулл даже.

Автор:  stark [ 13 июл 2012, 11:07 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

тут описано

Автор:  madmax [ 13 июл 2012, 11:28 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

Да, прописал переменную в начале скрипта и все заработало.
Ссылку которую дали на wiki не работает.

Автор:  stark [ 13 июл 2012, 11:52 ]
Заголовок сообщения:  Re: скрипт 5.2 ошибка на equals

madmax писал(а):
Да, прописал переменную в начале скрипта и все заработало.
Ссылку которую дали на wiki не работает.

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

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