01: package net.javacoding.jspider.core.storage.memory;
02:
03: import net.javacoding.jspider.core.storage.spi.FolderDAOSPI;
04: import net.javacoding.jspider.core.storage.spi.StorageSPI;
05: import net.javacoding.jspider.core.model.FolderInternal;
06: import net.javacoding.jspider.core.model.SiteInternal;
07:
08: import java.util.*;
09:
10: /**
11: * $Id: FolderDAOImpl.java,v 1.2 2003/04/11 16:37:07 vanrogu Exp $
12: */
13: class FolderDAOImpl implements FolderDAOSPI {
14:
15: protected StorageSPI storage;
16:
17: protected Map parents;
18: protected Map children;
19: protected Map byId;
20: protected Map siteRoots;
21:
22: public FolderDAOImpl(StorageSPI storage) {
23: this .storage = storage;
24: this .parents = new HashMap();
25: this .children = new HashMap();
26: this .byId = new HashMap();
27: this .siteRoots = new HashMap();
28: }
29:
30: public FolderInternal[] findSubFolders(FolderInternal folder) {
31: Set folders = (Set) children.get(folder);
32: if (folders == null) {
33: return new FolderInternal[0];
34: } else {
35: return (FolderInternal[]) folders
36: .toArray(new FolderInternal[folders.size()]);
37: }
38: }
39:
40: public FolderInternal[] findSiteRootFolders(SiteInternal site) {
41: Set rootFolders = (Set) siteRoots
42: .get(new Integer(site.getId()));
43: if (rootFolders == null) {
44: return new FolderInternal[0];
45: } else {
46: return (FolderInternal[]) rootFolders
47: .toArray(new FolderInternal[rootFolders.size()]);
48: }
49: }
50:
51: public FolderInternal createFolder(int id, FolderInternal parent,
52: String name) {
53: FolderInternal folder = new FolderInternal(storage, id, parent
54: .getId(), name, parent.getSiteId());
55: byId.put(new Integer(id), folder);
56: parents.put(folder, parent);
57:
58: Set set = (Set) children.get(parent);
59: if (set == null) {
60: set = new HashSet();
61: children.put(parent, set);
62: }
63: set.add(folder);
64:
65: return folder;
66: }
67:
68: public FolderInternal createFolder(int id, SiteInternal site,
69: String name) {
70: FolderInternal folder = new FolderInternal(storage, id, 0,
71: name, site.getId());
72: Set roots = (Set) siteRoots.get(new Integer(site.getId()));
73: if (roots == null) {
74: roots = new HashSet();
75: siteRoots.put(new Integer(site.getId()), roots);
76: }
77: roots.add(folder);
78:
79: byId.put(new Integer(id), folder);
80: return folder;
81: }
82:
83: public FolderInternal findById(int id) {
84: return (FolderInternal) byId.get(new Integer(id));
85: }
86: }
|