public interface MoMLFilter
Modifier and Type | Method and Description |
---|---|
java.lang.String |
filterAttributeValue(NamedObj container,
java.lang.String element,
java.lang.String attributeName,
java.lang.String attributeValue,
java.lang.String xmlFile)
Given a container, attribute name and attribute value,
return a new attribute value.
|
java.lang.String |
filterAttributeValue(NamedObj container,
java.lang.String element,
java.lang.String attributeName,
java.lang.String attributeValue,
java.lang.String xmlFile,
MoMLParser parser)
Given a container, attribute name and attribute value,
return a new attribute value.
|
void |
filterEndElement(NamedObj container,
java.lang.String elementName,
java.lang.StringBuffer currentCharData,
java.lang.String xmlFile)
Make modifications to the specified container, which is
defined in a MoML element with the specified name.
|
void |
filterEndElement(NamedObj container,
java.lang.String elementName,
java.lang.StringBuffer currentCharData,
java.lang.String xmlFile,
MoMLParser parser)
Make modifications to the specified container, which is
defined in a MoML element with the specified name.
|
java.lang.String |
toString()
Return a string that describes what the filter does.
|
java.lang.String filterAttributeValue(NamedObj container, java.lang.String element, java.lang.String attributeName, java.lang.String attributeValue, java.lang.String xmlFile)
<entity name="foo" class="..."> <property name="x" value="10"/> </entity>then this method will be called twice with the container being the instance "foo". On the first call, the attributeName will be "name" and the attributeValue will be "x". On the second call, attributeName will be "value" and the attributeValue will be "10". To make no change to the attribute value, an implementer should simply return the same attributeValue. To cause the MoMLParser to ignore the current element altogether, an implementer should return null. For example, to skip a graphical class, create a filter that looks for attributeName equal to "class" and attributeValue equal to the class name to skip. Note that if the attributeValue argument is null, then returning null is interpreted as no change, rather than as an indication to skip the element. To change the value of the attribute, simply return a a new value for the attribute.
If modifies the attribute value, then it should call the static method MoMLParser.setModified(true), which indicates that the model was modified so that the user can optionally save the modified model.
container
- The container for XML element.element
- The XML element name.attributeName
- The name of the attribute.attributeValue
- The value of the attribute.xmlFile
- The file currently being parsed.java.lang.String filterAttributeValue(NamedObj container, java.lang.String element, java.lang.String attributeName, java.lang.String attributeValue, java.lang.String xmlFile, MoMLParser parser)
<entity name="foo" class="..."> <property name="x" value="10"/> </entity>then this method will be called twice with the container being the instance "foo". On the first call, the attributeName will be "name" and the attributeValue will be "x". On the second call, attributeName will be "value" and the attributeValue will be "10". To make no change to the attribute value, an implementer should simply return the same attributeValue. To cause the MoMLParser to ignore the current element altogether, an implementer should return null. For example, to skip a graphical class, create a filter that looks for attributeName equal to "class" and attributeValue equal to the class name to skip. Note that if the attributeValue argument is null, then returning null is interpreted as no change, rather than as an indication to skip the element. To change the value of the attribute, simply return a a new value for the attribute.
If modifies the attribute value, then it should call the static method MoMLParser.setModified(true), which indicates that the model was modified so that the user can optionally save the modified model.
This method takes a MoMLParser argument, which is optionally used to parse MoML. We have to parse the MoML as opposed to calling the Java classes directly so that ptolemy.moml.filter does not depend on other packages, such as ptolemy.vergil. Derived classes usually call parser.setContext(container) so that the MoML is parsed in the correct context. Note that it is probably not correct to call this method and pass in the current MoMLParser because setContext() calls reset(). Instead, the caller (MoMLParser), creates a MoMLParser instance that is shared amongst all the calls to the MoMLFilter methods that take a MoMLParser argument.
container
- The container for XML element.element
- The XML element name.attributeName
- The name of the attribute.attributeValue
- The value of the attribute.xmlFile
- The file currently being parsed.parser
- The MoMLParser that is sometimes used by derived
classes. MoMLParser shares a separate MoMLParser between
the filters. Each filter should call setContext(container) on
the passed-in filter. Since setContext() calls reset(), we
don't want to pass in the main MoMLParser. We share one
MoMLParser so as to avoid the expense of constructing one each
time we read an attribute.void filterEndElement(NamedObj container, java.lang.String elementName, java.lang.StringBuffer currentCharData, java.lang.String xmlFile) throws java.lang.Exception
If an implementor makes changes to the specified container, then it should call MoMLParser.setModified(true) which indicates that the model was modified so that the user can optionally save the modified model.
container
- The object defined by the element that this
is the end of.elementName
- The element name.currentCharData
- The character data, which appears
only in the doc and configure elementsxmlFile
- The file currently being parsed.java.lang.Exception
- If there is a problem modifying the
specified container.void filterEndElement(NamedObj container, java.lang.String elementName, java.lang.StringBuffer currentCharData, java.lang.String xmlFile, MoMLParser parser) throws java.lang.Exception
If an implementor makes changes to the specified container, then it should call MoMLParser.setModified(true) which indicates that the model was modified so that the user can optionally save the modified model.
This method takes a MoMLParser argument, which is optionally used to parse MoML. We have to parse the MoML as opposed to calling the Java classes directly so that ptolemy.moml.filter does not depend on other packages, such as ptolemy.vergil. Derived classes usually call parser.setContext(container) so that the MoML is parsed in the correct context. Note that it is probably not correct to call this method and pass in the current MoMLParser because setContext() calls reset(). Instead, the caller (MoMLParser), creates a MoMLParser instance that is shared amongst all the calls to the MoMLFilter methods that take a MoMLParser argument.
container
- The object defined by the element that this
is the end of.elementName
- The element name.currentCharData
- The character data, which appears
only in the doc and configure elementsxmlFile
- The file currently being parsed.parser
- The parser in which MoML is optionally evaluated.java.lang.Exception
- If there is a problem modifying the
specified container.java.lang.String toString()
toString
in class java.lang.Object