Clover Coverage Report - Maven Impex Plugin 1.0.23
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
59   178   20   3.47
4   122   0.34   17
17     1.18  
1    
 
  IdentifyInvalidDataFiles       Line # 26 59 0% 20 80 0% 0.0
 
No Tests
 
1    package org.apache.torque.mojo;
2   
3    import java.io.File;
4    import java.util.List;
5    import java.util.Properties;
6    import java.util.Set;
7    import java.util.TreeSet;
8   
9    import org.apache.maven.plugin.MojoExecutionException;
10    import org.apache.maven.plugin.MojoFailureException;
11    import org.apache.tools.ant.DirectoryScanner;
12    import org.apache.torque.engine.database.model.Database;
13    import org.apache.torque.engine.database.model.Table;
14    import org.kuali.core.db.torque.SetUtils;
15    import org.kuali.core.db.torque.Utils;
16   
17    /**
18    * This mojo identifies data files that are present on the file system but are not present in schema.xml. This can
19    * happen if a table is removed from the schema.
20    *
21    * It sets a project property called "impex.data.invalid". This property is a comma delimited list of filenames that
22    * have no match in the db schema.
23    *
24    * @goal id-invalid-data-files
25    */
 
26    public class IdentifyInvalidDataFiles extends BaseMojo {
27    private static final String FS = System.getProperty("file.separator");
28   
29    /**
30    * @parameter expression="${extension}" default-value=".xml"
31    * @required
32    */
33    private String extension;
34   
35    /**
36    * @parameter expression="${dataDir}" default-value="${project.basedir}/src/main/impex"
37    * @required
38    */
39    private File dataDir;
40   
41    /**
42    * @parameter expression="${dataDirIncludes}" default-value="*.xml"
43    */
44    private String dataDirIncludes;
45   
46    /**
47    * @parameter expression="${dataDirExcludes}" default-value="schema.xml"
48    */
49    private String dataDirExcludes;
50   
51    /**
52    * @parameter expression="${schemaXMLFile}" default-value="src/main/impex/schema.xml"
53    */
54    private String schemaXMLFile;
55   
56    /**
57    * @parameter expression="${targetDatabase}" default-value="oracle"
58    */
59    private String targetDatabase;
60   
 
61  0 toggle @Override
62    protected void executeMojo() throws MojoExecutionException, MojoFailureException {
63  0 Utils utils = new Utils();
64  0 try {
65  0 getLog().info("Examining " + dataDir.getAbsolutePath());
66  0 Database db = utils.getDatabase(schemaXMLFile, targetDatabase);
67  0 DirectoryScanner ds = getDirectoryScanner();
68  0 Set<File> existing = getExistingFiles(ds);
69  0 Set<File> allowed = getDatabaseFiles(db);
70  0 Set<File> invalid = SetUtils.difference(existing, allowed);
71  0 getLog().info(existing.size() + " data files currently exist");
72  0 getLog().info(invalid.size() + " of those are invalid");
73  0 StringBuilder sb = new StringBuilder();
74  0 int count = 0;
75  0 for (File file : invalid) {
76  0 if (count != 0) {
77  0 sb.append(",");
78    }
79  0 sb.append("**/src/main/impex/" + file.getName());
80  0 getLog().info("Marked for removal: " + file.getName());
81  0 count++;
82    }
83  0 Properties properties = getProject().getProperties();
84  0 properties.setProperty("impex.data.invalid", sb.toString());
85    } catch (Exception e) {
86  0 throw new MojoExecutionException("Error executing mojo", e);
87    }
88    }
89   
 
90  0 toggle protected Set<File> getDatabaseFiles(Database db) {
91  0 List<?> tables = db.getTables();
92  0 Set<File> files = new TreeSet<File>();
93  0 for (Object object : tables) {
94  0 Table table = (Table) object;
95  0 String tableName = table.getName();
96  0 String filename = dataDir.getAbsolutePath() + FS + tableName + extension;
97  0 File file = new File(filename);
98  0 files.add(file);
99    }
100  0 return files;
101    }
102   
 
103  0 toggle protected Set<File> getExistingFiles(DirectoryScanner ds) {
104  0 ds.scan();
105  0 String[] relativeFilenames = ds.getIncludedFiles();
106  0 Set<File> files = new TreeSet<File>();
107  0 for (int i = 0; i < relativeFilenames.length; i++) {
108  0 String filename = ds.getBasedir().getAbsolutePath() + FS + relativeFilenames[i];
109  0 File file = new File(filename);
110  0 files.add(file);
111    }
112  0 return files;
113    }
114   
 
115  0 toggle protected DirectoryScanner getDirectoryScanner() {
116  0 DirectoryScanner ds = new DirectoryScanner();
117  0 ds.setBasedir(dataDir);
118  0 ds.setIncludes(new String[] { dataDirIncludes });
119  0 ds.setExcludes(new String[] { dataDirExcludes });
120  0 return ds;
121    }
122   
 
123  0 toggle protected File getFile(Table table) {
124  0 String tableName = table.getName();
125  0 String filename = dataDir.getAbsolutePath() + FS + tableName + extension;
126  0 File file = new File(filename);
127  0 return file;
128    }
129   
 
130  0 toggle public File getDataDir() {
131  0 return dataDir;
132    }
133   
 
134  0 toggle public void setDataDir(File dataDir) {
135  0 this.dataDir = dataDir;
136    }
137   
 
138  0 toggle public String getDataDirIncludes() {
139  0 return dataDirIncludes;
140    }
141   
 
142  0 toggle public void setDataDirIncludes(String dataDirIncludes) {
143  0 this.dataDirIncludes = dataDirIncludes;
144    }
145   
 
146  0 toggle public String getDataDirExcludes() {
147  0 return dataDirExcludes;
148    }
149   
 
150  0 toggle public void setDataDirExcludes(String dataDirExcludes) {
151  0 this.dataDirExcludes = dataDirExcludes;
152    }
153   
 
154  0 toggle public String getSchemaXMLFile() {
155  0 return schemaXMLFile;
156    }
157   
 
158  0 toggle public void setSchemaXMLFile(String schemaXMLFile) {
159  0 this.schemaXMLFile = schemaXMLFile;
160    }
161   
 
162  0 toggle public String getExtension() {
163  0 return extension;
164    }
165   
 
166  0 toggle public void setExtension(String extension) {
167  0 this.extension = extension;
168    }
169   
 
170  0 toggle public String getTargetDatabase() {
171  0 return targetDatabase;
172    }
173   
 
174  0 toggle public void setTargetDatabase(String targetDatabase) {
175  0 this.targetDatabase = targetDatabase;
176    }
177   
178    }