org.apache.cocoon.transformation.pagination
Class Paginator

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.cocoon.xml.AbstractXMLProducer
          extended by org.apache.cocoon.xml.AbstractXMLPipe
              extended by org.apache.cocoon.transformation.AbstractTransformer
                  extended by org.apache.cocoon.transformation.pagination.Paginator
All Implemented Interfaces:
Poolable, Recyclable, Disposable, Component, LogEnabled, Serviceable, CacheableProcessingComponent, SitemapModelComponent, Transformer, XMLPipe, XMLProducer, XMLConsumer, ContentHandler, LexicalHandler

public class Paginator
extends AbstractTransformer
implements Serviceable, Disposable, CacheableProcessingComponent

A paginating transformer.

Version:
CVS $Id: Paginator.html 1304258 2012-03-23 10:09:27Z ilgrosso $
Author:
Stefano Mazzocchi, Stephan Michels, Boon Hian Tek

Field Summary
static String PAGINATE_PREFIX
           
static String PAGINATE_PREFIX_TOKEN
           
static String PAGINATE_URI
           
 
Fields inherited from class org.apache.cocoon.xml.AbstractXMLProducer
contentHandler, EMPTY_CONTENT_HANDLER, lexicalHandler, xmlConsumer
 
Fields inherited from interface org.apache.cocoon.transformation.Transformer
ROLE
 
Constructor Summary
Paginator()
           
 
Method Summary
static void addPaginateTags(Integer[] rangeLinks, int unitLinks, int currentPage, int totalPages, String requestURI, AbstractTransformer saxTransformer)
           
 void characters(char[] c, int start, int len)
          Receive notification of character data.
static String cleanURI(String uri, int current)
          Removes the pagination encoding from the URI by removing the page number and the previous and next character.
 void comment(char[] ch, int start, int len)
          Report an XML comment anywhere in the document.
 void dispose()
          Dispose this component.
static String encodeURI(String uri, int current, int next)
          Encode the next page in the given URI.
 void endCDATA()
          Report the end of a CDATA section.
 void endDTD()
          Report the end of DTD declarations.
 void endElement(String uri, String loc, String raw)
          Receive notification of the end of an element.
 void endEntity(String name)
          Report the end of an entity.
 Serializable getKey()
          Generate the unique key.
 SourceValidity getValidity()
          Generate the validity object.
 void ignorableWhitespace(char[] c, int start, int len)
          Receive notification of ignorable whitespace in element content.
 void processingInstruction(String target, String data)
          Receive notification of a processing instruction.
 void recycle()
          Recycle the producer by removing references, and resetting handlers to null (empty) implementations.
 void service(ServiceManager manager)
          Set the current ServiceManager instance used by this Serviceable.
 void setup(SourceResolver resolver, Map objectModel, String src, Parameters par)
          Setup the transformer.
 void skippedEntity(String name)
          Receive notification of a skipped entity.
 void startCDATA()
          Report the start of a CDATA section.
 void startDTD(String name, String publicId, String systemId)
          Report the start of DTD declarations, if any.
 void startElement(String uri, String loc, String raw, Attributes a)
          Receive notification of the beginning of an element.
 void startEntity(String name)
          Report the beginning of an entity.
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLPipe
endDocument, endPrefixMapping, setDocumentLocator, startDocument, startPrefixMapping
 
Methods inherited from class org.apache.cocoon.xml.AbstractXMLProducer
setConsumer, setContentHandler, setLexicalHandler
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.xml.sax.ContentHandler
endDocument, endPrefixMapping, setDocumentLocator, startDocument, startPrefixMapping
 
Methods inherited from interface org.apache.cocoon.xml.XMLProducer
setConsumer
 

Field Detail

PAGINATE_URI

public static final String PAGINATE_URI
See Also:
Constant Field Values

PAGINATE_PREFIX

public static final String PAGINATE_PREFIX
See Also:
Constant Field Values

PAGINATE_PREFIX_TOKEN

public static final String PAGINATE_PREFIX_TOKEN
See Also:
Constant Field Values
Constructor Detail

Paginator

public Paginator()
Method Detail

service

public void service(ServiceManager manager)
             throws ServiceException
Set the current ServiceManager instance used by this Serviceable.

Specified by:
service in interface Serviceable
Parameters:
manager - Description of the Parameter
Throws:
ServiceException

dispose

public void dispose()
Dispose this component.

Specified by:
dispose in interface Disposable

setup

public void setup(SourceResolver resolver,
                  Map objectModel,
                  String src,
                  Parameters par)
           throws ProcessingException,
                  SAXException,
                  IOException
Setup the transformer.

Specified by:
setup in interface SitemapModelComponent
Throws:
ProcessingException
SAXException
IOException

recycle

public void recycle()
Description copied from class: AbstractXMLProducer
Recycle the producer by removing references, and resetting handlers to null (empty) implementations.

Specified by:
recycle in interface Recyclable
Overrides:
recycle in class AbstractXMLProducer

getKey

public Serializable getKey()
Generate the unique key. This key must be unique inside the space of this component. This method must be invoked before the generateValidity() method.

Specified by:
getKey in interface CacheableProcessingComponent
Returns:
The generated key or null if the component is currently not cacheable.

getValidity

