1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package net.sf.mavenizer.cli.commands;
18
19 import java.io.File;
20 import java.io.FileFilter;
21 import java.io.FileNotFoundException;
22 import java.io.FileOutputStream;
23 import java.io.IOException;
24 import java.io.OutputStream;
25 import java.util.ArrayList;
26 import java.util.Iterator;
27 import java.util.List;
28
29 import net.sf.mavenizer.MavenizerException;
30 import net.sf.mavenizer.analyser.scanner.ScannerFileFilter;
31 import net.sf.mavenizer.cli.exceptions.ProjectSavingException;
32 import net.sf.mavenizer.core.Mavenizer;
33 import net.sf.mavenizer.core.loader.DefaultJarLoader;
34 import net.sf.mavenizer.io.writer.DefaultMavenizerProjectWriter;
35 import net.sf.mavenizer.io.writer.MavenizerProjectWriter;
36
37 import org.apache.commons.logging.Log;
38 import org.apache.commons.logging.LogFactory;
39
40
41 /***
42 * @author <a href="mailto:cedric-vidal@users.sourceforge.net">Cédric Vidal</a>
43 *
44 */
45 public class Analyse {
46
47 private static final Log log = LogFactory.getLog(Analyse.class);
48
49 private File rootDir;
50
51 private List searchDirList = new ArrayList();
52
53 private File workDir;
54
55 private File tempDir;
56
57 private File projectFile;
58
59 private MavenizerProjectWriter mavenizerProjectWriter;
60
61 private FileFilter fileFilter;
62
63 public Analyse() {
64 super();
65 }
66
67 public void execute() throws MavenizerException {
68
69 Mavenizer mavenizer = new Mavenizer();
70
71 for (Iterator i = getSearchDirList().iterator(); i.hasNext();) {
72 String dirPath = (String) i.next();
73 addJars(new File(dirPath), mavenizer);
74 }
75
76 DefaultJarLoader defaultJarLoader = new DefaultJarLoader();
77 defaultJarLoader.setTempDir(getTempDir());
78 mavenizer.setJarLoader(defaultJarLoader);
79 mavenizer.start();
80
81 saveProject(mavenizer);
82 }
83
84 protected void saveProject(Mavenizer mavenizer) throws MavenizerException {
85 getWorkDir().mkdirs();
86 OutputStream out = null;
87 try {
88 out = new FileOutputStream(getProjectFile());
89 getMavenizerProjectWriter().write(mavenizer, out);
90 } catch (FileNotFoundException e) {
91 throw new ProjectSavingException(e);
92 } finally {
93 if (out != null) {
94 try {
95 out.close();
96 } catch (IOException e) {
97 throw new ProjectSavingException(e);
98 }
99 }
100 }
101 }
102
103 static final String EXTENSION_JAR = ".jar";
104
105 private void addJars(File file, Mavenizer builder) {
106
107 if (file.isDirectory()) {
108 File[] files = file.listFiles(getFileFilter());
109 for (int i = 0; i < files.length; i++) {
110 File childFile = files[i];
111 addJars(childFile, builder);
112 }
113 } else if (file.getName().endsWith(EXTENSION_JAR)) {
114 builder.getJarFiles().add(file);
115 }
116
117 }
118
119 protected FileFilter getFileFilter() {
120 if (fileFilter == null) {
121 fileFilter = new ScannerFileFilter();
122 }
123 return fileFilter;
124 }
125
126 /***
127 * @return Returns the rootDir.
128 */
129 public File getRootDir() {
130 return rootDir;
131 }
132
133 /***
134 * @param rootDir
135 * The rootDir to set.
136 */
137 public void setRootDir(File rootDir) {
138 this.rootDir = rootDir;
139 }
140
141 /***
142 * @return Returns the jarList.
143 */
144 public List getSearchDirList() {
145 return searchDirList;
146 }
147
148 /***
149 * @param jarList
150 * The jarList to set.
151 */
152 public void setSearchDirList(List jarList) {
153 this.searchDirList = jarList;
154 }
155
156 /***
157 * @return Returns the workDir.
158 */
159 public File getWorkDir() {
160 if (workDir == null) {
161 workDir = new File(getRootDir(), "work");
162 }
163 return workDir;
164 }
165
166 /***
167 * @param workDir
168 * The workDir to set.
169 */
170 public void setWorkDir(File workDir) {
171 this.workDir = workDir;
172 }
173
174 /***
175 * @return Returns the tempDir.
176 */
177 public File getTempDir() {
178 if (tempDir == null) {
179 tempDir = new File(getRootDir(), "temp");
180 }
181 return tempDir;
182 }
183
184 /***
185 * @param tempDir
186 * The tempDir to set.
187 */
188 public void setTempDir(File tempDir) {
189 this.tempDir = tempDir;
190 }
191
192 /***
193 * @return Returns the projectFile.
194 */
195 public File getProjectFile() {
196 if (projectFile == null) {
197 projectFile = new File(getWorkDir(), "mavenizer.xml");
198 }
199 return projectFile;
200 }
201
202 /***
203 * @param projectFile
204 * The projectFile to set.
205 */
206 public void setProjectFile(File projectFile) {
207 this.projectFile = projectFile;
208 }
209
210 /***
211 * @return Returns the mavenizerProjectWriter.
212 */
213 public MavenizerProjectWriter getMavenizerProjectWriter() {
214 if (mavenizerProjectWriter == null) {
215 mavenizerProjectWriter = new DefaultMavenizerProjectWriter();
216 }
217 return mavenizerProjectWriter;
218 }
219
220 /***
221 * @param mavenizerProjectWriter
222 * The mavenizerProjectWriter to set.
223 */
224 public void setMavenizerProjectWriter(
225 MavenizerProjectWriter mavenizerProjectWriter) {
226 this.mavenizerProjectWriter = mavenizerProjectWriter;
227 }
228
229 }