Exact! Sorry! Nico
--- Max Rydahl Andersen <[EMAIL PROTECTED]> a écrit : > eh ? there already is one ;) > > http://www.hibernate.org/98.html > > and it's called Hbm2JavaTask > > /max > > Nicolas Mayeur wrote: > > >Hello! I am proposing this code to create an Ant > task > >for the CodeGenerator in hibernate extension. > > > >SchemaGeneration has already one, I think > >CodeGenerator needs one too. > > > >Example of use : > > <target name="codegenerator"> > > <taskdef name="codegenerator" > > > >classname="net.sf.hibernate.tool.hbm2java.CodeGeneratorTask" > > > classpathref="hibernate.classpath"/> > > <codegenerator output="${src}"> > > <fileset dir="${src}"> > > <include name="**/*.hbm.xml"/> > > </fileset> > > </codegenerator> > > </target> > > > > > > > > > >Nico > > > >PS : I am not sure if I am using the right process > to > >contribute. If not : tell me! > > > >package net.sf.hibernate.tool.hbm2java; > >import java.io.File; > >import java.util.ArrayList; > >import java.util.HashMap; > >import java.util.Iterator; > >import java.util.LinkedList; > >import java.util.List; > >import net.sf.hibernate.MappingException; > >import net.sf.hibernate.util.DTDEntityResolver; > >import org.apache.commons.collections.MultiHashMap; > >import org.apache.commons.collections.MultiMap; > >import org.apache.commons.logging.Log; > >import org.apache.commons.logging.LogFactory; > >import org.apache.tools.ant.BuildException; > >import org.apache.tools.ant.DirectoryScanner; > >import org.apache.tools.ant.Task; > >import org.apache.tools.ant.types.FileSet; > >import org.jdom.Document; > >import org.jdom.Element; > >import org.jdom.input.SAXBuilder; > >import org.xml.sax.ErrorHandler; > >import org.xml.sax.SAXParseException; > >/* > > * Created on 25 mars 2004 By Nicolas Mayeur > > */ > >/** > > * * An Ant task for <tt>CodeGenerator</tt>. > > * > > * <pre> > > * <taskdef name="codegenerator" > > * > >classname="net.sf.hibernate.tool.hbm2java.CodeGeneratorTask" > > * classpathref="class.path"/> > > * > > * <codegenerator > > * output="dirname" > > * config="filename"> > > * <fileset > >dir="${build.classes.dir}"> > > * <include name="*.hbm.xml"/> > > * </fileset> > > * </codegenerator> > > * </pre> > > * > > * @see CodeGenerator > > * @author Nicolas Mayeur > > * > > */ > >public class CodeGeneratorTask extends Task { > > private List fileSets = new LinkedList(); > > private String output = ""; > > private String config = ""; > > private static final Log log = > >LogFactory.getLog(CodeGenerator.class); > > public void addFileset(FileSet set) { > > fileSets.add(set); > > } > > /** > > * @param config > > * The config to set. > > */ > > public void setConfig(String config) { > > this.config = config; > > } > > /** > > * @param output > > * The output to set. > > */ > > public void setOutput(String output) { > > this.output = output; > > } > > public void execute() throws BuildException { > > try { > > List generators = new ArrayList(); > > MultiMap globalMetas = new MultiHashMap(); > > SAXBuilder builder = new SAXBuilder(); > > builder.setEntityResolver(new > DTDEntityResolver()); > > builder.setErrorHandler(new ErrorHandler() { > > public void error(SAXParseException error) { > > log.error("Error parsing XML: " + > >error.getSystemId() + '(' > > + error.getLineNumber() + ')', > > error); > > } > > public void fatalError(SAXParseException error) > { > > error(error); > > } > > public void warning(SAXParseException error) { > > log.warn("Warning parsing XML: " + > >error.getSystemId() > > + '(' + error.getLineNumber() > > + ')'); > > } > > }); > > String outputDir = null; > > ArrayList mappingFiles = new ArrayList(); > > mappingFiles = getFiles(); > > if (!config.equals("")) { > > // parse config xml file > > Document document = builder.build(new > >File(output)); > > globalMetas = > >MetaAttributeHelper.loadAndMergeMetaMap(document > > .getRootElement(), null); > > Iterator generateElements = > >document.getRootElement() > > .getChildren("generate").iterator(); > > while (generateElements.hasNext()) { > > generators.add(new Generator((Element) > >generateElements > > .next())); > > } > > } > > if (!output.equals("")) { > > outputDir = output; > > } > > // if no config xml file, add a default > generator > > if (generators.size() == 0) { > > generators.add(new Generator()); > > } > > HashMap classMappings = new HashMap(); > > builder.setValidation(true); > > for (Iterator iter = mappingFiles.iterator(); > >iter.hasNext();) { > > // parse the mapping file > > File file = new File((String) iter.next()); > > System.out.println(file.getCanonicalFile()); > > Document document = builder.build(file); > > Element rootElement = > document.getRootElement(); > > Iterator classElements = > >rootElement.getChildren("class") > > .iterator(); > > MultiMap mm = > >MetaAttributeHelper.loadAndMergeMetaMap( > > rootElement, globalMetas); > > handleClass(classMappings, classElements, mm, > >false); > > classElements = > >rootElement.getChildren("subclass").iterator(); > > handleClass(classMappings, classElements, mm, > >true); > > classElements = > >rootElement.getChildren("joined-subclass") > > .iterator(); > > handleClass(classMappings, classElements, mm, > >true); > > } > > // generate source files > > for (Iterator iterator = generators.iterator(); > >iterator.hasNext();) { > > Generator g = (Generator) iterator.next(); > > g.setBaseDirName(outputDir); > > g.generate(classMappings); > > } > > } catch (Exception e) { > > e.printStackTrace(); > > } > > } > > private static void handleClass(HashMap > === message truncated === Yahoo! Mail : votre e-mail personnel et gratuit qui vous suit partout ! Créez votre Yahoo! Mail sur http://fr.benefits.yahoo.com/ Dialoguez en direct avec vos amis grâce à Yahoo! Messenger !Téléchargez Yahoo! Messenger sur http://fr.messenger.yahoo.com ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel