@@ -15,10 +15,26 @@ public class Library {
15
15
16
16
private String name ;
17
17
private String version ;
18
- private File folder , srcFolder ;
18
+ private String author ;
19
+ private String email ;
20
+ private String url ;
21
+ private String sentence ;
22
+ private String paragraph ;
23
+ private List <String > coreDependencies ;
24
+ private List <String > dependencies ;
25
+ private File folder , srcFolder , archFolder ;
19
26
private List <String > architectures ;
20
27
private boolean pre15Lib ;
21
28
29
+ private static final List <String > MANDATORY_PROPERTIES = Arrays
30
+ .asList (new String [] { "architectures" , "author" , "core-dependencies" ,
31
+ "dependencies" , "email" , "name" , "paragraph" , "sentence" , "url" ,
32
+ "version" });
33
+ private static final List <String > OPTIONAL_FOLDERS = Arrays
34
+ .asList (new String [] { "arch" , "examples" , "extras" , "src" });
35
+ private static final List <String > OPTIONAL_FILES = Arrays
36
+ .asList (new String [] { "keywords.txt" , "library.properties" });
37
+
22
38
/**
23
39
* Scans inside a folder and create a Library object out of it. Automatically
24
40
* detects pre-1.5 libraries. Automatically fills metadata from
@@ -52,31 +68,49 @@ private static Library createLibrary(File libFolder) {
52
68
// ---------------------
53
69
54
70
// 1. Check mandatory properties
55
- if (!properties .containsKey ("name" ))
56
- return null ;
57
- if (!properties .containsKey ("version" ))
58
- return null ;
59
- if (!properties .containsKey ("architectures" ))
60
- return null ;
71
+ for (String p : MANDATORY_PROPERTIES )
72
+ if (!properties .containsKey (p ))
73
+ return null ;
61
74
62
75
// 2. Check mandatory folders
63
76
File srcFolder = new File (libFolder , "src" );
64
77
if (!srcFolder .exists () && !srcFolder .isDirectory ())
65
78
return null ;
66
-
67
- // TODO: 3. check if root folder contains prohibited stuff
68
-
69
- // Extract metadata info
70
- // TODO: do for all metadata
71
- List <String > archs = new ArrayList <String >();
72
- for (String arch : properties .get ("architectures" ).split ("," ))
73
- archs .add (arch .trim ());
74
79
80
+ // 3. check if root folder contains prohibited stuff
81
+ for (File file : libFolder .listFiles ()) {
82
+ if (file .isDirectory ()) {
83
+ if (!OPTIONAL_FOLDERS .contains (file .getName ()))
84
+ return null ;
85
+ } else {
86
+ if (!OPTIONAL_FILES .contains (file .getName ()))
87
+ return null ;
88
+ }
89
+ }
90
+
91
+ // Extract metadata info
75
92
Library res = new Library ();
76
93
res .folder = libFolder ;
77
94
res .srcFolder = srcFolder ;
95
+ res .archFolder = new File (libFolder , "arch" );
78
96
res .name = properties .get ("name" ).trim ();
97
+ res .author = properties .get ("author" ).trim ();
98
+ res .email = properties .get ("email" ).trim ();
99
+ res .sentence = properties .get ("sentence" ).trim ();
100
+ res .paragraph = properties .get ("paragraph" ).trim ();
101
+ res .url = properties .get ("url" ).trim ();
102
+ List <String > archs = new ArrayList <String >();
103
+ for (String arch : properties .get ("architectures" ).split ("," ))
104
+ archs .add (arch .trim ());
79
105
res .architectures = archs ;
106
+ List <String > deps = new ArrayList <String >();
107
+ for (String dep : properties .get ("dependencies" ).split ("," ))
108
+ deps .add (dep .trim ());
109
+ res .dependencies = deps ;
110
+ List <String > coreDeps = new ArrayList <String >();
111
+ for (String dep : properties .get ("core-dependencies" ).split ("," ))
112
+ coreDeps .add (dep .trim ());
113
+ res .coreDependencies = coreDeps ;
80
114
res .version = properties .get ("version" ).trim ();
81
115
res .pre15Lib = false ;
82
116
return res ;
@@ -98,9 +132,15 @@ public List<File> getSrcFolders(String reqArch) {
98
132
return null ;
99
133
List <File > res = new ArrayList <File >();
100
134
res .add (srcFolder );
101
- File archSpecificFolder = new File (srcFolder , reqArch );
102
- if (archSpecificFolder .exists () && archSpecificFolder .isDirectory ())
135
+ File archSpecificFolder = new File (archFolder , reqArch );
136
+ if (archSpecificFolder .exists () && archSpecificFolder .isDirectory ()) {
103
137
res .add (archSpecificFolder );
138
+ } else {
139
+ // If specific architecture folder is not found try with "default"
140
+ archSpecificFolder = new File (archFolder , "default" );
141
+ if (archSpecificFolder .exists () && archSpecificFolder .isDirectory ())
142
+ res .add (archSpecificFolder );
143
+ }
104
144
return res ;
105
145
}
106
146
@@ -133,4 +173,56 @@ public boolean isPre15Lib() {
133
173
public File getFolder () {
134
174
return folder ;
135
175
}
176
+
177
+ public List <String > getArchitectures () {
178
+ return architectures ;
179
+ }
180
+
181
+ public String getAuthor () {
182
+ return author ;
183
+ }
184
+
185
+ public List <String > getCoreDependencies () {
186
+ return coreDependencies ;
187
+ }
188
+
189
+ public List <String > getDependencies () {
190
+ return dependencies ;
191
+ }
192
+
193
+ public String getEmail () {
194
+ return email ;
195
+ }
196
+
197
+ public String getParagraph () {
198
+ return paragraph ;
199
+ }
200
+
201
+ public String getSentence () {
202
+ return sentence ;
203
+ }
204
+
205
+ public String getUrl () {
206
+ return url ;
207
+ }
208
+
209
+ public String getVersion () {
210
+ return version ;
211
+ }
212
+
213
+ @ Override
214
+ public String toString () {
215
+ String res = "Library:" ;
216
+ res += " (name=" + name + ")" ;
217
+ res += " (architectures=" + architectures + ")" ;
218
+ res += " (author=" + author + ")" ;
219
+ res += " (core-dependencies=" + coreDependencies + ")" ;
220
+ res += " (dependencies=" + dependencies + ")" ;
221
+ res += " (email=" + email + ")" ;
222
+ res += " (paragraph=" + paragraph + ")" ;
223
+ res += " (sentence=" + sentence + ")" ;
224
+ res += " (url=" + url + ")" ;
225
+ res += " (version=" + version + ")" ;
226
+ return res ;
227
+ }
136
228
}
0 commit comments