Clover coverage report -
Coverage timestamp: Fri Nov 19 2004 13:41:51 PST
file stats: LOC: 96   Methods: 5
NCLOC: 82   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
FileSystemBrowser.java 75% 80.6% 100% 81.1%
coverage coverage
 1    package photospace.vfs;
 2   
 3    import java.io.*;
 4    import java.util.*;
 5    import org.apache.commons.logging.*;
 6    import photospace.beans.*;
 7    import photospace.meta.*;
 8   
 9    public class FileSystemBrowser
 10    implements java.io.Serializable, Browser
 11    {
 12    private static final Log log = LogFactory.getLog(FileSystemBrowser.class);
 13   
 14    private FileSystem filesystem;
 15    private Persister persister;
 16    private FileFilter filter = new PhotoFileFilter();
 17   
 18  4 public void setFilesystem(FileSystem filesystem)
 19    {
 20  4 this.filesystem = filesystem;
 21    }
 22   
 23  4 public void setPersister(Persister persister)
 24    {
 25  4 this.persister = persister;
 26    }
 27   
 28  3 public FolderMeta browse(String path, int depth)
 29    throws Exception
 30    {
 31  3 FolderMeta folder = browse(path, depth, 0);
 32  3 assignParents(folder);
 33  3 return folder;
 34    }
 35   
 36  3 private void assignParents(FolderMeta folder)
 37    throws Exception
 38    {
 39  3 File file = filesystem.getFile(folder.getPath());
 40  3 FolderMeta parent = null;
 41  3 FolderMeta child = folder;
 42  3 while (!file.equals(filesystem.getRoot()))
 43    {
 44  0 file = file.getParentFile();
 45  0 parent = (FolderMeta) persister.getMeta(file);
 46  0 child.setParent(parent);
 47  0 child = parent;
 48    }
 49    }
 50   
 51  5 private FolderMeta browse(String path, int depth, int current)
 52    throws Exception
 53    {
 54  5 File root = filesystem.getFile(path);
 55   
 56  5 if (!root.isDirectory())
 57    {
 58  0 path = path.substring(0, path.lastIndexOf(root.getName()));
 59  0 root = filesystem.getDirectory(path);
 60    }
 61   
 62  5 FolderMeta dir = (FolderMeta) persister.getMeta(root);
 63   
 64  2 if (depth != -1 && current >= depth) return dir;
 65   
 66  3 File[] files = root.listFiles(filter);
 67   
 68  3 for (int i = 0; i < files.length; i++)
 69    {
 70  5 try
 71    {
 72  5 if (files[i].isDirectory())
 73    {
 74  2 String subPath = path + files[i].getName() + "/";
 75  2 FolderMeta subDir = browse(subPath, depth, current + 1);
 76  2 subDir.setParent(dir);
 77  2 dir.addFile(subDir);
 78    }
 79  3 else if (files[i].isFile())
 80    {
 81  3 MediaMeta media = (MediaMeta) persister.getMeta(files[i]);
 82  3 media.setName(files[i].getName());
 83  3 media.setPath(path + files[i].getName());
 84  3 dir.addFile(media);
 85    }
 86    }
 87    catch (Exception e)
 88    {
 89  0 log.error("Exception fetching meta for " + files[i], e);
 90    }
 91    }
 92  3 dir.sortFiles(new CreatedComparator());
 93  3 return dir;
 94    }
 95   
 96    }