Class Section

  • All Implemented Interfaces:
    ElementContainer, NodeParser, com.inet.report.ReferenceHolder, SimpleElementContainer, java.io.Serializable

    public class Section
    extends Region
    implements ElementContainer
    The Section class represents the sections of a report.
    Each report consists of several sections which are associated with Areas of type: Report Header, Page Header, Group Header, Detail, Group Footer, Report Footer and Page Footer.
    Here you can add elements to your report, like lines, boxes, text fields, pictures and of course fields with dynamic content, called FieldElement. To do this you can use the various add methods of this class.

    The height and the width of a section is generated dynamically. Always when you are adding an element the section height and width would be checked. Use the ReportComponent.setHeight(int) and ReportComponent.setWidth(int) methods for changing it manually.

    All elements in a section are bundled in a Vector, that you can access with getElementsV(). The index of each element is the position in this Vector object. You need the index if you want to remove an element (with remove(Element)).

    This class is part of the RDC.
    See Also:
    Serialized Form
    • Field Detail

      • DEFAULT_HEIGHT

        public static final int DEFAULT_HEIGHT
        Default value of the property 'height'.
        See Also:
        Constant Field Values
    • Method Detail

      • getParent

        public java.lang.Object getParent()
                                   throws java.lang.IllegalStateException
        Returns the parent Area of the Section.
        Returns:
        The parent Area.
        Throws:
        java.lang.IllegalStateException - if the type of the section is invalid.
        Since:
        6.0
      • paramString

        public java.lang.String paramString()
        Returns a string identifying this report component. This method is useful for logging and for debugging.
        Overrides:
        paramString in class ReportComponent
        Returns:
        a string identifying the ReportComponent
      • pasteElement

        public Element pasteElement​(java.lang.Object copy)
                             throws ReportException
        Paste a copy of an Element to this Section. The parameter is not an instance of Element. If the Element needs references to a Field or a Group then these objects must exist in this Engine. In the other cases a ReportException will be thrown. The coordinates on that the Element will be paste in the Section are the coordinates of the copied element.
        Specified by:
        pasteElement in interface ElementContainer
        Parameters:
        copy - An object created with the method Element.copy().
        Returns:
        The inserted Element.
        Throws:
        ReportException - If the Element cannot be created because of missing references.
        Since:
        6.0
        See Also:
        Element.copy()
      • moveElement

        public void moveElement​(Element elem,
                                Section dest)
                         throws ReportException
        Moves the Element elem from this Section to the destination Section dest.
        Parameters:
        elem - The Element, which should move to another Section.
        dest - The destination Section of movement.
        Throws:
        ReportException - will thrown if dest or elem is null.
        Since:
        6.0
        See Also:
        Element.setIndex(int)
      • getElementsV

        public java.util.Vector<Element> getElementsV()
        Returns a Vector containing all elements in this section. Each element in the returned Vector is an instance of class Element or an instance of Elements subclasses.
        Specified by:
        getElementsV in interface SimpleElementContainer
        Returns:
        A Vector containing all elements in this section.
        Since:
        6.0
        See Also:
        getElements(), Element
      • getElements

        public Element[] getElements()
        Returns an Array containing all elements in this section. Each field of the Array contains an instance of class Element or an instance of Elements subclasses.
        Specified by:
        getElements in interface SimpleElementContainer
        Returns:
        An Array containing all elements in this Section.
        Since:
        6.0
        See Also:
        getElementsV(), Element
      • addDatabasePicture

        public DatabasePicture addDatabasePicture​(Field field,
                                                  int xpos,
                                                  int ypos,
                                                  int objwidth,
                                                  int objheight)
        Adds a new DatabasePicture (e.g. Blob) to this Section and returns it.
        Specified by:
        addDatabasePicture in interface SimpleElementContainer
        Parameters:
        field - Field which valuetype is Field.BINARY and that should be added to the section. This can be a database field, a formula field, a prompt field or a SQL field.
        xpos - x-coordinate of the upper left corner in twips.
        ypos - y-coordinate of the upper left corner in twips.
        objwidth - Width of the new fieldElement in twips.
        objheight - Height of the new fieldElement in twips.
        Returns:
        new created DatabasePicture
        Since:
        6.0
      • addBox

        public Box addBox​(int xpos,
                          int ypos,
                          int objwidth,
                          int objheight)
        Adds a new Box to this Section and returns it.
        Specified by:
        addBox in interface SimpleElementContainer
        Parameters:
        xpos - The horizontal offset in twips.
        ypos - The vertical offset in twips.
        objwidth - The width of the box in twips.
        objheight - The height of the box in twips.
        Returns:
        The created Box element or null if the creation was not successfull
        Throws:
        java.lang.IllegalArgumentException - If the parameter width or height are negative.
        Since:
        6.0
      • addBox

        public Box addBox​(int xpos,
                          int ypos,
                          int objwidth,
                          int objheight,
                          int y2,
                          Section endSection)
        Adds a new Box to this Section and returns it.
        Specified by:
        addBox in interface ElementContainer
        Parameters:
        xpos - The horizontal offset in twips.
        ypos - The vertical offset in twips.
        objwidth - The width of the box in twips.
        objheight - The minimal height of the box in start section in twips.
        y2 - The vertical offset of the end point in end section
        endSection - The section where the box ends
        Returns:
        The created box element
        Since:
        6.0
      • addCrossTab

        public CrossTab addCrossTab​(int xpos,
                                    int ypos,
                                    SummaryField field)
        Adds the simplest possible cross table (at least on field for summarization) into this Section and returns it. To make this cross table more complex use the add and append methods in class com.inet.report.CrossTab.
        Specified by:
        addCrossTab in interface ElementContainer
        Parameters:
        xpos - The x position of the upper left corner of the whole cross table in twips..
        ypos - The y position of the upper left corner of the whole cross table in twips..
        field - The field to summarize in cross table.
        Returns:
        The created Crosstab.
        Throws:
        java.lang.IllegalArgumentException - if the parameters x or y are negative
        Since:
        6.0
        See Also:
        CrossTab
      • addHorizontalLine

        public Line addHorizontalLine​(int xpos,
                                      int ypos,
                                      int objwidth)
        Adds a new horizontal line to the container and returns it.
        Specified by:
        addHorizontalLine in interface SimpleElementContainer
        Parameters:
        xpos - the horizontal offset of the start point in twips.
        ypos - the vertical offset of the start point in twips.
        objwidth - the width of the line in twips.
        Returns:
        the created line element
      • addJavaBean

        public JavaBean addJavaBean​(java.lang.String className,
                                    int xpos,
                                    int ypos,
                                    int objwidth,
                                    int objheight)
                             throws ReportException
        Add a new JavaBean to the container. The class of the Java Bean need to be extends form java.awt.Component.
        Specified by:
        addJavaBean in interface SimpleElementContainer
        Parameters:
        className - The class name of the Java Bean.
        xpos - The x-coordinate of the upper left corner in twips.
        ypos - The y-coordinate of the upper left corner in twips.
        objwidth - The width of the new fieldElement in twips.
        objheight - The height of the new fieldElement in twips.
        Returns:
        The created JavaBean.
        Throws:
        ReportException - if the Java Bean cannot created.
      • addVerticalLine

        public Line addVerticalLine​(int xpos,
                                    int ypos,
                                    int objheight)
        Adds a new vertical line to the container and returns it.
        Specified by:
        addVerticalLine in interface SimpleElementContainer
        Parameters:
        xpos - the horizontal offset of the start point in twips.
        ypos - the vertical offset of the start point in twips.
        objheight - the height of the line in twips.
        Returns:
        the created line element
      • addVerticalLine

        public Line addVerticalLine​(int xpos,
                                    int ypos,
                                    int y2,
                                    Section endSection)
        Adds a new vertical line to the container and returns it.
        Specified by:
        addVerticalLine in interface ElementContainer
        Parameters:
        xpos - The horizontal offset of the start point in twips.
        ypos - The vertical offset of the start point in twips.
        y2 - The vertical offset of the end point in end section in twips.
        endSection - The section where the line should end.
        Returns:
        The created line element.
      • copyContent

        public void copyContent​(Section source)
        Copies content and properties of the source section into target section.
        Parameters:
        source - The sections thats content and properties should copied.
        Since:
        6.0
      • addSubreport

        public Subreport addSubreport​(int xpos,
                                      int ypos,
                                      int objwidth,
                                      int objheight,
                                      java.lang.String filename)
                               throws ReportException,
                                      java.net.MalformedURLException,
                                      java.io.FileNotFoundException
        Adds a new subreport element with definition from file to the container and returns it.
        Specified by:
        addSubreport in interface ElementContainer
        Parameters:
        xpos - The x offset of the left upper corner of subreport frame.
        ypos - The y offset of the left upper corner of subreport frame.
        objwidth - The width of the subreport frame.
        objheight - The height of the subreport frame.
        filename - The file name of the subreport to insert.
        Returns:
        The created subreport element. You can get the engine of the subreport with method getEngine in class Subreport.
        Throws:
        ReportException - if Engine is not initialized or finished.
        java.net.MalformedURLException - Thrown to indicate that a malformed URL has occurred.
        java.io.FileNotFoundException - If no file for the subreport were found.
      • addSubreport

        public Subreport addSubreport​(int xpos,
                                      int ypos,
                                      int objwidth,
                                      int objheight)
        Adds a new subreport element to the container and returns it. Add-on is only possible if this report is a main report.
        Specified by:
        addSubreport in interface ElementContainer
        Parameters:
        xpos - The x offset of the left upper corner of subreport frame.
        ypos - The y offset of the left upper corner of subreport frame.
        objwidth - The width of the subreport frame.
        objheight - The height of the subreport frame.
        Returns:
        The created subreport element. You can get the engine of the subreport with method getEngine in class Subreport.
      • addText

        public Text addText​(int xpos,
                            int ypos,
                            int objwidth,
                            int objheight)
        Adds a new text element to the container. To fill a new line into this text element use addParagraph method. The returned text element is empty, that means it contains no paragraph object.
        Specified by:
        addText in interface SimpleElementContainer
        Parameters:
        xpos - the x offset of the text element
        ypos - the y offset of the text element
        objwidth - the width of the text element
        objheight - the height of the text element
        Returns:
        the created text element.
      • addFormField

        public com.inet.report.FormFieldElement addFormField​(int xpos,
                                                             int ypos,
                                                             int objwidth,
                                                             int objheight)
        Adds a new form field element to the container.
        Specified by:
        addFormField in interface ElementContainer
        Parameters:
        xpos - The x offset of the left upper corner of the form field.
        ypos - The y offset of the left upper corner of the form field.
        objwidth - The width of the form field.
        objheight - The height of the form field.
        Returns:
        the created form field element.
      • addInteractiveSorting

        public com.inet.report.InteractiveSorting addInteractiveSorting​(Field field,
                                                                        int xpos,
                                                                        int ypos,
                                                                        int objwidth,
                                                                        int objheight)
        Adds a new InteractiveSorting element to the container.
        Specified by:
        addInteractiveSorting in interface ElementContainer
        Parameters:
        field - the a group field or a sorting field which sorting should be interactive.
        xpos - The x offset of the left upper corner of the form field.
        ypos - The y offset of the left upper corner of the form field.
        objwidth - The width of the form field.
        objheight - The height of the form field.
        Returns:
        the created form field element.
      • remove

        public void remove​(Element elem)
        Removes the given report element from the container.
        Specified by:
        remove in interface SimpleElementContainer
        Parameters:
        elem - The Report Element which should be removed from the container (null is not permitted).
      • getSectionNameByNumber

        public java.lang.String getSectionNameByNumber​(int number)
                                                throws ReportException
        Generates a name ending usually used for section names.
        Parameters:
        number - - A number greater than 0; usually the index of the section in the sections set.
        Returns:
        String - "a" for 0, "z" for 25, "ab" for 27
        Throws:
        ReportException - if number is lesser than 0
        Since:
        6.0
      • getName

        public java.lang.String getName()
                                 throws ReportException
        Returns the name of the section - i.e. "Db" for the second detail section.
        Returns:
        The Name of the section
        Throws:
        ReportException - will thrown if Section was not found.
        Since:
        6.0
      • setSuppressIfBlank

        public void setSuppressIfBlank​(boolean newValue)
        Sets the value of the property 'suppress if blank'. If this property is enabled the section will not printed if it is blank.
        Parameters:
        newValue - The new value of the property 'suppress if blank'.
        Since:
        6.0
      • getSuppressIfBlank

        public boolean getSuppressIfBlank()
        Returns the value of the property 'suppress if blank'. If this property is enabled the section will not printed if it is blank.
        Returns:
        The value of the property 'suppress if blank'.
        Since:
        6.0
      • setSuppressIfBlankFormula

        public void setSuppressIfBlankFormula​(FormulaField newFormula)
        Sets the formula for the property 'suppress if blank'. If this property is enabled the section will not printed if it is blank.
        Parameters:
        newFormula - The new formula for the property 'suppress if blank'.
        Since:
        6.0
      • getSuppressIfBlankFormula

        public FormulaField getSuppressIfBlankFormula()
        Returns the formula for the property 'suppress if blank'. If this property is enabled the section will not printed if it is blank.
        Returns:
        The formula for the property 'suppress if blank'.
        Since:
        6.0
      • setUnderlayFollow

        public void setUnderlayFollow​(boolean newValue)
        Sets the value of the property 'underlay follow'. If this property is enabled the section will underlay the following section(s).
        Parameters:
        newValue - The new value of the property 'underlay follow'.
        Since:
        6.0
      • getUnderlayFollow

        public boolean getUnderlayFollow()
        Returns the value of the property 'underlay follow'. If this property is enabled the section will underlay the following section(s).
        Returns:
        The value of the property 'underlay follow'.
        Since:
        6.0
      • setUnderlayFollowFormula

        public void setUnderlayFollowFormula​(FormulaField newFormula)
        Sets the formula for the property 'underlay follow'. If this property is enabled the section will underlay the following section(s).
        Parameters:
        newFormula - The new formula for the property 'underlay follow'.
        Since:
        6.0
      • getUnderlayFollowFormula

        public FormulaField getUnderlayFollowFormula()
        Returns the formula for the property 'underlay follow'. If this property is enabled the section will underlay the following section(s).
        Returns:
        The formula for the property 'underlay follow'.
        Since:
        6.0
      • getReportElementsCount

        public int getReportElementsCount()
        Counts the number of Report Elements in this section and returns it.
        Specified by:
        getReportElementsCount in interface SimpleElementContainer
        Returns:
        The number of report elements in this section.
        Since:
        6.0
      • sortAndFilterSectionElements

        public java.util.List<Element> sortAndFilterSectionElements​(int accuracy,
                                                                    boolean write_sub,
                                                                    boolean makeFilteredList)
        FOR INTERNAL USE ONLY Method for XLS-Export: Labels, Fields, CrossTab, Line, Box and Subreport will be sorted Elements are filtered and sorted by their positions (up-down, then left-right) XLS-Export: makeFilteredList=true, because Z-order of elements must be kept Elements with negative x-coordinate will be not proceeded because of problem with IntObjectMap
        Parameters:
        accuracy - accuracy for horizontal positioning
        write_sub - if true subreports will be rendered.
        makeFilteredList - if true the list without not renderable elements will be produced.
        Returns:
        filtered list (elements in original order without suppressed elements)
      • indexOf

        public int indexOf()
        Returns the current index of this Section in this Area.
        Specified by:
        indexOf in class ReportComponent
        Returns:
        The current index of this section in this area.
        Throws:
        java.lang.IllegalStateException - Thrown if this section was not found in the parent area.
        Since:
        6.0
      • setReferences

        public void setReferences()
        FOR INTERNAL USE ONLY
        Specified by:
        setReferences in interface com.inet.report.ReferenceHolder
        Overrides:
        setReferences in class ReportComponent
      • resetReferences

        public void resetReferences()
        FOR INTERNAL USE ONLY
        Specified by:
        resetReferences in interface com.inet.report.ReferenceHolder
        Overrides:
        resetReferences in class ReportComponent
        Since:
        6.0
      • setUseColor

        public void setUseColor​(boolean newValue)
        Sets the value of the property 'useColor'. When this property is enabled the color defined in 'background color' is used.
        Parameters:
        newValue - The new value of the property 'useColor'.
        Since:
        6.1
      • getUseColor

        public boolean getUseColor()
        Returns the value of the property 'useColor'. When this property is enabled the color defined in 'background color' is used.
        Returns:
        The current value of the property 'useColor'.
        Since:
        6.1
      • getWidth

        public int getWidth()
        Returns the width of the section. As the width of a section can not vary it will return Engine.getReportProperties().getPaperWidth()-Engine.getReportProperties().getMarginLeft()-Engine.getReportProperties().getMarginRight() for all main reports.
        Only if this section belongs to a sub report the section width will not be the width of the page because it is limited to the width of the sub report.
        Overrides:
        getWidth in class ReportComponent
        Returns:
        The width of this section.
        Since:
        7.0
      • parseElement

        public NodeParser parseElement​(com.inet.report.parser.XMLTag group,
                                       java.lang.String tag,
                                       org.xml.sax.Attributes atts,
                                       java.util.Map<java.lang.String,​java.lang.Object> parserMap)
                                throws FatalParserException
        FOR INTERNAL USE ONLY FOR INTERNAL USE ONLY FOR INTERNAL USE ONLY Internal method for reading report XML

        Parses an XML node with the given information, and returns either a sub-element which was created as a result, or null if no sub-element was created, i.e. the information was applied to the ReportComponent itself. Note that the parsing is highly tolerant, i.e. exceptions are intercepted and suppressed if at all possible.

        Specified by:
        parseElement in interface NodeParser
        Overrides:
        parseElement in class Region
        Parameters:
        group - XMLTag of the current node to be parsed, or null if there is no such current group. An XMLTag is a group of nodes bundled together, usually it is a Properties node such as CommonProperties, BorderProperties, etc.
        tag - The XMLTag to be parsed
        atts - The set of attributes in the current XMLTag
        parserMap - The map of current Parser.
        Returns:
        The NodeParser sub-element if one needed to be created, or null if none was created.
        Throws:
        FatalParserException - if an exception occurs which causes the report to not be able to be read: causes the abortion of the reading of the report.
      • parseEndElement

        public void parseEndElement​(com.inet.report.parser.XMLTag group,
                                    java.lang.String tag,
                                    java.util.Map<java.lang.String,​java.lang.Object> parserMap)
                             throws FatalParserException
        FOR INTERNAL USE ONLY FOR INTERNAL USE ONLY Internal method for reading report XML

        Receive notification of the end of an XML tag.

        Specified by:
        parseEndElement in interface NodeParser
        Overrides:
        parseEndElement in class ReportComponent
        Parameters:
        group - XMLTag of the current node to be parsed, or null if there is no such current group.
        tag - The XMLTag to be parsed
        parserMap - The map of current Parser.
        Throws:
        FatalParserException - if an exception occurs which causes the report to not be able to be read: causes the abortion of the reading of the report.
      • parseText

        public void parseText​(java.lang.String text,
                              java.util.Map<java.lang.String,​java.lang.Object> parserMap)
        FOR INTERNAL USE ONLY FOR INTERNAL USE ONLY Internal method for reading report XML

        This method is called if text was encountered in the context of this node. (Examples would be a formula's text or a text element's text)

        Specified by:
        parseText in interface NodeParser
        Overrides:
        parseText in class ReportComponent
        Parameters:
        text - text encountered and to be stored
        parserMap - The map of current Parser.
      • addSignatureForm

        public SignatureForm addSignatureForm​(int xpos,
                                              int ypos,
                                              int objwidth,
                                              int objheight)
        Adds a new SignatureForm element to this Section. This signature element is useful for PDF export, only.
        Specified by:
        addSignatureForm in interface ElementContainer
        Parameters:
        xpos - the x position of the signature form element.
        ypos - the y position of the signature form element.
        objwidth - the width of the signature form element.
        objheight - the height of the signature form element.
        Returns:
        the created signature form element.
        Throws:
        java.lang.IllegalArgumentException - if the parameters x, y, width or height are negative
        Since:
        9.1
      • copyProperties

        public void copyProperties​(Section source)
        Some properties of the source section will be copied to this section.
        Parameters:
        source - section to be copied.
        Since:
        9.1
      • copyContent

        public void copyContent​(SimpleElementContainer source)
        Copies content and properties of the source container into this container.
        Specified by:
        copyContent in interface ElementContainer
        Parameters:
        source - The container thats content and properties should copied.
      • cleanForDataExport

        public int cleanForDataExport()
        All Elements that are not FieldElements will be removed from this Section. All suppressed elements apart from FormulaFields will be removed too. All remaining elements will be sorted on their x position.
        Returns:
        number of remaining elements in the section.
        Since:
        9.2
      • getSubComponents

        public java.util.List<Element> getSubComponents()
        Returns all ReportComponents that are descendants of this one. E.G. this will return all Element of a Section. But it's as well useful for CrossTabs or Text elements which have additional elements.
        Specified by:
        getSubComponents in class ReportComponent
        Returns:
        a list with all sub components which can be empty as well; will be null if the component has no descendants