parse annotations
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / ProjectScanner.java
1 package eu.svjatoslav.inspector.java.methods;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.HashMap;
7 import java.util.List;
8 import java.util.Map;
9
10 import eu.svjatoslav.commons.file.FilePathParser;
11 import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
12
13 public class ProjectScanner {
14
15         private final File scanPath;
16
17         Map<File, Project> projects = new HashMap<File, Project>();
18         public List<JavaFile> javaFiles = new ArrayList<JavaFile>();
19
20         public ProjectScanner(final File projectPath) {
21                 scanPath = projectPath;
22                 parse();
23         }
24
25         public List<Clazz> getAllClasses() {
26                 final List<Clazz> result = new ArrayList<Clazz>();
27
28                 for (final JavaFile file : javaFiles)
29                         for (final Clazz clazz : file.classes)
30                                 result.add(clazz);
31
32                 return result;
33         }
34
35         public void parse() {
36
37                 if (!scanPath.exists())
38                         System.out.println("Path not found: " + scanPath);
39
40                 if (!scanPath.canRead())
41                         System.out.println("Cannot read path: " + scanPath);
42
43                 if (scanPath.isDirectory())
44                         parseDirectory(scanPath);
45
46                 if (scanPath.isFile())
47                         parseFile(scanPath);
48         }
49
50         public void parseDirectory(final File file) {
51
52                 for (final File subFile : file.listFiles()) {
53
54                         if (subFile.isFile())
55                                 parseFile(subFile);
56
57                         if (subFile.isDirectory())
58                                 parseDirectory(subFile);
59                 }
60         }
61
62         public void parseFile(final File file) {
63                 final String fileExtension = FilePathParser.getFileExtension(file);
64                 if ("java".equalsIgnoreCase(fileExtension))
65                         try {
66                                 final JavaFile javaFile = new JavaFile(file);
67                                 javaFiles.add(javaFile);
68                         } catch (final IOException e) {
69                                 System.out.println("Error parsing file: " + file.toString()
70                                                 + ": " + e.toString());
71                         } catch (final InvalidSyntaxException e) {
72                                 System.out.println("Syntax error occured while parsing file: "
73                                                 + file.toString() + ": " + e.toString());
74                         }
75         }
76
77 }