Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jbreport/core/Document.java


1   /*
2    * $Id: Document.java,v 1.1 2000/08/31 13:53:17 grantfin Exp $
3    *
4    * jbReport - A reporting library for Java
5    * Copyright (C) 2000 Grant Finnemore <grantfin@users.sourceforge.net>
6    *
7    * This library is free software; you can redistribute it and/or
8    * modify it under the terms of the GNU Lesser General Public
9    * License as published by the Free Software Foundation; either
10   * version 2 of the License, or (at your option) any later version.
11   *
12   * This library is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this library; if not, write to the Free Software
19   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20   */
21  package jbreport.core;
22  
23  import java.util.Iterator;
24  
25  import jbreport.ReportException;
26  
27  /**
28   * Represents a complete document that can be rendered to produce a valid 
29   * output result. This would be the equivalent of an html page, acrobat 
30   * document, etc.
31   * 
32   * @author Grant Finnemore
33   * @version $Revision: 1.1 $
34   */
35  class Document extends ReportSectionImpl {
36  
37     /** Has the data been loaded already? */
38     private boolean dataLoaded = false;
39  
40     //
41     // Constructors
42     //
43  
44     //
45     // Methods overloaded from AbstractReportElement
46     //
47  
48     public void accept(ReportVisitor visitor, ReportVisitorState state) 
49        throws ReportException {
50        visitor.visitDocument(this, state);
51     }
52  
53     public void loadData() throws ReportException {
54        if(dataLoaded) {
55           throw new IllegalStateException("The loadData() method cannot be "
56                                           + "called more than once.");
57        }
58        dataLoaded = true;
59        // Use the pre-order iterator, as the structure might change during the
60        // iteration. Using any other types of iterator might not ensure that
61        // we visit all the nodes in the tree.
62        for(Iterator it = preOrderIterator(); it.hasNext();) {
63           AbstractReportElement elem = (AbstractReportElement)it.next();
64           elem.preLoadData();
65        }
66        super.loadData();
67     }
68  }