001    package org.apache.torque.mojo;
002    
003    import java.io.File;
004    import java.io.IOException;
005    
006    import org.apache.commons.io.FileUtils;
007    import org.apache.maven.plugin.MojoExecutionException;
008    import org.kuali.core.db.torque.KualiTorqueDataDumpTask;
009    
010    /**
011     * Reads the content of tables from a database and exports the data in a database agnostic format to XML files.
012     * 
013     * @goal exportdata
014     * @phase generate-sources
015     */
016    public class ExportDataMojo extends ExportMojo {
017    
018        /**
019         * The format to use for dates/timestamps
020         * 
021         * @parameter expression="${dateFormat}" default-value="yyyyMMddHHmmss z"
022         * @required
023         */
024        private String dateFormat;
025    
026        /**
027         * The directory where data XML files will be written
028         * 
029         * @parameter expression="${dataXMLDir}" default-value="${basedir}/src/main/impex"
030         * @required
031         */
032        private File dataXMLDir;
033    
034        /**
035         * Configure the Ant task
036         */
037        @Override
038        protected void configureTask() throws MojoExecutionException {
039            KualiTorqueDataDumpTask task = new KualiTorqueDataDumpTask();
040            task.setBuildDirectory(new File(getProject().getBuild().getDirectory()));
041            setAntTask(task);
042            super.configureTask();
043            makeOutputDir();
044        }
045    
046        protected void makeOutputDir() throws MojoExecutionException {
047            if (getDataXMLDir().exists()) {
048                return;
049            }
050            try {
051                FileUtils.forceMkdir(getDataXMLDir());
052            } catch (IOException e) {
053                throw new MojoExecutionException("Error creating output directory", e);
054            }
055        }
056    
057        public File getDataXMLDir() {
058            return dataXMLDir;
059        }
060    
061        public void setDataXMLDir(File outputDir) {
062            this.dataXMLDir = outputDir;
063        }
064    
065        public String getDateFormat() {
066            return dateFormat;
067        }
068    
069        public void setDateFormat(String dateFormat) {
070            this.dateFormat = dateFormat;
071        }
072    }