Package com.microstrategy.web.transform
Class MSTRLayoutParser
- java.lang.Object
-
- com.microstrategy.web.transform.MSTRLayoutParser
-
- All Implemented Interfaces:
LayoutParser
- Direct Known Subclasses:
AppLayoutParser
public class MSTRLayoutParser extends java.lang.Object implements LayoutParser
The MSTRLayoutParser class is default parser for all MicroStrategy-defined layout definitions. It provides many hooks for customization, for example:getContentHandler(java.lang.String)is used to retrieve a SAX ContentHandler for the layout XML. This needs to useMSTRLayoutParser.ParserContentHandleras the base class to enable the MSTRLayoutParser component to interact with the underlying SAX Parser.getEntityResolver(java.lang.String)is used to retrieve an EntityResolver object for the ContentHandler. It is used to locate any entities references in the layout XML document. The default implementation (MSTRLayoutParser.ParserEntityResolver) uses theentitySearchDirparameter of theparseLayout(java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)method to reroute references to the XHTML 1.1 and MicroStrategy Layout DTDs to this directory.getErrorHandler(com.microstrategy.web.transform.LayoutParser.MessageListener, com.microstrategy.web.transform.MSTRLayoutParser.ParserContentHandler)is used to retrieve an ErrorHandler object for the ContentHandler. All warning and error messages are routed through this object. The default implementation (MSTRLayoutParser.ParserErrorHandler) routes these messages to a suppliedLayoutParser.MessageListenerobject.
parseLayout(java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)method are themselves protected methods can be overriden.- Since:
- MicroStrategy Web 8.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classMSTRLayoutParser.ParserContentHandlerThis is the default implementation of the ContentHandler to use parse the layout XML.protected classMSTRLayoutParser.ParserEntityResolverThis is the default implementation of the EntityResolver object.protected static classMSTRLayoutParser.ParserErrorHandlerThis is the defualt implementation for the ErrorHandler object used with the SAX Parser.-
Nested classes/interfaces inherited from interface com.microstrategy.web.transform.LayoutParser
LayoutParser.MessageListener
-
-
Constructor Summary
Constructors Constructor Description MSTRLayoutParser()Standard no-args constructor for the layout parser.MSTRLayoutParser(boolean debug)Special version of the Parser that can enable more diagnostic messages.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected MSTRLayoutParser.ParserContentHandlergetContentHandler(java.lang.String layoutLocation)Returns aMSTRLayoutParser.ParserContentHandlerobject which performs the actual parsing of the layout text.java.lang.StringgetDescription()Gets the description of this layout parser object (to be read by someone wishing to use it).protected java.io.InputStreamgetEntityAsStream(java.lang.String entityId)Returns anInputStreamfor the specified entity file name.protected org.xml.sax.EntityResolvergetEntityResolver(java.lang.String entitySearchDir)Returns an EntityResolver object used by the parser to resolve references to external DTDs.protected org.xml.sax.ErrorHandlergetErrorHandler(LayoutParser.MessageListener listener, MSTRLayoutParser.ParserContentHandler pch)Returns an ErrorHandler object used by the parser to route error and warning messages back to the caller.protected org.xml.sax.InputSourcegetInputSource(java.lang.String xmlText)Returns an InputSource object for the supplied layout XML.protected LayoutTagloadDocument(org.xml.sax.InputSource inputSource, java.lang.String layoutLocation, java.lang.String entitySearchDir, LayoutParser.MessageListener listener)This method performs the actual SAX parsing of the layout definition.LayoutTagparseLayout(java.lang.String layout, java.lang.String location, LayoutParser.MessageListener listener)LayoutTagparseLayout(java.lang.String layout, java.lang.String location, LayoutSource layoutSource, LayoutParser.MessageListener listener)This method performs a parsing operation on a layout definition (supplied as a string).protected voidperformStaticSemanticChecks(LayoutTag layoutTag, LayoutParser.MessageListener listener)Perform any additional static semantic analyses on the generatedLayoutTagobject.
-
-
-
Constructor Detail
-
MSTRLayoutParser
public MSTRLayoutParser()
Standard no-args constructor for the layout parser.
-
MSTRLayoutParser
public MSTRLayoutParser(boolean debug)
Special version of the Parser that can enable more diagnostic messages.- Parameters:
debug- Whether to enable more diagnostic messages. If enabled, the messages are sent to System.err.
-
-
Method Detail
-
getDescription
public java.lang.String getDescription()
Gets the description of this layout parser object (to be read by someone wishing to use it). This description should include some reference to the type of special tags that understands.- Specified by:
getDescriptionin interfaceLayoutParser- Returns:
- A textual description of this layout parser object.
-
parseLayout
@Deprecated public LayoutTag parseLayout(java.lang.String layout, java.lang.String location, LayoutParser.MessageListener listener) throws LayoutParsingException
Deprecated.This method performs a parsing operation on a layout definition (supplied as a string). If the caller wants to be informed of warning and error conditions, he should create an instance of an object that implements theLayoutParser.MessageListenerinterface.This particular implentation is broken up into three steps:
- Create an
InputSourceobject (seegetInputSource(java.lang.String)using the supplied layout text. - Load the document into memory using the
InputSourcecomputed in the previous step. (SeeloadDocument(org.xml.sax.InputSource, java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)) - Perform any additional static semantic by calling
performStaticSemanticChecks(com.microstrategy.web.tags.LayoutTag, com.microstrategy.web.transform.LayoutParser.MessageListener).
- Specified by:
parseLayoutin interfaceLayoutParser- Parameters:
layout- The Layout Definition as a string.location- The source location for this layout. It is only used for diagnostic purposes. If omitted, then no source location is mentioned any error or warning messages.listener- An instance of a MessageListener object that the parser uses to indicate warning and error conditions.- Returns:
- If successful, a LayoutTag that represents the Layout Definition in-memory.
- Throws:
LayoutParsingException- If parsing fails (due to an error condition), this exception is raised.
- Create an
-
parseLayout
public LayoutTag parseLayout(java.lang.String layout, java.lang.String location, LayoutSource layoutSource, LayoutParser.MessageListener listener) throws LayoutParsingException
This method performs a parsing operation on a layout definition (supplied as a string). If the caller wants to be informed of warning and error conditions, he should create an instance of an object that implements theLayoutParser.MessageListenerinterface.This particular implentation is broken up into three steps:
- Create an
InputSourceobject (seegetInputSource(java.lang.String)using the supplied layout text. - Load the document into memory using the
InputSourcecomputed in the previous step. (SeeloadDocument(org.xml.sax.InputSource, java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)) - Perform any additional static semantic by calling
performStaticSemanticChecks(com.microstrategy.web.tags.LayoutTag, com.microstrategy.web.transform.LayoutParser.MessageListener).
- Specified by:
parseLayoutin interfaceLayoutParser- Parameters:
layout- The Layout Definition as a string.location- The source location for this layout. It is only used for diagnostic purposes. If omitted, then no source location is mentioned any error or warning messages.layoutSource- The layout source is for loading the external file whenIncludeTagis usedlistener- An instance of a MessageListener object that the parser uses to indicate warning and error conditions.- Returns:
- If successful, a LayoutTag that represents the Layout Definition in-memory.
- Throws:
LayoutParsingException- If parsing fails (due to an error condition), this exception is raised.- Since:
- MicroStrategy Web 8.0.2
- Create an
-
getInputSource
protected org.xml.sax.InputSource getInputSource(java.lang.String xmlText) throws LayoutParsingExceptionReturns an InputSource object for the supplied layout XML.- Parameters:
xmlText- The layout definition to parse.- Returns:
- An InputSource object which is used by the
loadDocument(org.xml.sax.InputSource, java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)method. - Throws:
LayoutParsingException
-
getEntityResolver
protected org.xml.sax.EntityResolver getEntityResolver(java.lang.String entitySearchDir)
Returns an EntityResolver object used by the parser to resolve references to external DTDs.- Parameters:
entitySearchDir- The location to use to search for all DTDs.- Returns:
- An EntityResolver implementation that resolves the location of specific DTDs.
-
getErrorHandler
protected org.xml.sax.ErrorHandler getErrorHandler(LayoutParser.MessageListener listener, MSTRLayoutParser.ParserContentHandler pch)
Returns an ErrorHandler object used by the parser to route error and warning messages back to the caller.- Parameters:
listener- AnLayoutParser.MessageListenerobject to use.pch- A reference to theMSTRLayoutParser.ParserContentHandlerobject instance.- Returns:
- An ErrorHandler object which is used by the
loadDocument(org.xml.sax.InputSource, java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)method.
-
getContentHandler
protected MSTRLayoutParser.ParserContentHandler getContentHandler(java.lang.String layoutLocation)
Returns aMSTRLayoutParser.ParserContentHandlerobject which performs the actual parsing of the layout text.- Parameters:
layoutLocation- The location of the original layout definition. It is only used in diagnostic messages.- Returns:
- A
MSTRLayoutParser.ParserContentHandlerobject used by theloadDocument(org.xml.sax.InputSource, java.lang.String, java.lang.String, com.microstrategy.web.transform.LayoutParser.MessageListener)method.
-
loadDocument
protected LayoutTag loadDocument(org.xml.sax.InputSource inputSource, java.lang.String layoutLocation, java.lang.String entitySearchDir, LayoutParser.MessageListener listener) throws LayoutParsingException
This method performs the actual SAX parsing of the layout definition.- Parameters:
inputSource- The InputSource object which contains a reference to the the layout defintion being parsed.layoutLocation- The source location of the layout definition. It is used for generate meaningful error messages.entitySearchDir- This is the directory where the Parser may find the referenced DTDs.listener- This is an instance ofLayoutParser.MessageListenerobject used to communicate warning and error messages back to the caller.- Returns:
- The generated
LayoutTag, if parsing was successful. - Throws:
LayoutParsingException- If parsing fails, this is thrown.
-
performStaticSemanticChecks
protected void performStaticSemanticChecks(LayoutTag layoutTag, LayoutParser.MessageListener listener) throws LayoutParsingException
Perform any additional static semantic analyses on the generatedLayoutTagobject. The current implementation does not perform any additional checks at this time.- Parameters:
layoutTag- The generated layout, in the form of aLayoutTag.listener- TheLayoutParser.MessageListenerobject to pass messages through.- Throws:
LayoutParsingException- An exception is through if any sematic checks fail.
-
getEntityAsStream
protected java.io.InputStream getEntityAsStream(java.lang.String entityId) throws java.io.IOExceptionReturns anInputStreamfor the specified entity file name.- Parameters:
entityId- The file name containing XML entities- Returns:
- InputStream the input stream for reading the entity file, or
nullif the entity file can not be found. - Throws:
java.io.IOException- thrown if there is any error reading the entity file.
-
-