Clover Coverage Report - Impex Parent 1.0.21-SNAPSHOT (Aggregated)
Coverage timestamp: Tue Feb 8 2011 11:33:53 EST
../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
28   103   12   4
8   67   0.43   7
7     1.71  
1    
 
  AbstractMorphSingleMojo       Line # 16 28 0% 12 43 0% 0.0
 
No Tests
 
1    package org.apache.torque.mojo;
2   
3    import java.io.File;
4    import java.io.FileInputStream;
5    import java.io.FileOutputStream;
6    import java.io.IOException;
7   
8    import org.apache.maven.plugin.MojoExecutionException;
9    import org.apache.torque.mojo.morph.MorphRequest;
10    import org.apache.torque.mojo.morph.Morpher;
11    import org.codehaus.plexus.util.FileUtils;
12   
13    /**
14    * Common logic for morphing one file to another file
15    */
 
16    public abstract class AbstractMorphSingleMojo extends BaseMojo {
17   
18    /**
19    * The file that will contain the morphed contents
20    */
21    private File newFile;
22   
23    /**
24    * The file containing the contents to be morphed
25    */
26    private File oldFile;
27   
28    /**
29    * Add logic to the basic skip() method for skipping based on a morph being needed
30    */
 
31  0 toggle @Override
32    protected boolean skipMojo() {
33    // We may be skipping based on packaging of type 'pom'
34  0 if (super.skipMojo()) {
35  0 return true;
36    }
37   
38    // If a morph is needed, we can't skip
39  0 boolean morphNeeded = isMorphNeeded();
40  0 if (morphNeeded) {
41  0 return false;
42    } else {
43  0 getLog().info("Skipping morph. Nothing has changed");
44  0 return true;
45    }
46    }
47   
 
48  0 toggle protected boolean isMorphNeeded() {
49    // The file they asked to morph does not exist
50  0 if (!getOldFile().exists()) {
51  0 getLog().debug("file:" + getOldFile().getAbsolutePath() + " does not exist");
52  0 return false;
53    }
54   
55    // The new file does not exist, we need to morph
56  0 if (!getNewFile().exists()) {
57  0 return true;
58    }
59   
60    // Extract the last modified timestamps
61  0 long oldLastModified = getOldFile().lastModified();
62  0 long newLastModified = getNewFile().lastModified();
63   
64    // If old file has been modified since the new file was last modified,
65    // we need to morph
66  0 return oldLastModified > newLastModified;
67    }
68   
69    protected abstract Morpher getMorpher(MorphRequest request, String artifactId);
70   
 
71  0 toggle @Override
72    protected void executeMojo() throws MojoExecutionException {
73  0 try {
74  0 getLog().info("From: " + oldFile.getAbsolutePath());
75  0 getLog().info(" To: " + newFile.getAbsolutePath());
76  0 FileUtils.forceMkdir(new File(FileUtils.getPath(newFile.getAbsolutePath())));
77  0 MorphRequest request = new MorphRequest(oldFile.getName(), new FileInputStream(oldFile),
78    new FileOutputStream(newFile));
79  0 request.setEncoding(getEncoding());
80  0 Morpher morpher = getMorpher(request, getProject().getArtifactId());
81  0 morpher.executeMorph();
82    } catch (IOException e) {
83  0 throw new MojoExecutionException("Unexpected error while attempting to morph " + oldFile.getAbsolutePath(),
84    e);
85    }
86    }
87   
 
88  0 toggle public File getNewFile() {
89  0 return newFile;
90    }
91   
 
92  0 toggle public void setNewFile(final File newFile) {
93  0 this.newFile = newFile;
94    }
95   
 
96  0 toggle public File getOldFile() {
97  0 return oldFile;
98    }
99   
 
100  0 toggle public void setOldFile(final File oldFile) {
101  0 this.oldFile = oldFile;
102    }
103    }