001    // Java tool interface class VisPluginTextUnparsingTool
002    // This file is generated automatically, please do not edit!
003    // generation time: Aug 22, 2007 2:40:01 PM
004    
005    package nl.cwi.sen1.visplugin.text;
006    
007    import java.util.HashSet;
008    import java.util.List;
009    import java.util.Set;
010    
011    import toolbus.SwingTool;
012    
013    import aterm.ATerm;
014    import aterm.ATermAppl;
015    import aterm.ATermFactory;
016    import aterm.ATermList;
017    
018    abstract public class VisPluginTextUnparsingTool
019      extends SwingTool
020      implements VisPluginTextUnparsingTif
021    {
022      // This table will hold the complete input signature
023      private Set<ATerm> sigTable = new HashSet<ATerm>();
024    
025      // Patterns that are used to match against incoming terms
026      private ATerm PdisplayUnparsedRtuple0;
027      private ATerm PrecAckEvent0;
028      private ATerm PrecTerminate0;
029    
030      // Mimic the constructor from the AbstractTool class
031      protected VisPluginTextUnparsingTool(ATermFactory factory)
032      {
033        super(factory);
034        initSigTable();
035        initPatterns();
036      }
037    
038      // This method initializes the table with input signatures
039      private void initSigTable()
040      {
041        sigTable.add(factory.parse("rec-eval(<lift-rstore>,lift-rstore(<term>))"));
042        sigTable.add(factory.parse("rec-eval(<lift-rstore>,lift-rtuple(<term>))"));
043        sigTable.add(factory.parse("rec-terminate(<lift-rstore>,<term>)"));
044        sigTable.add(factory.parse("rec-eval(<unparser>,unparse-asfix(<term>))"));
045        sigTable.add(factory.parse("rec-terminate(<unparser>,<term>)"));
046        sigTable.add(factory.parse("rec-ack-event(<vis-plugin-text-unparsing>,<term>)"));
047        sigTable.add(factory.parse("rec-do(<vis-plugin-text-unparsing>,display-unparsed-rtuple(<str>))"));
048        sigTable.add(factory.parse("rec-terminate(<vis-plugin-text-unparsing>,<term>)"));
049      }
050    
051      // Initialize the patterns that are used to match against incoming terms
052      private void initPatterns()
053      {
054        PdisplayUnparsedRtuple0 = factory.parse("rec-do(display-unparsed-rtuple(<str>))");
055        PrecAckEvent0 = factory.parse("rec-ack-event(<term>)");
056        PrecTerminate0 = factory.parse("rec-terminate(<term>)");
057      }
058    
059      // The generic handler calls the specific handlers
060      public ATerm handler(ATerm term)
061      {
062        List<?> result;
063    
064        result = term.match(PdisplayUnparsedRtuple0);
065        if (result != null) {
066          displayUnparsedRtuple((String)result.get(0));
067          return null;
068        }
069        result = term.match(PrecAckEvent0);
070        if (result != null) {
071          recAckEvent((ATerm)result.get(0));
072          return null;
073        }
074        result = term.match(PrecTerminate0);
075        if (result != null) {
076          recTerminate((ATerm)result.get(0));
077          return null;
078        }
079    
080        notInInputSignature(term);
081        return null;
082      }
083    
084      // Check the input signature
085      public void checkInputSignature(ATermList sigs)
086      {
087        while(!sigs.isEmpty()) {
088          ATermAppl sig = (ATermAppl)sigs.getFirst();
089          sigs = sigs.getNext();
090          if (!sigTable.contains(sig)) {
091            // Sorry, but the term is not in the input signature!
092            notInInputSignature(sig);
093          }
094        }
095      }
096    
097      // This function is called when an input term
098      // was not in the input signature.
099      void notInInputSignature(ATerm t)
100      {
101        throw new RuntimeException("term not in input signature: " + t);
102      }
103    }