forum.bitel.ru http://forum.bitel.ru/ |
|
Ошибка при переносе данных. http://forum.bitel.ru/viewtopic.php?f=22&t=2598 |
Страница 1 из 1 |
Автор: | dale [ 19 июл 2009, 01:39 ] |
Заголовок сообщения: | Ошибка при переносе данных. |
Пишу конвертер из текстового файла в 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 системы нормально контракт с данным темплейтом создается и с теми же данными. |
Автор: | dale [ 19 июл 2009, 02:12 ] |
Заголовок сообщения: | |
Поясните я правильно понимаю что мне необходимо указать pattern id в первом параметре createFromPattern ??? |
Автор: | dimOn [ 20 июл 2009, 11:52 ] |
Заголовок сообщения: | |
да, либо 0, если без паттерна |
Автор: | dimOn [ 20 июл 2009, 11:55 ] |
Заголовок сообщения: | |
Вообще - конвертер чего вы пишете? И вот это Код: getTemplate(user.tarif) ваша функция или что это?
|
Автор: | Администратор [ 20 июл 2009, 12:12 ] |
Заголовок сообщения: | |
Установите сегодняший апдейт. |
Автор: | dale [ 21 июл 2009, 13:56 ] |
Заголовок сообщения: | |
dimOn писал(а): Вообще - конвертер чего вы пишете? И вот это
Код: getTemplate(user.tarif) ваша функция или что это?1. Конвертор из обычного текстового файла. 2. Моя функция. Думаю это понятно по вызовы метод того же класса. Возвращает по тарифу мне тот шаблон который мне необходим. |
Автор: | dale [ 21 июл 2009, 14:01 ] |
Заголовок сообщения: | |
Администратор писал(а): Установите сегодняший апдейт.
Попробую вечерком. Спасибо. |
Автор: | stark [ 21 июл 2009, 14:18 ] |
Заголовок сообщения: | |
dale писал(а): Администратор писал(а): Установите сегодняший апдейт. Попробую вечерком. Спасибо. вообще там проблема не толко в конвертерах, а вообще шаблоны не работали в клиенте (в однм из апдейтов поломали). так что рекоменджую обновится |
Автор: | dale [ 24 июл 2009, 02:42 ] |
Заголовок сообщения: | |
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] |
Автор: | stark [ 24 июл 2009, 11:01 ] |
Заголовок сообщения: | |
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 ); |
Автор: | dale [ 31 июл 2009, 01:04 ] |
Заголовок сообщения: | |
Теперь новая проблемка, для экспериментов нужно очищать БД. Получаю следующую ошибку. 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); } } |
Автор: | skn [ 31 июл 2009, 02:04 ] |
Заголовок сообщения: | |
нужно инициализировать обработчик событий, перед вызовом ContractRemover.deleteContract(...) Код: EventProcessor.initProcessor( DefaultServerSetup setup, boolean processMode )
|
Автор: | stark [ 31 июл 2009, 11:50 ] |
Заголовок сообщения: | |
skn писал(а): нужно инициализировать обработчик событий, перед вызовом ContractRemover.deleteContract(...)
Код: EventProcessor.initProcessor( DefaultServerSetup setup, boolean processMode ) нужно так : ConvertEventProcessor.initProcessor( bgSetup, false, new ServerEventProcessor() ); |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |