org.apache.fop.area

## Class IDTracker

- java.lang.Object
- - org.apache.fop.area.IDTracker

    public class IDTracker
    extends Object

Used by the AreaTreeHandler to keep track of ID reference usage on a PageViewport level.

### Constructor Summary

Constructors
Constructor and Description
`IDTracker()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addUnresolvedIDRef(String idref, Resolvable res)` Add an Resolvable object with an unresolved idref
`boolean` `alreadyResolvedID(String id)` Check if an ID has already been resolved
`void` `associateIDWithPageViewport(String id, PageViewport pv)` Tie a PageViewport with an ID found on a child area of the PV.
`PageViewport` `getFirstPageViewportContaining(String id)` Get the first `PageViewport` containing content generated by the FO with the given `id`.
`PageViewport` `getLastPageViewportContaining(String id)` Get the last `PageViewport` containing content generated by the FO with the given `id`.
`List<PageViewport>` `getPageViewportsContainingID(String id)` Get the list of page viewports that have an area with a given id.
`void` `replacePageViewPort(PageViewport oldPageViewPort, PageViewport newPageViewPort)` Replace all id locations pointing to the old page view port with a new one.
`void` `signalIDProcessed(String id)` Signals that all areas for the formatting object with the given ID have been generated.
`void` `signalPendingID(String id)` This method tie an ID to the areaTreeHandler until this one is ready to be processed.
`void` `tryIDResolution(PageViewport pv)` Tries to resolve all unresolved ID references on the given page.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### IDTracker

    public IDTracker()

### Method Detail

#### associateIDWithPageViewport

    public void associateIDWithPageViewport(String id,
                                            PageViewport pv)

Tie a PageViewport with an ID found on a child area of the PV. Note that an area with a given ID may be on more than one PV, hence an ID may have more than one PV associated with it.

Parameters:
  `id` - the property ID of the area
  `pv` - a page viewport that contains the area with this ID

#### signalPendingID

    public void signalPendingID(String id)

This method tie an ID to the areaTreeHandler until this one is ready to be processed. This is used in page-number-citation-last processing so we know when an id can be resolved.

Parameters:
  `id` - the id of the object being processed

#### signalIDProcessed

    public void signalIDProcessed(String id)

Signals that all areas for the formatting object with the given ID have been generated. This is used to determine when page-number-citation-last ref-ids can be resolved.

Parameters:
  `id` - the id of the formatting object which was just finished

#### alreadyResolvedID

    public boolean alreadyResolvedID(String id)

Check if an ID has already been resolved

Parameters:
  `id` - the id to check
Returns:
  true if the ID has been resolved

#### tryIDResolution

    public void tryIDResolution(PageViewport pv)

Tries to resolve all unresolved ID references on the given page.

Parameters:
  `pv` - page viewport whose ID refs to resolve

#### getPageViewportsContainingID

    public List<PageViewport> getPageViewportsContainingID(String id)

Get the list of page viewports that have an area with a given id.

Parameters:
  `id` - the id to lookup
Returns:
  the list of PageViewports

#### getFirstPageViewportContaining

    public PageViewport getFirstPageViewportContaining(String id)

Get the first `PageViewport` containing content generated by the FO with the given `id`.

Parameters:
  `id` - the id
Returns:
  the first `PageViewport` for the id; `null` if no matching `PageViewport` was found

#### getLastPageViewportContaining

    public PageViewport getLastPageViewportContaining(String id)

Get the last `PageViewport` containing content generated by the FO with the given `id`.

Parameters:
  `id` - the id
Returns:
  the last `PageViewport` for the id; `null` if no matching `PageViewport` was found

#### addUnresolvedIDRef

    public void addUnresolvedIDRef(String idref,
                                   Resolvable res)

Add an Resolvable object with an unresolved idref

Parameters:
  `idref` - the idref whose target id has not yet been located
  `res` - the Resolvable object needing the idref to be resolved

#### replacePageViewPort

    public void replacePageViewPort(PageViewport oldPageViewPort,
                                    PageViewport newPageViewPort)

Replace all id locations pointing to the old page view port with a new one. This is necessary when a layouted page is replaced with a new one (e.g. last page handling).

Parameters:
  `oldPageViewPort` - old page view port
  `newPageViewPort` - new page view port