org.opencms.staticexport
Class CmsLinkProcessor

java.lang.Object
  extended by org.htmlparser.visitors.NodeVisitor
      extended by org.opencms.util.CmsHtmlParser
          extended by org.opencms.staticexport.CmsLinkProcessor
All Implemented Interfaces:
I_CmsHtmlNodeVisitor

public class CmsLinkProcessor
extends CmsHtmlParser

Implements the HTML parser node visitor pattern to exchange all links on the page.

Since:
6.0.0
Version:
$Revision: 1.59 $
Author:
Alexander Kandzior

Field Summary
static java.lang.String ATTRIBUTE_HREF
          Constant for the attribute name.
static java.lang.String ATTRIBUTE_SRC
          Constant for the attribute name.
static java.lang.String ATTRIBUTE_VALUE
          Constant for the attribute name.
static java.lang.String HTML_END
          HTML end.
static java.lang.String HTML_START
          HTML start.
static java.lang.String TAG_AREA
          Constant for the tag name.
static java.lang.String TAG_EMBED
          Constant for the tag name.
static java.lang.String TAG_PARAM
          Constant for the tag name.
 
Fields inherited from class org.opencms.util.CmsHtmlParser
m_echo, m_noAutoCloseTags, m_result, TAG_ARRAY, TAG_LIST
 
Constructor Summary
CmsLinkProcessor(CmsObject cms, CmsLinkTable linkTable, java.lang.String encoding, java.lang.String relativePath)
          Creates a new link processor.
 
Method Summary
static java.lang.String escapeLink(java.lang.String source)
          Escapes all &, e.g. replaces them with a &.
 CmsLinkTable getLinkTable()
          Returns the link table this link processor was initialized with.
protected  void processAreaTag(org.htmlparser.Tag tag)
          Process an area tag.
protected  void processEmbedTag(org.htmlparser.Tag tag)
          Process an embed tag.
protected  void processImageTag(org.htmlparser.tags.ImageTag tag)
          Process an image tag.
protected  void processLink(org.htmlparser.Tag tag, java.lang.String attr, CmsRelationType type)
          Process a tag having a link in the given attribute, considering the link as the given type.
 java.lang.String processLinks(java.lang.String content)
          Starts link processing for the given content in processing mode.
protected  void processLinkTag(org.htmlparser.tags.LinkTag tag)
          Process a link tag.
protected  void processObjectTag(org.htmlparser.tags.ObjectTag tag)
          Process an object tag.
 java.lang.String replaceLinks(java.lang.String content)
          Starts link processing for the given content in replacement mode.
protected  void setAltAttributeFromTitle(org.htmlparser.Tag tag, java.lang.String internalUri)
          Ensures that the given tag has the "alt" attribute set.
static java.lang.String unescapeLink(java.lang.String source)
          Unescapes all &, that is replaces them with a &.
 void visitTag(org.htmlparser.Tag tag)
          Visitor method to process a tag (start).
 
Methods inherited from class org.opencms.util.CmsHtmlParser
collapse, configureNoAutoCorrectionTags, getConfiguration, getNoAutoCloseTags, getResult, getTagHtml, process, setConfiguration, setNoAutoCloseTags, visitEndTag, visitRemarkNode, visitStringNode
 
Methods inherited from class org.htmlparser.visitors.NodeVisitor
beginParsing, finishedParsing, shouldRecurseChildren, shouldRecurseSelf
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ATTRIBUTE_HREF

public static final java.lang.String ATTRIBUTE_HREF
Constant for the attribute name.

See Also:
Constant Field Values

ATTRIBUTE_SRC

public static final java.lang.String ATTRIBUTE_SRC
Constant for the attribute name.

See Also:
Constant Field Values

ATTRIBUTE_VALUE

public static final java.lang.String ATTRIBUTE_VALUE
Constant for the attribute name.

See Also:
Constant Field Values

HTML_END

