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

View differences:

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