public SourceValidity getValidity()
Generate the validity object. Before this method can be invoked the generateKey() method must be invoked.

Specified by:
getValidity in interface CacheableProcessingComponent
Returns:
The generated validity object or null if the component is currently not cacheable.

startElement

public void startElement(String uri,
                         String loc,
                         String raw,
                         Attributes a)
                  throws SAXException
Receive notification of the beginning of an element.

Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class AbstractXMLPipe
Parameters:
uri - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
loc - The local name (without prefix), or the empty string if Namespace processing is not being performed.
raw - The raw XML 1.0 name (with prefix), or the empty string if raw names are not available.
a - The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.
Throws:
SAXException

endElement

public void endElement(String uri,
                       String loc,
                       String raw)
                throws SAXException
Receive notification of the end of an element.

Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class AbstractXMLPipe
Parameters:
uri - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
loc - The local name (without prefix), or the empty string if Namespace processing is not being performed.
raw - The raw XML 1.0 name (with prefix), or the empty string if raw names are not available.
Throws:
SAXException

addPaginateTags

public static void addPaginateTags(Integer[] rangeLinks,
                                   int unitLinks,
                                   int currentPage,
                                   int totalPages,
                                   String requestURI,
                                   AbstractTransformer saxTransformer)
                            throws SAXException
Throws:
SAXException

characters

public void characters(char[] c,
                       int start,
                       int len)
                throws SAXException
Receive notification of character data.

Specified by:
characters in interface ContentHandler
Overrides:
characters in class AbstractXMLPipe
Parameters:
c - The characters from the XML document.
start - The start position in the array.
len - The number of characters to read from the array.
Throws:
SAXException

ignorableWhitespace

public void ignorableWhitespace(char[] c,
                                int start,
                                int len)
                         throws SAXException
Receive notification of ignorable whitespace in element content.

Specified by:
ignorableWhitespace in interface ContentHandler
Overrides:
ignorableWhitespace in class AbstractXMLPipe
Parameters:
c - The characters from the XML document.
start - The start position in the array.
len - The number of characters to read from the array.
Throws:
SAXException

processingInstruction

public void processingInstruction(String target,
                                  String data)
                           throws SAXException
Receive notification of a processing instruction.

Specified by:
processingInstruction in interface ContentHandler
Overrides:
processingInstruction in class AbstractXMLPipe
Parameters:
target - The processing instruction target.
data - The processing instruction data, or null if none was supplied.
Throws:
SAXException

skippedEntity

public void skippedEntity(String name)
                   throws SAXException
Receive notification of a skipped entity.

Specified by:
skippedEntity in interface ContentHandler
Overrides:
skippedEntity in class AbstractXMLPipe
Parameters:
name - The name of the skipped entity. If it is a parameter entity, the name will begin with '%'.
Throws:
SAXException

startDTD

public void startDTD(String name,
                     String publicId,
                     String systemId)
              throws SAXException
Report the start of DTD declarations, if any.

Specified by:
startDTD in interface LexicalHandler
Overrides:
startDTD in class AbstractXMLPipe
Parameters:
name - The document type name.
publicId - The declared public identifier for the external DTD subset, or null if none was declared.
systemId - The declared system identifier for the external DTD subset, or null if none was declared.
Throws:
SAXException

endDTD

public void endDTD()
            throws SAXException
Report the end of DTD declarations.

Specified by:
endDTD in interface LexicalHandler
Overrides:
endDTD in class AbstractXMLPipe
Throws:
SAXException

startEntity

public void startEntity(String name)
                 throws SAXException
Report the beginning of an entity.

Specified by:
startEntity in interface LexicalHandler
Overrides:
startEntity in class AbstractXMLPipe
Parameters:
name - The name of the entity. If it is a parameter entity, the name will begin with '%'.
Throws:
SAXException

endEntity

public void endEntity(String name)
               throws SAXException
Report the end of an entity.

Specified by:
endEntity in interface LexicalHandler
Overrides:
endEntity in class AbstractXMLPipe
Parameters:
name - The name of the entity that is ending.
Throws:
SAXException

startCDATA

public void startCDATA()
                throws SAXException
Report the start of a CDATA section.

Specified by:
startCDATA in interface LexicalHandler
Overrides:
startCDATA in class AbstractXMLPipe
Throws:
SAXException

endCDATA

public void endCDATA()
              throws SAXException
Report the end of a CDATA section.

Specified by:
endCDATA in interface LexicalHandler
Overrides:
endCDATA in class AbstractXMLPipe
Throws:
SAXException

comment

public void comment(char[] ch,
                    int start,
                    int len)
             throws SAXException
Report an XML comment anywhere in the document.

Specified by:
comment in interface LexicalHandler
Overrides:
comment in class AbstractXMLPipe
Parameters:
ch - An array holding the characters in the comment.
start - The starting position in the array.
len - The number of characters to use from the array.
Throws:
SAXException

cleanURI

public static String cleanURI(String uri,
                              int current)
Removes the pagination encoding from the URI by removing the page number and the previous and next character.


encodeURI

public static String encodeURI(String uri,
                               int current,
                               int next)
Encode the next page in the given URI. First tries to use the existing encoding by replacing the current page number, but if the current encoding is not found it appends "(xx)" to the filename (before the file extention, if any) where "xx" is the next page value.



Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.