1 /** 2 * Speedo: an implementation of JDO compliant personality on top of JORM generic 3 * I/O sub-system. 4 * Copyright (C) 2001-2004 France Telecom R&D 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 * 20 * 21 * 22 * Contact: speedo@objectweb.org 23 * 24 * Authors: S.Chassande-Barrioz. 25 * 26 */ 27 28 package org.objectweb.speedo.generation.generator.api; 29 30 import org.apache.velocity.app.VelocityEngine; 31 import org.objectweb.speedo.api.SpeedoException; 32 import org.objectweb.speedo.generation.api.GeneratorComponent; 33 import org.objectweb.speedo.metadata.SpeedoClass; 34 35 import java.util.Collection; 36 37 /** 38 * This interface represents a component of a generator which generates a file 39 * with the Velocity tool. The use of this interface permits to reuse the 40 * VelocityEngine in order have better generation performance. Indeed the 41 * VelocityEngine initialization is very cheap. 42 * 43 * @author S.Chassande-Barrioz 44 */ 45 public interface VelocityGenerator extends GeneratorComponent { 46 47 /** 48 * It assignes the VelocityEngine instance which must be used during the 49 * veleocity generatioin. 50 * @param ve is the VelocityEngine instance to use. 51 */ 52 void setVelocityEngine(VelocityEngine ve); 53 54 /** 55 * @return the VelocityEngine used during the velocity generation. 56 */ 57 VelocityEngine getVelocityEngine(); 58 59 /** 60 * @return a collection of the file names which contains macros. This file 61 * name list will be given to the VelocityEngine during its initialization. 62 */ 63 Collection getExternalsTemplate(); 64 65 /** 66 * It generates the file name corresponding to the Speedo meta object given 67 * in parameter. 68 * @param sClass is the speedo meta object which represents a persistent class 69 * @param fileName is the generated file name 70 * @throws SpeedoException 71 */ 72 void generate(SpeedoClass sClass, String fileName) throws SpeedoException; 73 } 74