001 package org.apache.torque.mojo; 002 003 import java.io.File; 004 import java.io.IOException; 005 006 import org.apache.maven.plugin.MojoExecutionException; 007 import org.apache.torque.mojo.morph.FileMorphRequest; 008 import org.apache.torque.mojo.morph.MorphRequest; 009 import org.apache.torque.mojo.morph.Morpher; 010 import org.apache.torque.mojo.morph.VersionTableMorpher; 011 import org.codehaus.plexus.util.FileUtils; 012 013 /** 014 * Morph the xml inside KS_DB_VERSION.xml so it has Maven friendly placeholders 015 * for version info 016 * 017 * @goal morphversiontable 018 * @phase generate-sources 019 */ 020 public class MorphVersionTableMojo extends AbstractMorphSingleMojo { 021 022 /** 023 * The XML file that will contain the new information 024 * 025 * @parameter expression="${newVersionXMLFile}" default-value= 026 * "${project.build.directory}/generated-impex/xml/KS_DB_VERSION.xml" 027 * @required 028 */ 029 private File newVersionXMLFile; 030 031 /** 032 * The XML file that contains the old information 033 * 034 * @parameter expression="${oldVersionXMLFile}" default-value= 035 * "${project.build.directory}/generated-impex/xml/KS_DB_VERSION.xml" 036 * @required 037 */ 038 private File oldVersionXMLFile; 039 040 protected void beforeExecution() { 041 setNewFile(newVersionXMLFile); 042 setOldFile(oldVersionXMLFile); 043 } 044 045 @Override 046 protected boolean isMorphNeeded() { 047 // Only reason 048 if (!getOldFile().exists()) { 049 getLog().debug("file:" + getOldFile().getAbsolutePath() + " does not exist"); 050 return false; 051 } else { 052 return true; 053 } 054 } 055 056 @Override 057 protected void executeMojo() throws MojoExecutionException { 058 getLog().info("------------------------------------------------------------------------"); 059 getLog().info("Converting version table XML file"); 060 getLog().info("------------------------------------------------------------------------"); 061 try { 062 FileUtils.forceMkdir(new File(FileUtils.getPath(getNewFile().getAbsolutePath()))); 063 MorphRequest request = new FileMorphRequest(getOldFile(), getNewFile()); 064 request.setName(getOldFile().getName()); 065 request.setEncoding(getEncoding()); 066 Morpher morpher = getMorpher(request, getProject().getArtifactId()); 067 morpher.executeMorph(); 068 } catch (IOException e) { 069 throw new MojoExecutionException("Unexpected error while attempting to morph " + getOldFile().getAbsolutePath(), e); 070 } 071 } 072 073 protected Morpher getMorpher(MorphRequest request, String artifactId) { 074 VersionTableMorpher morpher = new VersionTableMorpher(request, artifactId); 075 morpher.setProjectVersion(getProject().getVersion()); 076 return morpher; 077 } 078 079 /** 080 * @return the newVersionXMLFile 081 */ 082 public File getNewVersionXMLFile() { 083 return newVersionXMLFile; 084 } 085 086 /** 087 * @param newVersionXMLFile 088 * the newVersionXMLFile to set 089 */ 090 public void setNewVersionXMLFile(final File newVersionXMLFile) { 091 this.newVersionXMLFile = newVersionXMLFile; 092 } 093 094 /** 095 * @return the oldVersionXMLFile 096 */ 097 public File getOldVersionXMLFile() { 098 return oldVersionXMLFile; 099 } 100 101 /** 102 * @param oldVersionXMLFile 103 * the oldVersionXMLFile to set 104 */ 105 public void setOldVersionXMLFile(final File oldVersionXMLFile) { 106 this.oldVersionXMLFile = oldVersionXMLFile; 107 } 108 }