com.ihr.xbrl.om.formula.filters

## Interface XBRLDelayedCompilationFilter

- All Superinterfaces:
    XBRLFormulaFilter
  All Known Subinterfaces:
    XBRLLogicalOpFilter
  All Known Implementing Classes:
    XBRLAncestorFilter, XBRLAndFilter, XBRLAspectCoverFilter, XBRLConceptBalanceFilter, XBRLConceptCustomAttributeFilter, XBRLConceptDataTypeFilter, XBRLConceptFilterAbstract, XBRLConceptNameFilter, XBRLConceptPeriodTypeFilter, XBRLConceptRelationFilter, XBRLConceptSubstitutionGroupFilter, XBRLDimensionFilterAbstract, XBRLExplicitDimensionFilter, XBRLFormulaFilterBase, XBRLGeneralFilter, XBRLGeneralMeasuresFilter, XBRLIdentifierFilter, XBRLLocationFilter, XBRLMatchAbstractFilter, XBRLMatchConceptFilter, XBRLMatchDimensionFilter, XBRLMatchEntityIdentifierFilter, XBRLMatchLocationFilter, XBRLMatchNonXDTScenarioFilter, XBRLMatchNonXDTSegmentFilter, XBRLMatchPeriodFilter, XBRLMatchScenarioFilter, XBRLMatchSegmentFilter, XBRLMatchUnitFilter, XBRLOrFilter, XBRLParentFilter, XBRLPeriodEndFilter, XBRLPeriodFilter, XBRLPeriodFilterAbstract, XBRLPeriodForeverFilter, XBRLPeriodInstantDurationFilter, XBRLPeriodInstantFilter, XBRLPeriodStartFilter, XBRLRegExpIdentifierFilter, XBRLRegExpSchemeFilter, XBRLRelativeFilter, XBRLScenarioFilter, XBRLSegmentFilter, XBRLSiblingFilter, XBRLSingleMeasureFilter, XBRLSpecificIdentifierFilter, XBRLSpecificSchemeFilter, XBRLTypedDimensionFilter, XBRLValueNilFilter, XBRLValuePrecisionFilter

      public interface XBRLDelayedCompilationFilter
      extends XBRLFormulaFilter

  When a filter depends on another filter that is not already compiled (typically this is an OR filter that depends on an AND filter) and nested structures between them. Filters are compiled in a loop.

  Those filters must implement this interface that controls when the loop ends.

  Author:
    Ignacio

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `compileFilter()` This is the method that will be called by the Formula Processor in order to compile the filter XPath expression.
    `boolean` | `isCompiled()` There may be nested dependencies between 'and' and 'or' filters.

    - ### Methods inherited from interface com.ihr.xbrl.om.formula.filters.XBRLFormulaFilter

      `collectVariables, getFilterWeight, getLabel, getRelatedAspect, getXPathTerm`

- - ### Method Detail

    - #### compileFilter

          boolean compileFilter()
                                throws XFValidationException

      This is the method that will be called by the Formula Processor in order to compile the filter XPath expression.
      Returns:
        true if the filter has been successfully compiled. False if the filter requires further compilation.
      Throws:
        `XFValidationException` - the XF validation exception

    - #### isCompiled

          boolean isCompiled()

      There may be nested dependencies between 'and' and 'or' filters. so resources may not be available in the form of a filter during the filter compilation time.

      If this happens (resources not available) then this flag is marked as true (resource not compiled) and the XPath expression is not generated.

      During compilation phase of 'and' and 'or' a loop is created until all filters are compiled.

      Returns:
        true if the filter XPath expression has been generated completely