1 package org.columba.addressbook.folder; 19 20 import java.util.Hashtable ; 21 import java.util.Map ; 22 23 import javax.swing.ImageIcon ; 24 25 import org.columba.addressbook.config.FolderItem; 26 import org.columba.addressbook.facade.IContactItem; 27 import org.columba.addressbook.model.ContactModelFactory; 28 import org.columba.addressbook.model.ContactModelPartial; 29 import org.columba.addressbook.model.GroupModel; 30 import org.columba.addressbook.model.IContactModel; 31 import org.columba.addressbook.model.IContactModelPartial; 32 import org.columba.addressbook.model.IGroupModel; 33 import org.columba.api.command.IWorkerStatusController; 34 import org.columba.api.exception.StoreException; 35 import org.columba.core.resourceloader.IconKeys; 36 import org.columba.core.resourceloader.ImageLoader; 37 import org.columba.core.xml.XmlElement; 38 39 47 public class GroupFolder extends AbstractFolder implements IContactStorage, IGroupFolder { 48 49 private IGroupModel group; 50 51 private ImageIcon groupImageIcon = ImageLoader 52 .getSmallIcon(IconKeys.USER); 53 54 57 public GroupFolder(String name, String dir) { 58 super(name, dir); 59 60 group = new GroupModel(); 61 } 62 63 66 public GroupFolder(FolderItem item) { 67 super(item); 68 69 XmlElement property = item.getElement("property"); 70 XmlElement e = property.getElement("group"); 71 if (e == null) { 72 e = new XmlElement("group"); 73 property.addElement(e); 74 } 75 76 group = new GroupModel(e, getId()); 77 } 78 79 public void createChildren(IWorkerStatusController worker) { 80 } 81 82 85 public String add(IContactModel contact) throws StoreException { 86 String uid = contact.getId(); 87 88 group.addMember(uid); 89 90 fireItemAdded(uid); 91 92 return uid; 93 } 94 95 98 public int count() throws StoreException{ 99 100 return group.count(); 101 } 102 103 106 public boolean exists(String uid) throws StoreException{ 107 108 return group.exists(uid); 109 } 110 111 114 public IContactModel get(String uid) throws StoreException { 115 116 AbstractFolder parent = (AbstractFolder) getParent(); 117 118 return parent.get(uid); 119 } 120 121 125 public void modify(String uid, IContactModel contact) throws StoreException { 126 AbstractFolder parent = (AbstractFolder) getParent(); 127 128 parent.modify(uid, contact); 129 130 fireItemChanged(uid); 131 132 } 133 134 137 public void remove(String uid) throws StoreException { 138 group.remove(uid); 139 140 fireItemRemoved(uid); 141 } 142 143 146 public Map <String ,IContactModelPartial> getContactItemMap() throws StoreException { 147 AbstractFolder parent = (AbstractFolder) getParent(); 148 149 Map <String ,IContactModelPartial> filter = new Hashtable <String ,IContactModelPartial>(); 150 151 String [] members = group.getMembers(); 152 for (int i = 0; i < members.length; i++) { 153 IContactModel c = parent.get(members[i]); 154 if (c == null) { 155 158 remove(members[i]); 159 } else { 160 IContactModelPartial item = ContactModelFactory.createContactModelPartial(c, c.getId()); 161 162 filter.put(members[i], item); 163 } 164 } 165 166 return filter; 167 } 168 169 172 public IGroupModel getGroup() { 173 return group; 174 } 175 176 179 public ImageIcon getIcon() { 180 return groupImageIcon; 181 } 182 }
| Popular Tags
|