// Path: mardao-maven-plugin/src/main/java/net/sf/mardao/domain/MergeScheme.java
// public class MergeScheme {
// 	
// 	private List<MergeTemplate> templates;
// 	
// 	public MergeScheme() {
// 		this.templates = new ArrayList<MergeTemplate>();
// 	}
// 	
// 	public MergeScheme(MergeScheme parent) {
// 		this();
// 		setTemplates(parent.templates);
// 	}
// 	
// 	public List<MergeTemplate> getTemplates() {
// 		return templates;
// 	}
// 
// 	public void setTemplates(List<MergeTemplate> templatesToAppend) {
//             templatesToAppend.addAll(templates);
//             templates = templatesToAppend;
// 		// templates.addAll(templatesToAppend);
// 	}
// }
// 
// Path: mardao-maven-plugin/src/main/java/net/sf/mardao/domain/MergeTemplate.java
// public class MergeTemplate {
// 	private String templatePrefix = "";
// 	private String templateMiddle = "";
// 	private String templateSuffix = ".vm";
// 	private String destFolder = "targetDao";
// 	private String filePrefix = "";
// 	private String fileMiddle = "";
// 	private String fileSuffix = ".java";
// 	private boolean entity = true;
// 	private boolean typeSpecific = false;
// 	private boolean typeAppend = true;
// 	private boolean listingEntities = false;
// 
//         /**
//          * @since 2.2.4
//          */
//         private String requiresOnClasspath = null;
// 	
// 	public void setListingEntities(boolean listingEntities) {
// 		this.listingEntities = listingEntities;
// 	}
// 	public String getTemplatePrefix() {
// 		return templatePrefix;
// 	}
// 	public void setTemplatePrefix(String templatePrefix) {
// 		this.templatePrefix = templatePrefix;
// 	}
// 	public String getTemplateSuffix() {
// 		return templateSuffix;
// 	}
// 	public void setTemplateSuffix(String templateSuffix) {
// 		this.templateSuffix = templateSuffix;
// 	}
// 	public String getDestFolder() {
// 		return destFolder;
// 	}
// 	public void setDestFolder(String destFolder) {
// 		this.destFolder = destFolder;
// 	}
// 	public String getFilePrefix() {
// 		return filePrefix;
// 	}
// 	public void setFilePrefix(String filePrefix) {
// 		this.filePrefix = filePrefix;
// 	}
// 	public String getFileSuffix() {
// 		return fileSuffix;
// 	}
// 	public void setFileSuffix(String fileSuffix) {
// 		this.fileSuffix = fileSuffix;
// 	}
// 	public boolean isEntity() {
// 		return entity;
// 	}
// 	public void setEntity(boolean entity) {
// 		this.entity = entity;
// 	}
// 	public boolean isTypeSpecific() {
// 		return typeSpecific;
// 	}
// 	public void setTypeSpecific(boolean typeSpecific) {
// 		this.typeSpecific = typeSpecific;
// 	}
// 	public String getTemplateMiddle() {
// 		return templateMiddle ;
// 	}
// 	public void setTemplateMiddle(String templateMiddle) {
// 		this.templateMiddle = templateMiddle;
// 	}
// 	public void setFileMiddle(String fileMiddle) {
// 		this.fileMiddle = fileMiddle;
// 	}
// 	public String getFileMiddle() {
// 		return fileMiddle;
// 	}
// 	public boolean isListingEntities() {
// 		return listingEntities;
// 	}
// 	public void setTypeAppend(boolean typeAppend) {
// 		this.typeAppend = typeAppend;
// 	}
// 	public boolean isTypeAppend() {
// 		return typeAppend;
// 	}
// 
//     public String getRequiresOnClasspath() {
//         return requiresOnClasspath;
//     }
// 
//     public void setRequiresOnClasspath(String requiresOnClasspath) {
//         this.requiresOnClasspath = requiresOnClasspath;
//     }
// 	
// 	
// }


import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.mardao.domain.MergeScheme;
import net.sf.mardao.domain.MergeTemplate;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

     * @parameter expression="${project}"
     * @required
     * @readonly
     */
    protected MavenProject project;

    /**
     * @parameter expression="${generate.sourceVersion}" default-value="${maven.compiler.source}"
     */
    protected String                         sourceVersion;
    
    public static final java.text.DateFormat DATEFORMAT   = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    protected URLClassLoader loader;
    
    protected String                         daoBasePackage;
    protected String                         domainBasePackage;
    protected String                         controllerBasePackage;

    protected final VelocityContext          vc           = new VelocityContext();

    protected File                           targetDaoFolder;
    protected File                           targetControllerFolder;
    protected File                           targetJspFolder;

    protected File                           srcDaoFolder;
    protected File                           srcDomainFolder;
    protected File                           srcControllerFolder;
    protected File                           srcJspFolder;


