2007년 2월 22일 목요일

JFreeReport에 대하여 알아본 이모저모

이름에서부터 알수 있다싶이 JFreeReport는 JFreeChart 와 같이 JFree-Family 프로젝트 이다.

특이한것 몇가지 설명드리자면, 리포트 기반 데이터구조가 TableModel이다. 이런 방식으로서 데이타 관리는 얼핏 보기엔 다소 불편할수 있지만 실제적으로 데이타베이스나 퍼시스턴트 레이어에 감추어져 있던 데이타들을 비쥬얼적인 JTable속에 넣기 때문에 개발시 더욱 용이해질수도 있다. 또한 출력할때에도 JTable속의 TableModel을 사용하면 된다. 출력 레이아웃은 하드코딩방식으로 정의할수도 있고 좀 더 단순한 XML파일에 대한 설정으로도 끝마칠수있다.
또한 XML코딩의 노가다 성에 대비하여 JFreeDisinger라는 패키지도 지원해주고 있다.

기본적인 기능으로 groupby, summary, page_header, report_header, page, date 등에 대하여 표시하는것이 있고 웹에서 활용하기 위하여 JFreeReport Extension을 사용하여야 한다. JFreeReport Extension를 사용하게 되면 JSP는 물론 Servlet도 지원가능하다.

간단한 데모소스를 첨부하자면

1. 포맷에 대한 정의를 한다.

protected JFreeReport getReportWithDefinition(){
  URL xmlIn=this.getClass().getResource("/jfreereport/"+this.xmlDefinition);
  JFreeReport report=null;
 
  ReportGenerator generator=ReportGenerator.getInstance();
 
  try{
   report=generator.parseReport(xmlIn);
  }
  catch (ElementDefinitionException e) {
   e.printStackTrace();
   System.out.println("elementDefinition e:"+e.toString());
  }
  catch (IOException e) {
   e.printStackTrace();
  }
 
  return report;
 }


2. Data를 설정한다, 즉 TableModel에 대한 설정

public JFreeReport getReport(){
  JFreeReport report=null;
  report=this.getReportWithDefinition();
  report.setData(data);
  return report;
 }


3. 프리뷰를 작성한다.

public static void main(String[] args) {

JFreeReportBoot.getInstance().start();
  DIReportTest rt=new DIReportTest(tableModel,"DIreport.xml");
  JFreeReport report=rt.getReport();
  PreviewDialog dialog=null;
  try{
   dialog=new PreviewDialog(report);
  }
  catch(ReportProcessingException e){
   e.printStackTrace();
   System.out.println("report processing e:"+e.toString());
  }
  dialog.pack();
  dialog.setVisible(true);

}


이상 JFreeReport에 대한 간단한 요약은 끝임돠~~~

댓글 없음:

댓글 쓰기