Project

General

Profile

« Previous | Next » 

Revision a2d00c04

Added by Andreas Müller almost 11 years ago

latest eFlora activator and source changes

View differences:

cdm-eflora/src/main/java/eu/etaxonomy/cdm/app/eflora/FloreGabonActivator.java
10 10
package eu.etaxonomy.cdm.app.eflora;
11 11

  
12 12
import java.net.URI;
13
import java.util.Collection;
14
import java.util.HashMap;
15 13
import java.util.HashSet;
16 14
import java.util.List;
17
import java.util.Map;
18 15
import java.util.Set;
19 16
import java.util.UUID;
20 17

  
......
30 27
import eu.etaxonomy.cdm.io.common.events.LoggingIoObserver;
31 28
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
32 29
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
33
import eu.etaxonomy.cdm.io.markup.FeatureSorter;
34
import eu.etaxonomy.cdm.io.markup.FeatureSorterInfo;
35 30
import eu.etaxonomy.cdm.io.markup.MarkupImportConfigurator;
36
import eu.etaxonomy.cdm.io.markup.MarkupImportState;
37 31
import eu.etaxonomy.cdm.io.markup.MarkupTransformer;
38 32
import eu.etaxonomy.cdm.model.description.Feature;
39 33
import eu.etaxonomy.cdm.model.description.FeatureNode;
......
46 40
 * @author a.mueller
47 41
 * @created 20.06.2008
48 42
 */
49
public class FloreGabonActivator {
43
public class FloreGabonActivator extends EfloraActivatorBase {
50 44
	private static final Logger logger = Logger.getLogger(FloreGabonActivator.class);
51 45
	
52 46
	//database validation status (create, update, validate ...)
......
64 58
	static final URI fdg9 = EfloraSources.fdg_9();
65 59
	static final URI fdg10 = EfloraSources.fdg_10();
66 60
	static final URI fdg11 = EfloraSources.fdg_11();
61
	static final URI fdg21 = EfloraSources.fdg_21();
62
	static final URI fdg22 = EfloraSources.fdg_22();
63
	static final URI fdg27 = EfloraSources.fdg_27();
64
	static final URI fdg28 = EfloraSources.fdg_28();
65
	static final URI fdg30 = EfloraSources.fdg_30();
67 66
	
68 67
	
69 68
	
......
112 111
	private boolean includeFdg9 = true;
113 112
	private boolean includeFdg10 = true;
114 113
	private boolean includeFdg11 = true;
115
	
114
	private boolean includeFdg21 = true;
115
	private boolean includeFdg22 = true;
116
	private boolean includeFdg27 = true;
117
	private boolean includeFdg28 = true;
118
	private boolean includeFdg30 = true;
116 119
	
117 120
// **************** NO CHANGE **********************************************/
118 121
	
......
180 183
		//Vol11
181 184
		executeVolume(fdg11, includeFdg11 ^ inverseInclude);
182 185

  
186
		//Vol21
187
		executeVolume(fdg21, includeFdg21 ^ inverseInclude);
188
		//Vol22
189
		executeVolume(fdg22, includeFdg22 ^ inverseInclude);
190
		//Vol27
191
		executeVolume(fdg27, includeFdg27 ^ inverseInclude);
192
		//Vol28
193
		executeVolume(fdg28, includeFdg28 ^ inverseInclude);
194
		//Vol30
195
		executeVolume(fdg30, includeFdg30 ^ inverseInclude);
183 196
		
184 197
		FeatureTree tree = makeFeatureNode(myImport.getCdmAppController().getTermService());
185 198
		myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
186 199
		
187
		FeatureTree automatedTree = makeAutomatedFeatureTree();
188
		
189
		
200
		makeAutomatedFeatureTree(myImport.getCdmAppController(), config.getState(),
201
				featureTreeUuid, featureTreeTitle);
202

  
190 203
		
191 204
		//check keys
192 205
		if (doPrintKeys){
......
221 234
	}
222 235
	
223 236
	
224
	private FeatureTree makeAutomatedFeatureTree(){
225
		FeatureTree tree = FeatureTree.NewInstance(featureTreeUuid);
226
		tree.setTitleCache(featureTreeTitle, true);
227
		FeatureNode root = tree.getRoot();
228
		
229
		ITermService termService = myImport.getCdmAppController().getTermService();
230
		MarkupImportState state = config.getState();
231
		FeatureSorter sorter = new FeatureSorter();
232
		FeatureNode descriptionNode = null;
233
		
234
		//general features
235
		Map<String, List<FeatureSorterInfo>> generalList = state.getGeneralFeatureSorterListMap();
236
		List<UUID> uuidList = sorter.getSortOrder(generalList);
237
		Map<UUID, Feature> map = makeUuidMap(uuidList, termService);
238
		for (UUID key : uuidList){
239
			Feature feature = map.get(key);
240
			FeatureNode node = FeatureNode.NewInstance(feature);
241
			root.addChild(node);
242
			if (feature.equals(Feature.DESCRIPTION())){
243
				descriptionNode = node;
244
			}
245
		}
246
		FeatureNode newNode = FeatureNode.NewInstance(Feature.CITATION());
247
		root.addChild(newNode);
248
		
249
		
250
		//description features
251
		if (descriptionNode != null){
252
			Map<String, List<FeatureSorterInfo>> charList = state.getCharFeatureSorterListMap();
253
			uuidList = sorter.getSortOrder(charList);
254
			map = makeUuidMap(uuidList, termService);
255
			for (UUID key : uuidList){
256
				Feature feature = map.get(key);
257
				descriptionNode.addChild(FeatureNode.NewInstance(feature));
258
			}
259
		}else{
260
			logger.warn("No description node found. Could not create feature nodes for description features.");
261
		}
262 237

  
263
		//save tree
264
		myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
265
		
266
		return tree;
267
	}
268
	
269
	private Map<UUID,Feature> makeUuidMap(Collection<UUID> uuids, ITermService termService){
270
		HashSet<UUID> uuidSet = new HashSet<UUID>();
271
		uuidSet.addAll(uuids);
272
		List<Feature> featureSet = (List)termService.find(uuidSet);
273
		
274
		Map<UUID,Feature> result = new HashMap<UUID, Feature>();
275
		for (Feature feature : featureSet){
276
			result.put(feature.getUuid(), feature);
277
		}
278
		return result;
279
	}
280 238

  
281 239
	private FeatureTree makeFeatureNode(ITermService service){
282 240
		MarkupTransformer transformer = new MarkupTransformer();

Also available in: Unified diff