// Path: mardao-maven-plugin/src/main/java/net/sf/mardao/domain/MergeScheme.java
// public class MergeScheme {
// 	
// 	private List<MergeTemplate> templates;
// 	
// 	public MergeScheme() {
// 		this.templates = new ArrayList<MergeTemplate>();
// 	}
// 	
// 	public MergeScheme(MergeScheme parent) {
// 		this();
// 		setTemplates(parent.templates);
// 	}
// 	
// 	public List<MergeTemplate> getTemplates() {
// 		return templates;
// 	}
// 
// 	public void setTemplates(List<MergeTemplate> templatesToAppend) {
//             templatesToAppend.addAll(templates);
//             templates = templatesToAppend;
// 		// templates.addAll(templatesToAppend);
// 	}
// }
// 
// Path: mardao-maven-plugin/src/main/java/net/sf/mardao/domain/MergeTemplate.java
// public class MergeTemplate {
// 	private String templatePrefix = "";
// 	private String templateMiddle = "";
// 	private String templateSuffix = ".vm";
// 	private String destFolder = "targetDao";
// 	private String filePrefix = "";
// 	private String fileMiddle = "";
// 	private String fileSuffix = ".java";
// 	private boolean entity = true;
// 	private boolean typeSpecific = false;
// 	private boolean typeAppend = true;
// 	private boolean listingEntities = false;
// 
//         /**
//          * @since 2.2.4
//          */
//         private String requiresOnClasspath = null;
// 	
// 	public void setListingEntities(boolean listingEntities) {
// 		this.listingEntities = listingEntities;
// 	}
// 	public String getTemplatePrefix() {
// 		return templatePrefix;
// 	}
// 	public void setTemplatePrefix(String templatePrefix) {
// 		this.templatePrefix = templatePrefix;
// 	}
// 	public String getTemplateSuffix() {
// 		return templateSuffix;
// 	}
// 	public void setTemplateSuffix(String templateSuffix) {
// 		this.templateSuffix = templateSuffix;
// 	}
// 	public String getDestFolder() {
// 		return destFolder;
// 	}
// 	public void setDestFolder(String destFolder) {
// 		this.destFolder = destFolder;
// 	}
// 	public String getFilePrefix() {
// 		return filePrefix;
// 	}
// 	public void setFilePrefix(String filePrefix) {
// 		this.filePrefix = filePrefix;
// 	}
// 	public String getFileSuffix() {
// 		return fileSuffix;
// 	}
// 	public void setFileSuffix(String fileSuffix) {
// 		this.fileSuffix = fileSuffix;
// 	}
// 	public boolean isEntity() {
// 		return entity;
// 	}
// 	public void setEntity(boolean entity) {
// 		this.entity = entity;
// 	}
// 	public boolean isTypeSpecific() {
// 		return typeSpecific;
// 	}
// 	public void setTypeSpecific(boolean typeSpecific) {
// 		this.typeSpecific = typeSpecific;
// 	}
// 	public String getTemplateMiddle() {
// 		return templateMiddle ;
// 	}
// 	public void setTemplateMiddle(String templateMiddle) {
// 		this.templateMiddle = templateMiddle;
// 	}
// 	public void setFileMiddle(String fileMiddle) {
// 		this.fileMiddle = fileMiddle;
// 	}
// 	public String getFileMiddle() {
// 		return fileMiddle;
// 	}
// 	public boolean isListingEntities() {
// 		return listingEntities;
// 	}
// 	public void setTypeAppend(boolean typeAppend) {
// 		this.typeAppend = typeAppend;
// 	}
// 	public boolean isTypeAppend() {
// 		return typeAppend;
// 	}
// 
//     public String getRequiresOnClasspath() {
//         return requiresOnClasspath;
//     }
// 
//     public void setRequiresOnClasspath(String requiresOnClasspath) {
//         this.requiresOnClasspath = requiresOnClasspath;
//     }
// 	
// 	
// }


// Path: mardao-maven-plugin/src/main/java/net/sf/mardao/plugin/AbstractMardaoMojo.java
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.mardao.domain.MergeScheme;
import net.sf.mardao.domain.MergeTemplate;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

     * @parameter expression="${project}"
     * @required
     * @readonly
     */
    protected MavenProject project;

    /**
     * @parameter expression="${generate.sourceVersion}" default-value="${maven.compiler.source}"
     */
    protected String                         sourceVersion;
    
    public static final java.text.DateFormat DATEFORMAT   = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

    protected URLClassLoader loader;
    
    protected String                         daoBasePackage;
    protected String                         domainBasePackage;
    protected String                         controllerBasePackage;

    protected final VelocityContext          vc           = new VelocityContext();

    protected File                           targetDaoFolder;
    protected File                           targetControllerFolder;
    protected File                           targetJspFolder;

    protected File                           srcDaoFolder;
    protected File                           srcDomainFolder;
    protected File                           srcControllerFolder;
    protected File                           srcJspFolder;


    protected MergeScheme                    mergeScheme;
