Class Group

  • All Implemented Interfaces:
    NodeParser, com.inet.report.ReferencedObject, com.inet.report.ReferenceHolder, java.io.Serializable, java.lang.Cloneable

    public class Group
    extends java.lang.Object
    implements java.io.Serializable, com.inet.report.ReferenceHolder, com.inet.report.ReferencedObject, NodeParser, java.lang.Cloneable
    This class represents a grouping and disposes references to group header- and group footer areas. Note that this class represents groupings only, not the standard page-, report- and detail- area pairs (header and footer areas). If you need to set the properties of a grouping, i.e. the field for sorting, use the methods of this class.

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

      • SORT_ASCENDING_ORDER

        public static final int SORT_ASCENDING_ORDER
        Constant for ascending order sort direction.
        See Also:
        Constant Field Values
      • SORT_DESCENDING_ORDER

        public static final int SORT_DESCENDING_ORDER
        Constant for descending order sort direction.
        See Also:
        Constant Field Values
      • SORT_ORIGINAL_ORDER

        public static final int SORT_ORIGINAL_ORDER
        Constant for original order sort direction. This sort order keeps the same values together.
        See Also:
        Constant Field Values
      • SORT_SPECIFIED_ORDER

        public static final int SORT_SPECIFIED_ORDER
        Constant for specified order sort direction.
        See Also:
        Constant Field Values
      • SORT_SUMMARY_ORDER

        public static final int SORT_SUMMARY_ORDER
        Constant for sort by summaries order sort direction.
        See Also:
        Constant Field Values
      • SORT_ORIGINAL_ORDER_2

        public static final int SORT_ORIGINAL_ORDER_2
        Constant for really original order sort direction. This collect only the same values located nearby, and begins a new group whenever the value changes in the group field.
        See Also:
        Constant Field Values
      • SORT_ASCENDING_ORDER_ALPHA_NUMERIC

        public static final int SORT_ASCENDING_ORDER_ALPHA_NUMERIC
        Constant for ascending order sort direction, numeric parts will be sorted by their number value rather than alphabetical.
        See Also:
        Constant Field Values
      • SORT_DESCENDING_ORDER_ALPHA_NUMERIC

        public static final int SORT_DESCENDING_ORDER_ALPHA_NUMERIC
        Constant for descending order sort direction, numeric parts will be sorted by their number value rather than alphabetical
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_DAY

        public static final int PRINT_FOR_EACH_DAY
        Constant for 'section will be printed for each day'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_WEEK

        public static final int PRINT_FOR_EACH_WEEK
        Constant for 'section will be printed for each week'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_TWO_WEEKS

        public static final int PRINT_FOR_EACH_TWO_WEEKS
        Constant for 'section will be printed for each two weeks'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_HALF_MONTH

        public static final int PRINT_FOR_EACH_HALF_MONTH
        Constant for 'section will be printed for each half month'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_MONTH

        public static final int PRINT_FOR_EACH_MONTH
        Constant for 'section will be printed for each month'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_QUAURTER

        public static final int PRINT_FOR_EACH_QUAURTER
        Constant for 'section will be printed for each quarter'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_HALF_YEAR

        public static final int PRINT_FOR_EACH_HALF_YEAR
        Constant for 'section will be printed for each half year'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_YEAR

        public static final int PRINT_FOR_EACH_YEAR
        Constant for 'section will be printed for each year'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_SECOND

        public static final int PRINT_FOR_EACH_SECOND
        Constant for 'section will be printed for each second'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_MINUTE

        public static final int PRINT_FOR_EACH_MINUTE
        Constant for 'section will be printed for each minute'. Use only if type of the database field for sorting is datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_HOUR

        public static final int PRINT_FOR_EACH_HOUR
        Constant for 'section will be printed for each hour'. Use only if type of the database field for sorting is datetime.
        See Also:
        Constant Field Values
      • PRINT_FOR_EACH_AMPM

        public static final int PRINT_FOR_EACH_AMPM
        Constant for 'section will be printed for each am/pm'. Use only if type of the database field for sorting is date or datetime.
        See Also:
        Constant Field Values
      • PRINT_ON_EACH_CHANGE

        public static final int PRINT_ON_EACH_CHANGE
        Constant for 'section will be printed on each change'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_ON_EACH_CHANGE_TO_YES

        public static final int PRINT_ON_EACH_CHANGE_TO_YES
        Constant for 'section will be printed on each change to yes'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_ON_EACH_CHANGE_TO_NO

        public static final int PRINT_ON_EACH_CHANGE_TO_NO
        Constant for 'section will be printed on each change to no'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_ALWAYS_IF_YES

        public static final int PRINT_ALWAYS_IF_YES
        Constant for 'section will be printed always if yes'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_ALWAYS_IF_NO

        public static final int PRINT_ALWAYS_IF_NO
        Constant for 'section will be printed always if no'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_IF_NEXT_VALUE_IS_YES

        public static final int PRINT_IF_NEXT_VALUE_IS_YES
        Constant for 'section will be printed if next value is yes'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • PRINT_IF_NEXT_VALUE_IS_NO

        public static final int PRINT_IF_NEXT_VALUE_IS_NO
        Constant for 'section will be printed if next value is no'. Use only if type of the database field for sorting is boolean.
        See Also:
        Constant Field Values
      • CUSTOMIZE_GROUP_NAME_FIELD_DISABLED

        public static final int CUSTOMIZE_GROUP_NAME_FIELD_DISABLED
        Constant for 'disable customize group name field'.
        See Also:
        Constant Field Values
      • CUSTOMIZE_GROUP_NAME_FIELD_ENABLED

        public static final int CUSTOMIZE_GROUP_NAME_FIELD_ENABLED
        Constant for 'enable customize group name field' and choose from existing field.
        See Also:
        Constant Field Values
      • CUSTOMIZE_GROUP_NAME_FIELD_ENABLED_WITH_FM

        public static final int CUSTOMIZE_GROUP_NAME_FIELD_ENABLED_WITH_FM
        Constant for 'enable customize group name field' and use a formula as group name.
        See Also:
        Constant Field Values
      • GROUP_TYPE_REPORT

        public static final int GROUP_TYPE_REPORT
        FOR INTERNAL USE ONLY
        Since:
        6.0
        See Also:
        Constant Field Values
      • GROUP_TYPE_CHART

        public static final int GROUP_TYPE_CHART
        FOR INTERNAL USE ONLY
        Since:
        6.0
        See Also:
        Constant Field Values
      • GROUP_TYPE_CROSS_TAB

        public static final int GROUP_TYPE_CROSS_TAB
        FOR INTERNAL USE ONLY
        Since:
        6.0
        See Also:
        Constant Field Values
    • Method Detail

      • toString

        public java.lang.String toString()
        Returns a string representation of this Group. The returned String will contain the type of this group, the sort order and group field name.
        Overrides:
        toString in class java.lang.Object
        Returns:
        a String representation of this Group.
        Since:
        4.0
      • getHeader

        public Area getHeader()
        Returns the group header area. The header area is the first area of records collected in a group.
        Returns:
        The group header area.
        Since:
        6.0
        See Also:
        Area
      • getFooter

        public Area getFooter()
        Returns the group footer area. The header area is the last area of records collected in a group.
        Returns:
        The group footer area.
        Since:
        6.0
        See Also:
        Area
      • setGroupDirectionFormula

        public void setGroupDirectionFormula​(FormulaField formula)
                                      throws ReportException
        Sets the formula of sort direction of current group. This formula must be of type FormulaField.FORMULA_PROPERTY and must return a positive int value. Allowed range of values 0 for SORT_ASCENDING_ORDER, 1 for SORT_DESCENDING_ORDER, 2 for SORT_ORIGINAL_ORDER. Other formula will be ignored.
        Parameters:
        formula - for sort direction or null to remove the sort direction formula.
        Throws:
        ReportException - Wrong formula, formula type or return value of formula
        Since:
        6.0
        See Also:
        getGroupDirectionFormula()
      • getField

        public Field getField()
        Gets the field definition element.
        Returns:
        Field The current value of the 'field' property.
        Since:
        6.0
      • setField

        public void setField​(Field newField)
        Sets the field definition element.
        Parameters:
        newField - The new field element of the property 'field'.
        Throws:
        java.lang.IllegalArgumentException - is thrown when newField is null.
        Since:
        6.0
      • setKeepTogether

        public void setKeepTogether​(int keepGroupTogether)
        Use this property to specify the number of records to keep together in this group. For example: Set this value to 3 to make sure that the first 3 records in this group are displayed on the same page.
        Parameters:
        keepGroupTogether - The number of record to keep together in this group. Use the value '-1' to keep all records of this group together.
        Since:
        6.0
        See Also:
        getKeepTogether()
      • getKeepTogether

        public int getKeepTogether()
        Returns the number of records that are kept together in this group.
        Returns:
        The number of records that are kept together in this group.
        Since:
        6.0
        See Also:
        setKeepTogether(int)
      • setRepeatGroupHeader

        public void setRepeatGroupHeader​(boolean value)
        Use this property to specify whether the group should be repeated on each new page (true) or not (false).
        Parameters:
        value - The new value of the property 'repeat group header'. Set to true if the group header should be repeated on each new page, else set to false.
        Since:
        6.0
        See Also:
        setRepeatGroupHeaderWithinFooter(boolean), getRepeatGroupHeader()
      • getRepeatGroupHeader

        public boolean getRepeatGroupHeader()
        Use this property to specify whether the group should be repeated on each new page (true) or not (false).
        Returns:
        The value of the property 'repeat group header'. Returns true if the group header should be repeated on each new page, else returns false.
        Since:
        6.0
        See Also:
        setRepeatGroupHeader(boolean)
      • setRepeatGroupHeaderWithinFooter

        public void setRepeatGroupHeaderWithinFooter​(boolean value)
        Repeat the group header on a new page even when the group display is currently in its footer. By default a group header will only be repeated on a new page when the end of the page is inside the detail data of the group – this causes this behavior to be overridden. This option only has an effect in combination with the option RepeatGroupHeader.
        Parameters:
        value - The new value of the option.
        Since:
        6.0
        See Also:
        setRepeatGroupHeader(boolean), getRepeatGroupHeaderWithinFooter()
      • getRepeatGroupHeaderWithinFooter

        public boolean getRepeatGroupHeaderWithinFooter()
        Get the RepeatGroupHeaderWithinFooter flag.
        Returns:
        a boolean.
        Since:
        6.0
        See Also:
        setRepeatGroupHeaderWithinFooter(boolean)
      • getGroupNameFormula

        public FormulaField getGroupNameFormula()
        Returns the formula which specify the name of the group.
        Returns:
        The formula field for specifying the groupname.
        Since:
        6.0
        See Also:
        getCustomizeGroupNameField()
      • setGroupNameDbField

        public void setGroupNameDbField​(DatabaseField dbField)
        If property 'customize groupname field' is set to CUSTOMIZE_GROUP_NAME_FIELD_ENABLED a databasefield is needed for rendering. Set the database field with this method.
        Parameters:
        dbField - The database field which specify the name of the group
        Since:
        6.0
        See Also:
        CUSTOMIZE_GROUP_NAME_FIELD_ENABLED, setCustomizeGroupNameField(int)
      • getGroupNameDbField

        public DatabaseField getGroupNameDbField()
        Returns the database field which specify the name of the group.
        Returns:
        The database field for specifying the groupname.
        Since:
        6.0
        See Also:
        getCustomizeGroupNameField()
      • setHierarchicalGrouping

        public void setHierarchicalGrouping​(boolean enabled,
                                            Field parentField,
                                            int indentation)
                                     throws ReportException
        Enable or disable the property 'hierarchical grouping' with this method. Hierarchical grouping arranges your data in the report to show hierarchical relationships. All data stay in the table but indentations of groups of data displays the relationsships between them. Use parentField and indentation for individual arrangement of the hierarchy.
        Parameters:
        enabled - true if hierarchical grouping should be enabled, else false.
        parentField - The field which should be the reference for grouping of this group. Note that the field of this group and parantId field should have the same type. The value is ignored if parameter enabled is false.
        indentation - The depth of the indent of groups of data in twips. The value is ignored if parameter enabled is false.
        Throws:
        ReportException - if parent field is null or the field of this group and parent field not on the same type.
        Since:
        6.0
      • getHierarchicalGrouping

        public boolean getHierarchicalGrouping()
        Returns if the property 'hierarchical grouping' is enabled or disabled.
        Returns:
        true if this group has a hierarchical sorting otherwise false.
        Since:
        6.0
      • setIndentation

        public void setIndentation​(int indentation)
        Sets the depth of the indentation of the data groups.
        Parameters:
        indentation - The depth of the indent of groups of data in twips.
        Throws:
        java.lang.IllegalArgumentException - if indentation is negative
        Since:
        6.0
      • getIndentation

        public int getIndentation()
        Returns the depth of the indentation of the data groups.
        Returns:
        The depth in twips.
        Since:
        6.0
      • getParentField

        public Field getParentField()
        Returns the reference field for grouping of the instanceId field.
        Returns:
        The field which should be the reference for grouping of the instanceId field.
        Since:
        6.0
      • isGroup

        public boolean isGroup()
        Returns true if this group is a GroupAreaPair and false if this group is a Detail-, Page- or ReportAreaPair.
        Returns:
        true if this is a group, false if this is the report header/footer.
        Since:
        6.0
      • indexOf

        public int indexOf()
        Returns the position of this group in report group set.
        Returns:
        the 1-based index.
        Since:
        6.0
      • getGroupNameField

        public GroupField getGroupNameField()
        Returns the group name field of this group. This field complies the group name and can be used by FieldElement to display the group name.
        Returns:
        the group name field.
        Since:
        6.0
      • getSpecifiedOrder

        public SpecifiedOrder getSpecifiedOrder()
        Returns the specified sorting order for this group. Specified sorting allows you to specify a condition for each group, which values are to be added to this group.
        Returns:
        SpecifiedOrder contains the grouping conditions.
        Since:
        6.0
        See Also:
        SpecifiedOrder
      • setSpecifiedOrder

        public void setSpecifiedOrder​(SpecifiedOrder order)
        Set specified sorting order for this group. Specified sorting allows you to specify a condition for each group, which values are to be added to this group.
        Parameters:
        order - is SpecifiedOrder Object contains the grouping conditions for this group.
        Since:
        6.0
        See Also:
        SpecifiedOrder
      • getBySummaryOrder

        public BySummaryOrder getBySummaryOrder()
        Returns the BySummary sorting order for this group BySummary sorting allows you to sort the groups by our values of aggregate function.
        Returns:
        BySummaryOrder Object contains SummaryField of aggregate function and sort direction.
        Since:
        6.0
        See Also:
        BySummaryOrder
      • setBySummaryOrder

        public void setBySummaryOrder​(BySummaryOrder order)
        Set BySummary sorting order for this group. BySummary sorting allows you to sort the groups by our values of aggregate function.
        Parameters:
        order - is BySummaryOrder Object contains SummaryField of aggregate function and sort direction.
        Since:
        6.0
        See Also:
        BySummaryOrder
      • addReferenceHolder

        public final void addReferenceHolder​(com.inet.report.ReferenceHolder holder)
        FOR INTERNAL USE ONLY
        Specified by:
        addReferenceHolder in interface com.inet.report.ReferencedObject
        Since:
        6.0
      • getReferenceHolders

        public final com.inet.report.ReferenceHolder[] getReferenceHolders()
        FOR INTERNAL USE ONLY
        Specified by:
        getReferenceHolders in interface com.inet.report.ReferencedObject
      • getReferenceHolderCount

        public final int getReferenceHolderCount()
        FOR INTERNAL USE ONLY
        Specified by:
        getReferenceHolderCount in interface com.inet.report.ReferencedObject
      • getRealReferenceCount

        public final int getRealReferenceCount()
        FOR INTERNAL USE ONLY
        Specified by:
        getRealReferenceCount in interface com.inet.report.ReferencedObject
      • removeReferenceHolder

        public final void removeReferenceHolder​(com.inet.report.ReferenceHolder holder)
        FOR INTERNAL USE ONLY
        Specified by:
        removeReferenceHolder in interface com.inet.report.ReferencedObject
        Since:
        6.0
      • addReferencedObject

        public final void addReferencedObject​(com.inet.report.ReferencedObject reference)
        FOR INTERNAL USE ONLY
        Specified by:
        addReferencedObject in interface com.inet.report.ReferenceHolder
        Since:
        6.0
      • getReferencedObjects

        public final com.inet.report.ReferencedObject[] getReferencedObjects()
        FOR INTERNAL USE ONLY
        Specified by:
        getReferencedObjects in interface com.inet.report.ReferenceHolder
      • getRealReferencedObjectCount

        public final int getRealReferencedObjectCount()
        FOR INTERNAL USE ONLY
        Specified by:
        getRealReferencedObjectCount in interface com.inet.report.ReferenceHolder
        Since:
        6.0
      • getReferencedObjectCount

        public final int getReferencedObjectCount()
        FOR INTERNAL USE ONLY
        Specified by:
        getReferencedObjectCount in interface com.inet.report.ReferenceHolder
      • removeReferencedObject

        public final void removeReferencedObject​(com.inet.report.ReferencedObject reference)
        FOR INTERNAL USE ONLY
        Specified by:
        removeReferencedObject in interface com.inet.report.ReferenceHolder
        Since:
        6.0
      • resetReferences

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

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

        public void setGroupType​(int groupType)
        FOR INTERNAL USE ONLY Setzt den Typ der Gruppe. Handelt es sich um eine normale Gruppe des Berichtes oder um eine "lokale" Gruppe im Chart oder in der Crosstab.
        Parameters:
        groupType - der Typ der Gruppe
        Since:
        6.0
        See Also:
        getGroupType(), GROUP_TYPE_REPORT, GROUP_TYPE_CHART, GROUP_TYPE_CROSS_TAB
      • 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 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
        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.
      • parseText

        public void parseText​(java.lang.String text,
                              java.util.Map<java.lang.String,​java.lang.Object> parserMap)
        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
        Parameters:
        text - text encountered and to be stored
        parserMap - The map of current Parser.
      • 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 Internal method for reading report XML

        Receive notification of the end of an XML tag.

        Specified by:
        parseEndElement in interface NodeParser
        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.
      • isDOMParser

        public boolean isDOMParser()
        FOR INTERNAL USE ONLY Internal method for reading report XML

        Returns whether this node is to be read via a DOM parser.

        Specified by:
        isDOMParser in interface NodeParser
        Returns:
        true if this node is to be read via a DOM parser, false otherwise.
      • parseDOM

        public void parseDOM​(org.w3c.dom.Node node,
                             java.util.Map<java.lang.String,​java.lang.Object> parserMap)
                      throws FatalParserException
        FOR INTERNAL USE ONLY Internal method for reading report XML

        Parses the node.

        Specified by:
        parseDOM in interface NodeParser
        Parameters:
        node - the node
        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.