public static final java.lang.String HTML_END
HTML end.

See Also:
Constant Field Values

HTML_START

public static final java.lang.String HTML_START
HTML start.

See Also:
Constant Field Values

TAG_AREA

public static final java.lang.String TAG_AREA
Constant for the tag name.

See Also:
Constant Field Values

TAG_EMBED

public static final java.lang.String TAG_EMBED
Constant for the tag name.

See Also:
Constant Field Values

TAG_PARAM

public static final java.lang.String TAG_PARAM
Constant for the tag name.

See Also:
Constant Field Values
Constructor Detail

CmsLinkProcessor

public CmsLinkProcessor(CmsObject cms,
                        CmsLinkTable linkTable,
                        java.lang.String encoding,
                        java.lang.String relativePath)
Creates a new link processor.

Parameters:
cms - the current users OpenCms context
linkTable - the link table to use
encoding - the encoding to use for parsing the HTML content
relativePath - additional path for links with relative path (only used in "replace" mode)
Method Detail

escapeLink

public static java.lang.String escapeLink(java.lang.String source)
Escapes all &, e.g. replaces them with a &.

Parameters:
source - the String to escape
Returns:
the escaped String

unescapeLink

public static java.lang.String unescapeLink(java.lang.String source)
Unescapes all &, that is replaces them with a &.

Parameters:
source - the String to unescape
Returns:
the unescaped String

getLinkTable

public CmsLinkTable getLinkTable()
Returns the link table this link processor was initialized with.

Returns:
the link table this link processor was initialized with

processLinks

public java.lang.String processLinks(java.lang.String content)
                              throws org.htmlparser.util.ParserException
Starts link processing for the given content in processing mode.

Macros are replaced by links.

Parameters:
content - the content to process
Returns:
the processed content with replaced macros
Throws:
org.htmlparser.util.ParserException - if something goes wrong

replaceLinks

public java.lang.String replaceLinks(java.lang.String content)
                              throws org.htmlparser.util.ParserException
Starts link processing for the given content in replacement mode.

Links are replaced by macros.

Parameters:
content - the content to process
Returns:
the processed content with replaced links
Throws:
org.htmlparser.util.ParserException - if something goes wrong

visitTag

public void visitTag(org.htmlparser.Tag tag)
Visitor method to process a tag (start).

Specified by:
visitTag in interface I_CmsHtmlNodeVisitor
Overrides:
visitTag in class CmsHtmlParser
Parameters:
tag - the tag to process
See Also:
I_CmsHtmlNodeVisitor.visitTag(org.htmlparser.Tag)

processAreaTag

protected void processAreaTag(org.htmlparser.Tag tag)
Process an area tag.

Parameters:
tag - the tag to process

processEmbedTag

protected void processEmbedTag(org.htmlparser.Tag tag)
Process an embed tag.

Parameters:
tag - the tag to process

processImageTag

protected void processImageTag(org.htmlparser.tags.ImageTag tag)
Process an image tag.

Parameters:
tag - the tag to process

processLink

protected void processLink(org.htmlparser.Tag tag,
                           java.lang.String attr,
                           CmsRelationType type)
Process a tag having a link in the given attribute, considering the link as the given type.

Parameters:
tag - the tag to process
attr - the attribute
type - the link type

processLinkTag

protected void processLinkTag(org.htmlparser.tags.LinkTag tag)
Process a link tag.

Parameters:
tag - the tag to process

processObjectTag

protected void processObjectTag(org.htmlparser.tags.ObjectTag tag)
Process an object tag.

Parameters:
tag - the tag to process

setAltAttributeFromTitle

protected void setAltAttributeFromTitle(org.htmlparser.Tag tag,
                                        java.lang.String internalUri)
Ensures that the given tag has the "alt" attribute set.

if not set, it will be set from the title of the given resource.

Parameters:
tag - the tag to set the alt attribute for
internalUri - the internal URI to get the title from