(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / berlinModel / MapWrapper.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.io.berlinModel;
5
6 import java.util.HashMap;
7 import java.util.Map;
8 import java.util.Collection;
9 import java.util.UUID;
10
11
12 import org.apache.log4j.Logger;
13
14 import eu.etaxonomy.cdm.api.service.IService;
15 import eu.etaxonomy.cdm.api.service.ITaxonService;
16 import eu.etaxonomy.cdm.model.common.CdmBase;
17 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
18
19 /**
20 * @author a.mueller
21 *
22 */
23 public class MapWrapper<T extends CdmBase> {
24 private static Logger logger = Logger.getLogger(MapWrapper.class);
25
26 private Map internalMap;
27 private IService<CdmBase> service = null;
28
29 public MapWrapper(IService<CdmBase> service){
30 if (service == null){
31 internalMap = new HashMap<Integer, CdmBase>();
32 }else{
33 this.service = service;
34 internalMap = new HashMap<Integer, UUID>();
35 }
36 }
37
38 public void put(Integer id, T cdmBase){
39 if (service != null){
40 throw new RuntimeException();
41 }else{
42 internalMap.put(id, cdmBase);
43 }
44 }
45
46 public void put(Integer id, UUID uuid){
47 if (service == null){
48 throw new RuntimeException();
49 }else{
50 //TODO
51 //service.save(cdmBase);
52 internalMap.put(id, uuid);
53 }
54 }
55
56 public T get(Integer id){
57 T result;
58 if (service == null){
59 result = (T)internalMap.get(id);
60 }else{
61 result = getObjectFromService(id);
62 }
63 return result;
64 }
65
66 public boolean containsId(Integer id){
67 return internalMap.containsKey(id);
68 }
69
70 public Collection<T> objects(){
71 //TODO from service
72 return (Collection<T>)internalMap.values();
73 }
74
75 private T getObjectFromService(Integer id){
76 if (service == null){
77 throw new RuntimeException("no service defined");
78 }else{
79 T result = null;
80 UUID uuid = (UUID)internalMap.get(id);
81 if (uuid == null){
82 result = null;
83 }else{
84 //TODO
85 //result = (T)service.getObjectUuid(uuid); //.getCdmObjectByUuid(uuid);// taxonService.getTaxonByUuid(taxonUuid);
86 }
87 return result;
88 }
89 }
90
91 }