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

Помогите по Java
http://forum.bitel.ru/viewtopic.php?f=12&t=1494
Страница 1 из 1

Автор:  Akhmat [ 06 окт 2008, 17:54 ]
Заголовок сообщения:  Помогите по Java

Добрый день.

Не силён в 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 нужен, а надо просто самому создать список строк с полями, и передать дальше, чтобы отчёт съел эти данные.

Спасибо!

Автор:  Amir [ 06 окт 2008, 18:36 ]
Заголовок сообщения: 

Вместо создания 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) : "---" )

Автор:  Akhmat [ 07 окт 2008, 20:52 ]
Заголовок сообщения: 

Спасибо! Благодарю за подробный, и понятный ответ:)
Получилось всё.

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