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/ |