View Javadoc

1   /*
2    * Copyright (c) 2001-2005,
3    * RedVerst Group, ISP RAS http://www.ispras.ru
4    * All rights reserved.
5    *
6    * Redistribution and use in source and binary forms, with or without
7    * modification, are permitted provided that the following conditions are met:
8    *
9    * 1. Redistributions of source code must retain the above copyright notice, this
10   *    list of conditions and the following disclaimer.
11   *
12   * 2. Redistributions in binary form must reproduce the above copyright notice,
13   *    this list of conditions and the following disclaimer in the documentation
14   *    and/or other materials provided with the distribution.
15   *
16   * 3. The names "ATP", "TreeDL", "RedVerst", "ISP RAS"
17   *    may not be used to endorse or promote products derived from this software
18   *    without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
24   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
27   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   */
31  
32  package com.unitesk.atp.treedl;
33  
34  import com.unitesk.atp.messages.*;
35  import com.unitesk.atp.treedl.TDL.*;
36  
37  public class TranslateAction extends FileGeneratorAction
38  {
39      /***
40       * {@inheritDoc}
41       */
42      public String getVersion()
43      {
44          return getRevision( "$Revision: 1.17 $" );
45      }
46  
47      public void process( com.unitesk.atp.tree.tool.Tree tree )
48      {
49          setCurrentTree( tree );
50  
51          process( getProperty( "check.action", "check" ) );
52  
53          String output_dir = getProperty( "output.dir", "." );
54  
55          boolean update_mode = getProperty( "update", "true" ).equals( "true" );
56          
57          Module module = ((TDL)tree).getRoot();
58          
59          if( module.isTree() )
60          {
61              String visitorName = module.getVisitorName();
62              
63              for( int i = 0; i < module.sizeOptBaseModuleList(); i++ )
64              {
65                  BaseModule baseModuleRef = module.getOptBaseModuleList( i );
66                  Module baseModule = baseModuleRef.getModule().getRoot();
67                  
68                  if(    baseModule.getVisitorName().length() == 0 
69                      && visitorName.length() > 0
70                    )
71                  {
72                      // TODO: add message
73      //                mbox.error( new VisitorNotDefinedMessage
74      //                                ( baseModuleRef.getModule().getFile()
75      //                                , baseModule.getName().getFirst().getPosition()
76      //                                , baseModule.getName().getValue()
77      //                                ,  mbox
78      //                                  .getStringManager()
79      //                                  .getString( Tree.class, "message.tree" )
80      //                                , module.getName().getValue()
81      //                                )
82      //                          );
83                      return;
84                  }
85      
86                  if(    baseModule.getVisitorName().length() > 0 
87                      && visitorName.length() == 0
88                    )
89                  {
90                      // TODO: add message
91      //                mbox.error( new VisitorNotDefinedMessage
92      //                                ( tree.getFile()
93      //                                , module.getName().getFirst().getPosition()
94      //                                , module.getName().getValue()
95      //                                ,  mbox
96      //                                  .getStringManager()
97      //                                  .getString( Tree.class, "message.tree" )
98      //                                , baseModule.getName().getValue()
99      //                                )
100     //                          );
101                     return;
102                 }
103             }
104         }
105         
106         String action_name = getName();
107         String language_name = ((TDL_Module)tree).getLanguage().getName();
108         String generator_name = language_name + "_" + action_name;
109 
110         TextGenerator nodeGenerator 
111             = (TextGenerator)getPlugin( generator_name );
112 
113         if( nodeGenerator == null )
114         {
115             mbox.fatal( new NameNotFoundMessage( null
116                                                , null
117                                                ,  mbox
118                                                  .getStringManager()
119                                                  .getString( TextGenerator.class
120                                                            , "message.generator"
121                                                            )
122                                                , generator_name
123                                                )
124                       );
125             return;
126         }
127 
128         nodeGenerator.setOutClassName( ((TDL)tree).getRoot().getName().getValue() );
129         nodeGenerator.setOutDir( output_dir );
130         nodeGenerator.setActionName( action_name );
131 
132         generateFile( nodeGenerator.getOutFile()
133                     , update_mode
134                     , nodeGenerator
135                     );
136     }
137 }