001    /*
002      GRANITE DATA SERVICES
003      Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004    
005      This file is part of Granite Data Services.
006    
007      Granite Data Services is free software; you can redistribute it and/or modify
008      it under the terms of the GNU Library General Public License as published by
009      the Free Software Foundation; either version 2 of the License, or (at your
010      option) any later version.
011    
012      Granite Data Services is distributed in the hope that it will be useful, but
013      WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014      FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015      for more details.
016    
017      You should have received a copy of the GNU Library General Public License
018      along with this library; if not, see <http://www.gnu.org/licenses/>.
019    */
020    
021    package org.granite.generator.ant;
022    
023    import java.lang.reflect.Field;
024    
025    import org.granite.generator.Transformer;
026    import org.granite.generator.as3.As3TypeFactory;
027    import org.granite.generator.as3.DefaultAs3TypeFactory;
028    import org.granite.generator.as3.JavaAs3GroovyTransformer;
029    import org.granite.generator.template.StandardTemplateUris;
030    
031    /**
032     * @author Franck WOLFF
033     */
034    public class AntJavaAs3Task extends AbstractAntJavaGenTask {
035    
036        ///////////////////////////////////////////////////////////////////////////
037        // Configurable fields (xml attributes).
038    
039        private boolean externalizelong = false;
040        private boolean externalizebiginteger = false;
041        private boolean externalizebigdecimal = false;
042        
043        ///////////////////////////////////////////////////////////////////////////
044        // Task attributes.
045    
046        public void setExternalizelong(boolean externalizelong) {
047                    this.externalizelong = externalizelong;
048            }
049    
050        public void setExternalizebiginteger(boolean externalizebiginteger) {
051                    this.externalizebiginteger = externalizebiginteger;
052            }
053    
054            public void setExternalizebigdecimal(boolean externalizebigdecimal) {
055                    this.externalizebigdecimal = externalizebigdecimal;
056            }
057    
058        ///////////////////////////////////////////////////////////////////////////
059        // Task execution.
060    
061        @Override
062            protected As3TypeFactory initDefaultClientTypeFactory() {
063            As3TypeFactory clientTypeFactoryImpl = new DefaultAs3TypeFactory();
064            clientTypeFactoryImpl.configure(externalizelong, externalizebiginteger, externalizebigdecimal);
065            return clientTypeFactoryImpl;
066        }
067        
068        @Override
069        protected Transformer<?, ?, ?> initDefaultTransformer() {
070            return new JavaAs3GroovyTransformer();
071        }
072        
073        @Override
074        protected String defaultTemplateUri(String type) {
075            try {
076                    Field field = StandardTemplateUris.class.getField(type);
077                    return (String)field.get(null);
078            }
079            catch (Exception e) {
080                    throw new RuntimeException("Default template not found for type " + type);
081            }
082        }
083    }