Author: max...@jb... Date: 2006-04-18 20:36:18 -0400 (Tue, 18 Apr 2006) New Revision: 9763 Added: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HQLExporterTask.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/HQLExporter.java trunk/HibernateExt/tools/src/testsupport/querytest-hibernate.cfg.xml Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/ExporterTask.java trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java trunk/HibernateExt/tools/src/testsupport/anttest-build.xml Log: initial <hql> support (HBX-641) Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/ExporterTask.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/ExporterTask.java 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/ExporterTask.java 2006-04-19 00:36:18 UTC (rev 9763) @@ -66,8 +66,7 @@ public void validateParameters() { if(getDestdir()==null) { throw new BuildException("destdir must be set, either locally or on <hibernatetool>"); - } - + } } public void addConfiguredPropertySet(PropertySet ps) { Added: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HQLExporterTask.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HQLExporterTask.java 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HQLExporterTask.java 2006-04-19 00:36:18 UTC (rev 9763) @@ -0,0 +1,45 @@ +package org.hibernate.tool.ant; + +import org.hibernate.tool.hbm2x.Exporter; +import org.hibernate.tool.hbm2x.HQLExporter; + +public class HQLExporterTask extends ExporterTask { + + private String query; + private String filename; + + public HQLExporterTask(HibernateToolTask parent) { + super( parent ); + } + + protected Exporter configureExporter(Exporter exp) { + HQLExporter exporter = (HQLExporter) exp; + exporter.setQuery(query); + exporter.setFilename(filename); + super.configureExporter( exp ); + return exporter; + } + + protected Exporter createExporter() { + HQLExporter exporter = new HQLExporter(); + return exporter; + } + + public void addText(String text) { + query = text; + } + + public void setDestFile(String filename) { + this.filename = filename; + } + + public void execute() { + parent.log("Executing: [" + query + "]"); + super.execute(); + } + public String getName() { + return "hql (Executes HQL queries)"; + } + + +} Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ant/HibernateToolTask.java 2006-04-19 00:36:18 UTC (rev 9763) @@ -113,6 +113,13 @@ return generator; } + + public HQLExporterTask createHql() { + HQLExporterTask generator = new HQLExporterTask(this); + generators.add(generator); + return generator; + } + /** * Set the classpath to be used when running the Java class * Added: trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/HQLExporter.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/HQLExporter.java 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/hbm2x/HQLExporter.java 2006-04-19 00:36:18 UTC (rev 9763) @@ -0,0 +1,76 @@ +package org.hibernate.tool.hbm2x; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Iterator; +import java.util.List; + +import org.hibernate.SessionFactory; +import org.hibernate.classic.Session; + +/** + * Placeholder exporter for query execution. + * + **/ +public class HQLExporter extends AbstractExporter { + + private String query; + private String filename; + + public void doStart() { + Session session = null; + SessionFactory sessionFactory = null; + try { + sessionFactory = getConfiguration().buildSessionFactory(); + session = sessionFactory.openSession(); + + List list = session.createQuery(getQuery()).list(); + + if(getFileName()!=null) { + PrintWriter pw = null; + try { + File file = new File( getOutputDirectory(), getFileName() ); + getTemplateHelper().ensureExistence( file ); + pw = new PrintWriter( new FileWriter( file, true ) ); + getArtifactCollector().addFile( file, "query-output" ); + + for (Iterator iter = list.iterator(); iter.hasNext();) { + Object element = iter.next(); + pw.println(element); + } + + } + catch (IOException e) { + throw new ExporterException("Could not write query output",e); + } finally { + if(pw!=null) { + pw.flush(); + pw.close(); + } + } + } + } finally { + session.close(); + session.getSessionFactory().close(); + } + } + + private String getFileName() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + private String getQuery() { + return query; + } + + public void setQuery(String query) { + this.query = query; + } + +} Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ant/HibernateToolTest.java 2006-04-19 00:36:18 UTC (rev 9763) @@ -149,9 +149,16 @@ } catch(BuildException be) { // should happen! } + } + + public void testQuery() { + executeTarget("testquery"); + File baseDir = new File(project.getProperty("build.dir"), "querytest"); + + assertTrue(new File(baseDir, "queryresult.txt").exists()); + } - public static Test suite() { return new TestSuite(HibernateToolTest.class); } Modified: trunk/HibernateExt/tools/src/testsupport/anttest-build.xml =================================================================== --- trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/testsupport/anttest-build.xml 2006-04-19 00:36:18 UTC (rev 9763) @@ -329,4 +329,14 @@ <jdbcconfiguration propertyfile="../../etc/hibernate.properties" packageName="org.h3.test" reversestrategy="org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy" /> </hibernatetool> </target> + + <target name="testquery" description="test the query tasks"> + <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="tasks.classpath" /> + <hibernatetool destdir="${build.dir}/querytest"> + <configuration propertyfile="../../etc/hibernate.properties" configurationfile="querytest-hibernate.cfg.xml" /> + <hql>from java.lang.Object</hql> + <hql>from java.io.Serializable</hql> + <hql destfile="queryresult.txt">from java.io.Serializable</hql> + </hibernatetool> + </target> </project> Added: trunk/HibernateExt/tools/src/testsupport/querytest-hibernate.cfg.xml =================================================================== --- trunk/HibernateExt/tools/src/testsupport/querytest-hibernate.cfg.xml 2006-04-19 00:35:12 UTC (rev 9762) +++ trunk/HibernateExt/tools/src/testsupport/querytest-hibernate.cfg.xml 2006-04-19 00:36:18 UTC (rev 9763) @@ -0,0 +1,9 @@ +<!DOCTYPE hibernate-configuration PUBLIC + "-//Hibernate/Hibernate Configuration DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> + +<hibernate-configuration> + <session-factory> + <property name="show_sql">true</property> + </session-factory> +</hibernate-configuration> \ No newline at end of file |