Revision 2195 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/resourcesstorage/FilesResourcesStorage.java

View differences:

FilesResourcesStorage.java
10 10
import java.net.URL;
11 11
import java.util.ArrayList;
12 12
import java.util.List;
13
import org.apache.commons.io.FileUtils;
13 14
import org.apache.commons.io.IOUtils;
14 15
import org.apache.commons.lang3.StringUtils;
15 16
import org.gvsig.tools.util.HasAFile;
......
20 21
 */
21 22
public class FilesResourcesStorage extends AbstractResourcesStorage {
22 23

  
23
    public static class FileResource 
24
    public static class FileResource
24 25
            extends AbstractResourcesStorage.AbstractResource
25
            implements ResourcesStorage.Resource, HasAFile 
26
      {
26
            implements ResourcesStorage.Resource, HasAFile {
27 27

  
28 28
        private class ResourceInputStream extends InputStream {
29 29

  
......
64 64
            super(name);
65 65
            this.resource = resource;
66 66
        }
67
        
67

  
68 68
        public String getName() {
69
          return name;
69
            return name;
70 70
        }
71 71

  
72 72
        @Override
......
140 140

  
141 141
    @Override
142 142
    public Resource getResource(String resourceName) {
143
        File fres;
144
        for (String pathName : resourcesPaths) {
145
            File folder = new File(pathName);
146
            if( folder.isDirectory() ) {
147
                fres = new File(folder,resourceName);
148
            } else {
149
                fres = new File(pathName + this.getSeparator() + resourceName);
150
            }
151
            if( fres.exists() ) {
152
                return new FileResource(resourceName, fres);
153
            }
154
        }
155
        String pathName = this.resourcesPaths.get(0);
156
        fres = new File(pathName + this.getSeparator() + resourceName);
157
        return new FileResource(resourceName, fres);
143
        return new FileResource(resourceName, getResourceFile(resourceName));
158 144
    }
159 145

  
160 146
    public List<String> getPaths() {
......
164 150
    @Override
165 151
    public List<String> getResourceNames() {
166 152
        List<String> names = new ArrayList<>();
167
        
153

  
168 154
        for (String pathName : resourcesPaths) {
169 155
            File folder = new File(pathName);
170
            if( folder.isDirectory() ) {
171
              for (File f: folder.listFiles()) {
172
                if( f.isFile() ) {
173
                  names.add(f.getName());
156
            if (folder.isDirectory()) {
157
                for (File f : folder.listFiles()) {
158
                    if (f.isFile()) {
159
                        names.add(f.getName());
160
                    }
174 161
                }
175
              }
176 162
            } else {
177
              File parent = folder.getParentFile();
178
              String prefix = pathName + this.getSeparator();
179
              int prefix_len = prefix.length();
180
              for (File f: parent.listFiles()) {
181
                if( f.isFile() ) {
182
                  String fname = f.getName();
183
                  if( StringUtils.startsWithIgnoreCase(fname, prefix) ) {
184
                    names.add(fname.substring(prefix_len));
185
                  }
163
                File parent = folder.getParentFile();
164
                String prefix = pathName + this.getSeparator();
165
                int prefix_len = prefix.length();
166
                for (File f : parent.listFiles()) {
167
                    if (f.isFile()) {
168
                        String fname = f.getName();
169
                        if (StringUtils.startsWithIgnoreCase(fname, prefix)) {
170
                            names.add(fname.substring(prefix_len));
171
                        }
172
                    }
186 173
                }
187
              }
188 174
            }
189 175
        }
190 176
        return names;
191 177
    }
192 178

  
179
    @Override
180
    public boolean remove(String resourceName) {
181
        File fileToRemove = this.getResourceFile(resourceName);
182
        return FileUtils.deleteQuietly(fileToRemove);
183
    }
184

  
185
    @Override
186
    public boolean allowRemove() {
187
        return true;
188
    }
189

  
190
    private File getResourceFile(String resourceName) {
191
        File fres;
192
        for (String pathName : resourcesPaths) {
193
            File folder = new File(pathName);
194
            if (folder.isDirectory()) {
195
                fres = new File(folder, resourceName);
196
            } else {
197
                fres = new File(pathName + this.getSeparator() + resourceName);
198
            }
199
            if (fres.exists()) {
200
                return fres;
201
            }
202
        }
203
        String pathName = this.resourcesPaths.get(0);
204
        File folder = new File(pathName);
205
        if (folder.isDirectory()) {
206
            fres = new File(folder, resourceName);
207
        } else {
208
            fres = new File(pathName + this.getSeparator() + resourceName);
209
        }
210
        return fres;
211
    }
212

  
193 213
}

Also available in: Unified diff