View Javadoc

1   // $Id$
2   /**
3   * Copyright (C) 2007 EDIT
4   * European Distributed Institute of Taxonomy 
5   * http://www.e-taxonomy.eu
6   * 
7   * The contents of this file are subject to the Mozilla Public License Version 1.1
8   * See LICENSE.TXT at the top of this package for the full license terms.
9   */
10  
11  package eu.etaxonomy.cdm.io.common;
12  
13  import java.util.HashMap;
14  import java.util.Map;
15  import java.util.UUID;
16  
17  import org.apache.log4j.Logger;
18  
19  import eu.etaxonomy.cdm.api.service.IService;
20  import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
21  import eu.etaxonomy.cdm.model.agent.Person;
22  import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
23  import eu.etaxonomy.cdm.model.common.AnnotationType;
24  import eu.etaxonomy.cdm.model.common.CdmBase;
25  import eu.etaxonomy.cdm.model.common.ExtensionType;
26  import eu.etaxonomy.cdm.model.common.Language;
27  import eu.etaxonomy.cdm.model.common.MarkerType;
28  import eu.etaxonomy.cdm.model.common.User;
29  import eu.etaxonomy.cdm.model.description.Feature;
30  import eu.etaxonomy.cdm.model.location.NamedArea;
31  import eu.etaxonomy.cdm.model.name.TaxonNameBase;
32  import eu.etaxonomy.cdm.model.occurrence.Specimen;
33  import eu.etaxonomy.cdm.model.reference.ReferenceBase;
34  import eu.etaxonomy.cdm.model.taxon.TaxonBase;
35  import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
36  
37  /**
38   * @author a.mueller
39   * @created 11.05.2009
40   * @version 1.0
41   */
42  public abstract class ImportStateBase<CONFIG extends ImportConfiguratorBase, IO extends CdmImportBase> extends IoStateBase<CONFIG, IO> {
43  	@SuppressWarnings("unused")
44  	private static final Logger logger = Logger.getLogger(ImportStateBase.class);
45  	
46  	private Map<Object,TaxonomicTree> treeMap = new HashMap<Object,TaxonomicTree>();
47  
48  	private Map<ReferenceBase,UUID> treeUuidMap = new HashMap<ReferenceBase,UUID>();
49  
50  	private Map<String,UUID> taxonomicTreeKeyUuidMap = new HashMap<String,UUID>();
51  	
52  	private IInputTransformer inputTransformer;
53  
54  	
55  	private Map<UUID, ExtensionType> extensionTypeMap = new HashMap<UUID, ExtensionType>();
56  	private Map<UUID, MarkerType> markerTypeMap = new HashMap<UUID, MarkerType>();
57  	private Map<UUID, AnnotationType> annotationTypeMap = new HashMap<UUID, AnnotationType>();
58  	
59  	private Map<UUID, NamedArea> namedAreaMap = new HashMap<UUID, NamedArea>();
60  	private Map<UUID, Feature> featureMap = new HashMap<UUID, Feature>();
61  	private Map<UUID, Language> languageMap = new HashMap<UUID, Language>();
62  	
63  
64  	
65  	protected ImportStateBase(CONFIG config){
66  		this.config = config;
67  		stores.put(ICdmIO.USER_STORE, new MapWrapper<User>(service));
68  		stores.put(ICdmIO.PERSON_STORE, new MapWrapper<Person>(service));
69  		stores.put(ICdmIO.TEAM_STORE, new MapWrapper<TeamOrPersonBase<?>>(service));
70  		stores.put(ICdmIO.REFERENCE_STORE, new MapWrapper<ReferenceBase>(service));
71  		stores.put(ICdmIO.NOMREF_STORE, new MapWrapper<ReferenceBase>(service));
72  		stores.put(ICdmIO.NOMREF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));
73  		stores.put(ICdmIO.REF_DETAIL_STORE, new MapWrapper<ReferenceBase>(service));
74  		stores.put(ICdmIO.TAXONNAME_STORE, new MapWrapper<TaxonNameBase<?,?>>(service));
75  		stores.put(ICdmIO.TAXON_STORE, new MapWrapper<TaxonBase>(service));
76  		stores.put(ICdmIO.SPECIMEN_STORE, new MapWrapper<Specimen>(service));
77  	}
78  	
79  	//different type of stores that are used by the known imports
80  	protected Map<String, MapWrapper<? extends CdmBase>> stores = new HashMap<String, MapWrapper<? extends CdmBase>>();
81  	
82  	protected IService<CdmBase> service = null;
83  
84  	/**
85  	 * @return the stores
86  	 */
87  	public Map<String, MapWrapper<? extends CdmBase>> getStores() {
88  		return stores;
89  	}
90  
91  	/**
92  	 * @param stores the stores to set
93  	 */
94  	public void setStores(Map<String, MapWrapper<? extends CdmBase>> stores) {
95  		this.stores = stores;
96  	}
97  
98  
99   	public MapWrapper<? extends CdmBase> getStore(String storeLabel){
100  		return (MapWrapper<? extends CdmBase>) stores.get(storeLabel);
101  	}
102 	
103 
104 	/**
105 	 * @return the treeMap
106 	 */
107 	public TaxonomicTree getTree(Object ref) {
108 		return treeMap.get(ref);
109 	}
110 
111 	/**
112 	 * @param treeMap the treeMap to set
113 	 */
114 	public void putTree(Object ref, TaxonomicTree tree) {
115 		if (tree != null){
116 			this.treeMap.put(ref, tree);
117 		}
118 	}
119 	
120 	public int countTrees(){
121 		return treeUuidMap.size();
122 	}
123 	
124 	/**
125 	 * @return the treeUuid
126 	 */
127 	public UUID getTreeUuid(ReferenceBase ref) {
128 		return treeUuidMap.get(ref);
129 	}
130 
131 	public void putTreeUuid(ReferenceBase ref, TaxonomicTree tree) {
132 		if (tree != null &&  tree.getUuid() != null){
133 			this.treeUuidMap.put(ref, tree.getUuid());
134 		}
135 	}
136 
137 	public int countTreeUuids(){
138 		return treeUuidMap.size();
139 	}
140 
141 	
142 	
143 	
144 	/**
145 	 * Adds a taxonomic tree uuid to the taxonomic tree uuid map,
146 	 * which maps a key for the taxonomic tree to its UUID in the CDM
147 	 * @param treeKeyId
148 	 * @param tree
149 	 */
150 	public void putTaxonomicTreeUuidInt(int treeKeyId, TaxonomicTree tree) {
151 		putTaxonomicTreeUuid(String.valueOf(treeKeyId), tree);
152 	}
153 
154 	public void putTaxonomicTreeUuid(String treeKey, TaxonomicTree tree) {
155 		if (tree != null &&  tree.getUuid() != null){
156 			this.taxonomicTreeKeyUuidMap.put(treeKey, tree.getUuid());
157 		}
158 	}
159 	
160 	public UUID getTreeUuidByIntTreeKey(int treeKey) {
161 		return taxonomicTreeKeyUuidMap.get(String.valueOf(treeKey));
162 	}
163 	
164 	public UUID getTreeUuidByTreeKey(String treeKey) {
165 		return taxonomicTreeKeyUuidMap.get(treeKey);
166 	}
167 	
168 	
169 	public ExtensionType getExtensionType(UUID uuid){
170 		return extensionTypeMap.get(uuid);
171 	}
172 	
173 	public void putExtensionType(ExtensionType extensionType){
174 		extensionTypeMap.put(extensionType.getUuid(), extensionType);
175 	}
176 
177 	public MarkerType getMarkerType(UUID uuid){
178 		return markerTypeMap.get(uuid);
179 	}
180 	
181 	public void putMarkerType(MarkerType markerType){
182 		markerTypeMap.put(markerType.getUuid(), markerType);
183 	}
184 	
185 	public AnnotationType getAnnotationType(UUID uuid){
186 		return annotationTypeMap.get(uuid);
187 	}
188 	
189 	public void putAnnotationType(AnnotationType annotationType){
190 		annotationTypeMap.put(annotationType.getUuid(), annotationType);
191 	}
192 	
193 	public NamedArea getNamedArea(UUID uuid){
194 		return namedAreaMap.get(uuid);
195 	}
196 	
197 	public void putNamedArea(NamedArea namedArea){
198 		namedAreaMap.put(namedArea.getUuid(), namedArea);
199 	}
200 
201 	
202 	public Feature getFeature(UUID uuid){
203 		return featureMap.get(uuid);
204 	}
205 	
206 	public void putFeature(Feature feature){
207 		featureMap.put(feature.getUuid(), feature);
208 	}
209 
210 	public Language getLanguage(UUID uuid){
211 		return languageMap.get(uuid);
212 	}
213 	
214 	public void putLanguage(Language language){
215 		languageMap.put(language.getUuid(), language);
216 	}
217 	
218 	//TODO make this abstract or find another way to force that the
219 	//transformer exists
220 	public IInputTransformer getTransformer(){
221 		return inputTransformer;
222 	}
223 	
224 	public void setTransformer(IInputTransformer transformer){
225 		this.inputTransformer = transformer;
226 	}
227 	
228 
229 	
230 }