BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Ошибка при переносе данных.
СообщениеДобавлено: 19 июл 2009, 01:39 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Пишу конвертер из текстового файла в BG
Имеется метод
private void createContract(User user) throws Exception {
Connection con = bgSetup.getDBConnectionFromPool();
ContractManager manager = new ContractManager(con);
ContractPatternManager cpm = new ContractPatternManager(con);
ContractPattern cp = cpm.getPattern(getTemplate(user.tarif));
Contract c = manager.createFromPattern(cp.getID(), user.contract, Calendar.getInstance(), "test");
System.out.println();
}

Получаем экспшен.
java.lang.NullPointerException
at bitel.billing.server.contract.bean.ContractPatternManager.deserializePattern(ContractPatternManager.java:254)
at bitel.billing.server.contract.bean.ContractPatternManager.loadContractPattern(ContractPatternManager.java:97)
at bitel.billing.server.contract.bean.ContractPatternManager.getPattern(ContractPatternManager.java:60)
at Convert.createContract(Convert.java:126)
at Convert.start(Convert.java:141)
at Convert.main(Convert.java:67)


java.lang.NullPointerException
at bitel.billing.server.contract.bean.ContractPatternManager.deserializePattern(ContractPatternManager.java:254)
at bitel.billing.server.contract.bean.ContractPatternManager.loadContractPattern(ContractPatternManager.java:97)
at bitel.billing.server.contract.bean.ContractPatternManager.getPattern(ContractPatternManager.java:60)
at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:101)
at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:71)
at bitel.billing.server.contract.bean.ContractManager.createFromPattern(ContractManager.java:50)
at Convert.createContract(Convert.java:125)
at Convert.start(Convert.java:137)
at Convert.main(Convert.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

С чем может быть связано ????

Прошу обратить внимание, что через UI системы нормально контракт с данным темплейтом создается и с теми же данными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2009, 02:12 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Поясните я правильно понимаю что мне необходимо указать pattern id в первом параметре createFromPattern ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 июл 2009, 11:52 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
да, либо 0, если без паттерна


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 июл 2009, 11:55 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Вообще - конвертер чего вы пишете? И вот это
Код:
getTemplate(user.tarif)
ваша функция или что это?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 июл 2009, 12:12 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Установите сегодняший апдейт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июл 2009, 13:56 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
dimOn писал(а):
Вообще - конвертер чего вы пишете? И вот это
Код:
getTemplate(user.tarif)
ваша функция или что это?

1. Конвертор из обычного текстового файла.
2. Моя функция. Думаю это понятно по вызовы метод того же класса. Возвращает по тарифу мне тот шаблон который мне необходим.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июл 2009, 14:01 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Администратор писал(а):
Установите сегодняший апдейт.

Попробую вечерком. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 21 июл 2009, 14:18 
Не в сети
Разработчик

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

Попробую вечерком. Спасибо.


вообще там проблема не толко в конвертерах, а вообще шаблоны не работали в клиенте (в однм из апдейтов поломали). так что рекоменджую обновится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 июл 2009, 02:42 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
stark писал(а):
dale писал(а):
Администратор писал(а):
Установите сегодняший апдейт.

Попробую вечерком. Спасибо.


вообще там проблема не толко в конвертерах, а вообще шаблоны не работали в клиенте (в однм из апдейтов поломали). так что рекоменджую обновится


Сейчас создаю контракт через скрипт, при этом в диалап модуле не создается автоматом логин.
Когда создаю контракт через клиентскую прогу, то нормально создается автоматом логин. Шаблон используется один и тот же. В шаблоне стоит галочка выполнить Создать логин.

И ещё другой вопрос. При использовании вашего примера:
Код:
private String addDialupInfo(Connection bgCon,
                                 int cid,
                                 User user) throws SQLException, UnsupportedEncodingException {

        int blocked = 0;
        if (user.status>0)
            blocked = 0;
        else
            blocked = 1; 
        String login = user.login;
        String password = user.passwd;





        String query =
                "INSERT INTO user_login_" + dialupID + " (cid, login, pswd, date1, status) VALUES (?, ?, ?, ?, ?)";
        PreparedStatement psInsertLogin = bgCon.prepareStatement(query);

        psInsertLogin.setInt(1, cid);
        psInsertLogin.setInt(2, loginNum);
        psInsertLogin.setString(3, password);
        psInsertLogin.setDate(4, TimeUtils.convertCalendarToSqlDate(Calendar.getInstance()));
        psInsertLogin.setInt(5, blocked);
        psInsertLogin.executeUpdate();


        int lid = bitel.billing.server.util.Utils.lastInsertId(psInsertLogin);


        query =
                "INSERT INTO user_alias_" + dialupID + " (login_id, login_alias) VALUES (?, ?)";
        PreparedStatement psInsertAlias = bgCon.prepareStatement(query);

        psInsertAlias.setInt(1, lid);
        psInsertAlias.setString(2, login);
        psInsertAlias.executeUpdate();


        //Set<Long> ips = user.get(userId);


        /*query =
                "INSERT INTO radius_pair_ip_" + dialupID + " (id, ip, realm) VALUES (?, ?, 'default')";
        PreparedStatement psInsertIpAddrss = bgCon.prepareStatement(query);
        psInsertIpAddrss.setInt(1, lid);
        psInsertIpAddrss.setLong(2, user.ip);
        psInsertIpAddrss.executeUpdate();*/
        loginNum++;
        return login;
    }



вылетает эксепшн

java.sql.SQLException: !Statement.GeneratedKeysNotRequested!
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1814)
at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:318)
at bitel.billing.server.util.Utils.lastInsertId(Utils.java:685)
at dale.Convert.addDialupInfo(Convert.java:115)
at dale.Convert.createContract(Convert.java:151)
at dale.Convert.start(Convert.java:226)
at dale.Convert.main(Convert.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
[/code]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 июл 2009, 11:01 
Не в сети
Разработчик

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

И ещё другой вопрос. При использовании вашего примера:
Код:
private String addDialupInfo(Connection bgCon,
                                 int cid,
                                 User user) throws SQLException, UnsupportedEncodingException {

        int blocked = 0;
        if (user.status>0)
            blocked = 0;
        else
            blocked = 1; 
        String login = user.login;
        String password = user.passwd;





        String query =
                "INSERT INTO user_login_" + dialupID + " (cid, login, pswd, date1, status) VALUES (?, ?, ?, ?, ?)";
        PreparedStatement psInsertLogin = bgCon.prepareStatement(query);

        psInsertLogin.setInt(1, cid);
        psInsertLogin.setInt(2, loginNum);
        psInsertLogin.setString(3, password);
        psInsertLogin.setDate(4, TimeUtils.convertCalendarToSqlDate(Calendar.getInstance()));
        psInsertLogin.setInt(5, blocked);
        psInsertLogin.executeUpdate();


        int lid = bitel.billing.server.util.Utils.lastInsertId(psInsertLogin);


        query =
                "INSERT INTO user_alias_" + dialupID + " (login_id, login_alias) VALUES (?, ?)";
        PreparedStatement psInsertAlias = bgCon.prepareStatement(query);

        psInsertAlias.setInt(1, lid);
        psInsertAlias.setString(2, login);
        psInsertAlias.executeUpdate();


        //Set<Long> ips = user.get(userId);


        /*query =
                "INSERT INTO radius_pair_ip_" + dialupID + " (id, ip, realm) VALUES (?, ?, 'default')";
        PreparedStatement psInsertIpAddrss = bgCon.prepareStatement(query);
        psInsertIpAddrss.setInt(1, lid);
        psInsertIpAddrss.setLong(2, user.ip);
        psInsertIpAddrss.executeUpdate();*/
        loginNum++;
        return login;
    }


вылетает эксепшн

java.sql.SQLException: !Statement.GeneratedKeysNotRequested!
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1814)
at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:318)
at bitel.billing.server.util.Utils.lastInsertId(Utils.java:685)
at dale.Convert.addDialupInfo(Convert.java:115)
at dale.Convert.createContract(Convert.java:151)
at dale.Convert.start(Convert.java:226)
at dale.Convert.main(Convert.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
[/code]


в 4.6 изменился драйвер mysql Нужно строчку :

PreparedStatement psInsertLogin = bgCon.prepareStatement(query);
заменить на :
PreparedStatement psInsertLogin = bgCon.prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 июл 2009, 01:04 
Не в сети

Зарегистрирован: 04 апр 2008, 13:13
Сообщения: 87
Карма: 0
Теперь новая проблемка, для экспериментов нужно очищать БД. Получаю следующую ошибку.

java.lang.NullPointerException
at bitel.billing.server.contract.ContractRemover.deleteContract(ContractRemover.java:181)
at dale.Convert.removeAllContracts(Convert.java:200)
at dale.DeleteAllContracts.main(DeleteAllContracts.java:13)

Код следующий.


Код:
public void removeAllContracts() throws Exception {
        Connection con = null;
        try {
            System.out.println(" removing contracts ");
            con = bgSetup.getDBConnection();
            ContractRemover remover = new ContractRemover(bgSetup, con, null);
            String query = "SELECT   id FROM  contract";
            PreparedStatement ps = con.prepareStatement(query);
            ResultSet rs = ps.executeQuery();
            int count = 0;
            while (rs.next()) {
                int cid = rs.getInt(1);
                remover.deleteContract(cid);
                count++;
            }
            rs.close();
            ps.close();
            System.out.println(count + " contracts was deleted..");
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
        finally {
            bgSetup.returnConToPool(con);
        }
    }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 июл 2009, 02:04 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
нужно инициализировать обработчик событий, перед вызовом ContractRemover.deleteContract(...)

Код:
EventProcessor.initProcessor( DefaultServerSetup setup, boolean processMode )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 июл 2009, 11:50 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skn писал(а):
нужно инициализировать обработчик событий, перед вызовом ContractRemover.deleteContract(...)

Код:
EventProcessor.initProcessor( DefaultServerSetup setup, boolean processMode )


нужно так :
ConvertEventProcessor.initProcessor( bgSetup, false, new ServerEventProcessor() );


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

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


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

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


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

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