BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Помогите по Java
СообщениеДобавлено: 06 окт 2008, 17:54 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
Добрый день.

Не силён в java. Подскажите как проделать следующее.
Нужен отчёт, в ней функция
Код:
import java.sql.*;
import java.util.*;

public void fillReport( con, filter, result )
{

...
   ps = con.prepareStatement(
   result.sql( "SELECT le.login, ls.requests AS ip FROM log_error_1_$yy(month)$mm(month) AS le, log_server_1_$yy(month)$mm(month) AS ls WHERE  le.log_rec_id=ls.id ", filter ) );
   ResultSet rs = ps.executeQuery();
   /*Тут хочу из полей requests вытащить атрибут Calling-Station-Id, (это не проблема), создать новый ResultSet, и туда записать теже поля, но с изменённым field-ом ip. и этот ResultSet передать дальше. Эти сложности изза того что не могу SQL запросом сразу вытянуть этот атрибут из поля requests */

   result.setDataSource( rs );//
}


хочу из полей requests вытащить атрибут Calling-Station-Id, (это не проблема), создать новый ResultSet, и туда записать теже поля, но с изменённым field-ом ip. и этот ResultSet передать дальше. Эти сложности изза того что не могу SQL запросом сразу вытянуть этот атрибут из поля requests.

Так вот, как правильно это сделать, реально ли это? тонкостей с resultset-ами не знаю, там вроде datasource нужен, а надо просто самому создать список строк с полями, и передать дальше, чтобы отчёт съел эти данные.

Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2008, 18:36 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Вместо создания resultset нужно создать list hashmap
Код:
List res = new ArrayList();
  while(rs.next())
  {
    Map map = new HashMap();
    map.put("id", rs.getInt("id"));
    ...

    res.add(map);
  }

  result.setDataSource( res );

Или лучше попытаться вытащить атрибут уже в самом отчете, в expression поля.

Добавляем новый Parameter Parameter Name=pattern, Parameter Class Type=java.util.regex.Pattern, Default Value Expression=java.util.regex.Pattern.compile("Calling-Station-Id=(.+)")

Добавляем новый variable, Variable Name=matcher, Variable Class Type=java.util.regex.Matcher, Variable Expression=$P{pattern}.matcher($F{requests})

В поле вывода, Text Field Expression=( $V{matcher}.find() ? $V{matcher}.group(1) : "---" )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 окт 2008, 20:52 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
Спасибо! Благодарю за подробный, и понятный ответ:)
Получилось всё.


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

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


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

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


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

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