ptolemy.moml.filter
Class RemoveNonPtinyClasses

java.lang.Object
  extended by ptolemy.moml.filter.RemoveNonPtinyClasses
All Implemented Interfaces:
MoMLFilter

public class RemoveNonPtinyClasses
extends java.lang.Object
implements MoMLFilter

Remove classes such as code generators that are not present in Ptiny.

When this class is registered with the MoMLParser.setMoMLFilter() method, it will cause MoMLParser to filter out classes that are not present in the Ptiny configuration.

Since:
Ptolemy II 8.0
Version:
$Id: RemoveNonPtinyClasses.java 59167 2010-09-21 17:08:02Z cxh $
Author:
Christopher Hylands
Accepted Rating:
Red (cxh)
Proposed Rating:
Red (cxh)

Field Summary
private static java.util.HashMap _nonPtinyClasses
          Map of actor names a HashMap of non-ptiny classes to their counterparts, usually either ptolemy.kernel.util.Attribute or null.
 
Constructor Summary
RemoveNonPtinyClasses()
           
 
Method Summary
static void clear()
          Clear the map of graphical classes to be removed.
 java.lang.String filterAttributeValue(NamedObj container, java.lang.String element, java.lang.String attributeName, java.lang.String attributeValue, java.lang.String xmlFile)
          Filter for graphical classes and return new values if a graphical class is found.
 void filterEndElement(NamedObj container, java.lang.String elementName, java.lang.StringBuffer currentCharData, java.lang.String xmlFile)
          In this class, do nothing.
static void main(java.lang.String[] args)
          Read in a MoML file, remove graphical classes and write the results to standard out.
 void put(java.lang.String className, java.lang.String replacement)
          Add a class to be filtered for and its replacement if the class is found.
 void remove(java.lang.String className)
          Remove a class to be filtered.
 java.lang.String toString()
          Return a string that describes what the filter does.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_nonPtinyClasses

private static java.util.HashMap _nonPtinyClasses
Map of actor names a HashMap of non-ptiny classes to their counterparts, usually either ptolemy.kernel.util.Attribute or null.

Constructor Detail

RemoveNonPtinyClasses

public RemoveNonPtinyClasses()
Method Detail

clear

public static void clear()
Clear the map of graphical classes to be removed.


filterAttributeValue

public java.lang.String filterAttributeValue(NamedObj container,
                                             java.lang.String element,
                                             java.lang.String attributeName,
                                             java.lang.String attributeValue,
                                             java.lang.String xmlFile)
Filter for graphical classes and return new values if a graphical class is found. An internal HashMap maps names of graphical entities to new names. The HashMap can also map a graphical entity to null, which means the entity is removed from the model. All class attributeValues that start with "ptolemy.domains.gr" are deemed to be graphical elements and null is always returned. For example, if the attributeValue is "ptolemy.vergil.icon.ValueIcon", or "ptolemy.vergil.basic.NodeControllerFactory" then return "ptolemy.kernel.util.Attribute"; if the attributeValue is "ptolemy.vergil.icon.AttributeValueIcon" or "ptolemy.vergil.icon.BoxedValueIcon" then return null, which will cause the MoMLParser to skip the rest of the element; otherwise return the original value of the attributeValue.

Specified by:
filterAttributeValue in interface MoMLFilter
Parameters:
container - The container for this attribute, ignored in this method.
element - The XML element name.
attributeName - The name of the attribute, ignored in this method.
attributeValue - The value of the attribute.
xmlFile - The file currently being parsed.
Returns:
the filtered attributeValue.

filterEndElement

public void filterEndElement(NamedObj container,
                             java.lang.String elementName,
                             java.lang.StringBuffer currentCharData,
                             java.lang.String xmlFile)
                      throws java.lang.Exception
In this class, do nothing.

Specified by:
filterEndElement in interface MoMLFilter
Parameters:
container - The object created by this element.
elementName - The element name.
currentCharData - The character data, which appears only in the doc and configure elements
xmlFile - The file currently being parsed.
Throws:
java.lang.Exception - Not thrown in this base class.

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Read in a MoML file, remove graphical classes and write the results to standard out.

For example, to remove the graphica classes from a file called RemoveGraphicalClasses.xml

  java -classpath "$PTII" ptolemy.moml.filter.RemoveGraphicalClasses test/RemoveGraphicalClasses.xml > output.xml
  

Parameters:
args - An array of one string
The name of the MoML file to be cleaned.
Throws:
java.lang.Exception - If there is a problem reading or writing a file.

remove

public void remove(java.lang.String className)
Remove a class to be filtered.

Parameters:
className - The name of the class to be filtered out, for example "ptolemy.copernicus.kernel.GeneratorAttribute".
See Also:
put(String, String)

put

public void put(java.lang.String className,
                java.lang.String replacement)
Add a class to be filtered for and its replacement if the class is found. If the replacement is null, then the rest of the attribute is skipped. Note that if you add a class with this method, then you must remove it with remove(String), calling 'new RemoveNonPtinyClasses' will not remove a class that was added with this method.

Parameters:
className - The name of the class to be filtered out, for example "ptolemy.copernicus.kernel.GeneratorAttribute".
replacement - The name of the class to be used if className is found. If this argument is null then the rest of the attribute is skipped.
See Also:
remove(String)

toString

public java.lang.String toString()
Return a string that describes what the filter does.

Specified by:
toString in interface MoMLFilter
Overrides:
toString in class java.lang.Object
Returns:
the description of the filter that ends with a newline.