1 package net.javacoding.jspider.core.storage.memory; 2 3 import net.javacoding.jspider.core.storage.spi.EMailAddressDAOSPI; 4 import net.javacoding.jspider.core.storage.spi.StorageSPI; 5 import net.javacoding.jspider.core.model.*; 6 7 import java.util.*; 8 9 12 class EMailAddressDAOImpl implements EMailAddressDAOSPI { 13 14 protected StorageSPI storage; 15 16 protected Map byResource; 17 protected Map addresses; 18 19 public EMailAddressDAOImpl ( StorageSPI storage ) { 20 this.storage = storage; 21 this.byResource= new HashMap(); 22 this.addresses = new HashMap (); 23 } 24 25 public void register(ResourceInternal resource, EMailAddressInternal address) { 26 Map map = (Map)byResource.get(new Integer (resource.getId())); 27 if (map == null) { 28 map = new HashMap(); 29 byResource.put(new Integer (resource.getId()), map); 30 } 31 32 EMailAddressReferenceInternal reference =(EMailAddressReferenceInternal) map.get(address.getAddress()); 33 if ( reference == null ) { 34 reference = new EMailAddressReferenceInternal(storage, resource.getId(), address.getAddress(), 0); 35 map.put(address.getAddress(), reference); 36 } 37 reference.incrementCount(); 38 addresses.put(address.getAddress(), address); 39 } 40 41 public EMailAddressInternal[] findByResource(ResourceInternal resource) { 42 EMailAddressReferenceInternal[] refs = findReferencesByResource(resource); 43 ArrayList al = new ArrayList(); 44 for (int i = 0; i < refs.length; i++) { 45 EMailAddressReferenceInternal ref = refs[i]; 46 al.add(ref.getEMailAddress()); 47 } 48 return (EMailAddressInternal[])al.toArray(new EMailAddressInternal[al.size()]); 49 } 50 51 public EMailAddressReferenceInternal[] findReferencesByResource(ResourceInternal resource) { 52 Map map = (Map)byResource.get(new Integer (resource.getId())); 53 if (map == null) { 54 return new EMailAddressReferenceInternal[0]; 55 } else { 56 return (EMailAddressReferenceInternal[]) map.values().toArray(new EMailAddressReferenceInternal[map.size()]); 57 } 58 } 59 60 public EMailAddressInternal find(String address) { 61 return (EMailAddressInternal) addresses.get(address); 62 } 63 } 64 | Popular Tags |