View Javadoc

1   package com.salto.db.generator.plugin;
2   
3   import java.util.Date;
4   import java.util.HashMap;
5   import java.util.Map;
6   
7   import org.apache.velocity.Template;
8   import org.apache.velocity.app.Velocity;
9   
10  import salto.tool.jdo.data.JdoInfo;
11  import salto.tool.jdo.util.CreatorUtil;
12  
13  import com.salto.db.generator.Constants;
14  
15  public class EJB3AndHibernateDAOPlugin extends VelocityAbstractPlugin {
16  
17  	protected EJB3Plugin ejb3Plugin = null;
18  
19  	public static final String TEMPLATE_PATH = "hibernateejb3dao";
20  
21  	public void execute(String className, JdoInfo info) throws Exception {
22  
23  		ejb3Plugin.execute(className, info);
24  
25  		CreatorUtil.getDoNameCreator().setPrefix(doPrefix);
26  		CreatorUtil.getDoNameCreator().setDefaultNameOffset(
27  				this.defaultNameOffset);
28  		Map context = new HashMap();
29  		context.put("jdoInfo", info);
30  		context.put("util", CreatorUtil.getInstance());
31  		context.put("templatePath", TEMPLATE_PATH);
32  		context.put("generatorVersion", Constants.GENERATOR_NAME + " / "
33  				+ this.getShortDescription());
34  		context.put("date", new Date());
35  		info.setJavaPckName(pckName);
36  		info.setJavaClassName(className);
37  
38  		runVelocity(TEMPLATE_PATH, "hibernatedao.vm", srcPath + "/"
39  				+ (pckName + ".hibernate").replace('.', '/') + "/", className
40  				+ "HibernateDAO.java", context);
41  
42  		runVelocity(TEMPLATE_PATH, "dao.vm", srcPath + "/"
43  				+ pckName.replace('.', '/') + "/", className + "DAO.java",
44  				context);
45  
46  	}
47  
48  	public String getDefaultPrefix() {
49  		return "";
50  	}
51  
52  	public String getLongDescription() {
53  		return "This plugin will generate Hibernate EJB3 POJOS, hibernate.cfg.xml and DAOs for each class.";
54  	}
55  
56  	public String getName() {
57  		return "EJB3AndHibernateDao";
58  	}
59  
60  	public String getShortDescription() {
61  		return "EJB3 + Hibernate DAO";
62  	}
63  
64  	public void postExecute(JdoInfo[] infos) throws Exception {
65  
66  		Template t = Velocity.getTemplate(TEMPLATE_PATH
67  				+ "/hibernatedaofactory.vm");
68  
69  		CreatorUtil.getDoNameCreator().setPrefix(doPrefix);
70  		CreatorUtil.getDoNameCreator().setDefaultNameOffset(
71  				this.defaultNameOffset);
72  		Map context = new HashMap();
73  		context.put("jdoInfos", infos);
74  		context.put("connInfo", infos[0].getConnInfo());
75  		context.put("util", CreatorUtil.getInstance());
76  		context.put("templatePath", TEMPLATE_PATH);
77  		context.put("generatorVersion", Constants.GENERATOR_NAME + " / "
78  				+ this.getShortDescription());
79  		context.put("date", new Date());
80  		context.put("dialect", this.ejb3Plugin);
81  		context.put("pckName", pckName);
82  		context.put("hibernateDialectHelper", new HibernateDialectHelper());
83  		context.put("annotations", String.valueOf(ejb3Plugin.isGenerateAnnotations()));
84  
85  		runVelocity(TEMPLATE_PATH, "hibernatedaofactory.vm", srcPath + "/"
86  				+ (pckName + ".hibernate").replace('.', '/') + "/",
87  				"HibernateDAOFactory.java", context);
88  
89  		runVelocity(TEMPLATE_PATH, "daofactory.vm", srcPath + "/"
90  				+ pckName.replace('.', '/') + "/", "DAOFactory.java", context);
91  
92  		runVelocity(TEMPLATE_PATH, "abstracthibernatedao.vm", srcPath + "/"
93  				+ (pckName + ".hibernate").replace('.', '/') + "/",
94  				"AbstractHibernateDAO.java", context);
95  
96  		runVelocity(TEMPLATE_PATH, "genericdao.vm", srcPath + "/"
97  				+ pckName.replace('.', '/') + "/", "GenericDAO.java", context);
98  
99  		runVelocity(TEMPLATE_PATH, "hibernateutil.vm", srcPath + "/"
100 				+ (pckName + ".hibernate").replace('.', '/') + "/",
101 				"HibernateUtil.java", context);
102 
103 		runVelocity(TEMPLATE_PATH, "hibernate.cfg.xml.vm", srcPath + "/",
104 				"hibernate.cfg.xml", context);
105 
106 	}
107 
108 	public void init(String doPrefix, int defaultNameOffset,
109 			String srcPath, String pckName) throws Exception {
110 		super.init(doPrefix, defaultNameOffset, srcPath, pckName);
111 		ejb3Plugin = new EJB3Plugin();
112 		ejb3Plugin.init(doPrefix, defaultNameOffset, srcPath,
113 				pckName + ".pojo");
114 	}
115 
116 	public EJB3Plugin getEjb3Plugin() {
117 		return ejb3Plugin;
118 	}
119 
120 	public void setEjb3Plugin(EJB3Plugin ejb3Plugin) {
121 		this.ejb3Plugin = ejb3Plugin;
122 	}
123 
124 }