package com.frontier42.keepass; import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; import java.util.List; import java.util.Map; public class KeepassGroup { private final KeepassDatabase database; public final static EqualsComparator KEY_COMPARATOR=new EqualsComparator(){ public int hashCode(Object obj) { return ((KeepassGroup)obj).getName().toLowerCase().hashCode(); }; public boolean equals(Object obj1, Object obj2) { if (obj2 instanceof String){ return ((KeepassGroup)obj1).getName().toLowerCase().equalsIgnoreCase((String)obj2); } return obj1.equals(obj2); }; }; public static MyKeyReferencey MAKE_KEY(KeepassGroup newItem) { return new MyKey<KeepassGroup>(newItem, KEY_COMPARATOR); } public static Map<MyKeyReferencey,KeepassGroup> MAKE_MAP(){ return new Hashtable<MyKeyReferencey, KeepassGroup>(){ private static final long serialVersionUID = -7821988784939001383L; @Override public synchronized KeepassGroup get(Object key) { return super.get(((String)key).toLowerCase()); } }; } private List<KeepassEntry> entries=new ArrayList<KeepassEntry>(); private Map<MyKeyReferencey, KeepassGroup> groups=MAKE_MAP(); private String name; public KeepassGroup(KeepassDatabase database) { this.database=database; } public KeepassGroup(KeepassGroup group) { this.database=group.getDatabase(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public KeepassEntry newEntry() { return new KeepassEntry(this); } public void add(KeepassEntry entry) { entries.add(entry); this.database.onAdd(entry); } public List<KeepassEntry> getEntries() { return entries; } public KeepassDatabase getDatabase() { return database; } public KeepassGroup newGroup() { return new KeepassGroup(this); } public Collection<KeepassGroup> getGroups() { return groups.values(); } public KeepassGroup getGroup(String name){ return groups.get(name); } public void add(KeepassGroup group) { groups.put(MAKE_KEY(group), group); this.database.onAdd(group); } }