Package org.hibernate.tool.ant

Source Code of org.hibernate.tool.ant.ExporterTask

/*
* Created on 13-Feb-2005
*
*/
package org.hibernate.tool.ant;

import java.io.File;
import java.util.Properties;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Environment;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.PropertySet;
import org.hibernate.tool.hbm2x.Exporter;

/**
* @author max
*
* Is not actually a ant task, but simply just a task part of a HibernateToolTask
*
*/
public abstract class ExporterTask {

  // refactor out so not dependent on Ant ?
  protected HibernateToolTask parent;
  Properties properties;
  File destdir;
  private Path templatePath;
  private String templatePrefix = null;
 
  public ExporterTask(HibernateToolTask parent) {
    this.parent = parent;
    this.properties = new Properties();
  }

 
  /*final*/ public void execute() {
 
    Exporter exporter = configureExporter(createExporter() );
    exporter.start();
   
  }
 
  protected abstract Exporter createExporter();

  public File getDestdir() {
    if(destdir==null) {
      return parent.getDestDir();
    }
    else {
      return destdir;
    }
  }
  public void setDestdir(File destdir) {
    this.destdir = destdir;
  }
 
  public void setTemplatePath(Path path) {
    templatePath = path;
  }
 
  public void setTemplatePrefix(String s) {
    templatePrefix = s;
  }
 
  public void validateParameters() {
    if(getDestdir()==null) {
      throw new BuildException("destdir must be set, either locally or on <hibernatetool>");
    }   
  }
 
  public void addConfiguredPropertySet(PropertySet ps) {
    properties.putAll(ps.getProperties());
  }
 
  public void addConfiguredProperty(Environment.Variable property) {
    properties.put(property.getKey(), property.getValue());
  }
 
  protected Path getTemplatePath() {
    if(templatePath==null) {
      return parent.getTemplatePath();
    }
    else {
      return templatePath;
    }   
  }
 
 
  abstract String getName();
 
  protected Exporter configureExporter(Exporter exporter) {
    Properties prop = new Properties();
    prop.putAll(parent.getProperties());
    prop.putAll(properties);
    exporter.setProperties(prop);
    exporter.setConfiguration( parent.getConfiguration() );
    exporter.setOutputDirectory( getDestdir() );
    exporter.setTemplatePath( getTemplatePath().list() );     
    return exporter;
  }
}
TOP

Related Classes of org.hibernate.tool.ant.ExporterTask

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.