Revision 471 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/DefaultScriptingFolder.java
DefaultScriptingFolder.java | ||
---|---|---|
167 | 167 |
@Override |
168 | 168 |
public boolean accept(File arg0, String arg1) { |
169 | 169 |
File f = new File(arg0, arg1); |
170 |
return f.isDirectory(); |
|
170 |
if (!f.canRead() || f.isHidden()) { |
|
171 |
return false; |
|
172 |
} |
|
173 |
if (f.isDirectory()) { |
|
174 |
return true; |
|
175 |
} |
|
176 |
String ext = FilenameUtils.getExtension(f.getName()); |
|
177 |
return "inf".equalsIgnoreCase(ext); |
|
171 | 178 |
} |
172 | 179 |
}); |
173 | 180 |
if (files != null) { |
174 | 181 |
Arrays.sort(files, new Comparator<File>() { |
175 | 182 |
@Override |
176 | 183 |
public int compare(File f1, File f2) { |
177 |
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase()); |
|
184 |
if (f1.isDirectory() && !f2.isDirectory()) { |
|
185 |
return -1; |
|
186 |
} else if (!f1.isDirectory() && f2.isDirectory()) { |
|
187 |
return 1; |
|
188 |
} else { |
|
189 |
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase()); |
|
190 |
} |
|
178 | 191 |
} |
179 | 192 |
}); |
180 | 193 |
for (File f : files) { |
181 | 194 |
try { |
182 |
ScriptingFolder unit = (ScriptingFolder) this.getUnit(f); |
|
183 |
ol.add(unit); |
|
195 |
ScriptingUnit unit = this.getUnit(f); |
|
196 |
if( unit instanceof ScriptingFolder ) { |
|
197 |
ol.add((ScriptingFolder) unit); |
|
198 |
} |
|
184 | 199 |
} catch (Exception ex) { |
185 |
logger.warn("Can't create folder from '" + f.getAbsolutePath() + "'.");
|
|
200 |
logger.warn("Can't create unit from file '" + f.getAbsolutePath() + "'.");
|
|
186 | 201 |
} |
187 | 202 |
} |
188 | 203 |
} |
... | ... | |
205 | 220 |
this.setParent(folder); |
206 | 221 |
this.setId(id); |
207 | 222 |
this.folder = new File(parent.getFile(), id); |
223 |
File f = getFileResource(".inf"); |
|
224 |
if (f.isFile()) { |
|
225 |
Ini prefs; |
|
226 |
try { |
|
227 |
prefs = new Ini(f); |
|
228 |
loadInf(prefs); |
|
229 |
String path = getInfString( |
|
230 |
prefs, |
|
231 |
ScriptingManager.UNIT_FOLDER, |
|
232 |
"path", |
|
233 |
this.folder.getAbsolutePath() |
|
234 |
); |
|
235 |
File ff = new File(path); |
|
236 |
if( ff.isAbsolute() ) { |
|
237 |
this.folder = ff; |
|
238 |
} else { |
|
239 |
this.folder = new File(parent.getFile(), path); |
|
240 |
} |
|
241 |
} catch (Exception e) { |
|
242 |
logger.warn("Can't load 'inf' file '" + f.getAbsolutePath() + "'.", e); |
|
243 |
} |
|
244 |
} |
|
208 | 245 |
} |
209 | 246 |
|
210 | 247 |
@Override |
Also available in: Unified diff