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 }