Project

General

Profile

« Previous | Next » 

Revision 70086918

Added by Andreas Müller almost 11 years ago

added automated feature tree creation for FdG

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;
13 15
import java.util.HashSet;
14 16
import java.util.List;
17
import java.util.Map;
15 18
import java.util.Set;
16 19
import java.util.UUID;
17 20

  
......
27 30
import eu.etaxonomy.cdm.io.common.events.LoggingIoObserver;
28 31
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
29 32
import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;
33
import eu.etaxonomy.cdm.io.markup.FeatureSorter;
34
import eu.etaxonomy.cdm.io.markup.FeatureSorterInfo;
30 35
import eu.etaxonomy.cdm.io.markup.MarkupImportConfigurator;
36
import eu.etaxonomy.cdm.io.markup.MarkupImportState;
31 37
import eu.etaxonomy.cdm.io.markup.MarkupTransformer;
32 38
import eu.etaxonomy.cdm.model.description.Feature;
33 39
import eu.etaxonomy.cdm.model.description.FeatureNode;
......
39 45
/**
40 46
 * @author a.mueller
41 47
 * @created 20.06.2008
42
 * @version 1.0
43 48
 */
44 49
public class FloreGabonActivator {
45 50
	private static final Logger logger = Logger.getLogger(FloreGabonActivator.class);
......
70 75

  
71 76
	//feature tree uuid
72 77
	public static final UUID featureTreeUuid = UUID.fromString("ee688973-2595-4d4d-b11e-6df71e96a5c2");
78
	private static final String featureTreeTitle = "Flore Gabon Presentation Feature Tree";
73 79
	
74 80
	//classification
75 81
	static final UUID classificationUuid = UUID.fromString("2f892452-ff49-48cf-834f-52ca29600719");
82
	static final String classificationTitle = "Flore du Gabon";
83
	
76 84
	
77 85
	//check - import
78 86
	private boolean h2ForCheck = false;
79 87
	static CHECK check = CHECK.IMPORT_WITHOUT_CHECK;
80 88
	
81 89
	static boolean doPrintKeys = false;
90

  
82 91
	
92
	private boolean replaceStandardKeyTitles = true;
93

  
83 94
	//taxa
84 95
	static final boolean doTaxa = true;
85 96
	
97
	static final boolean reuseState = true;
98
	
86 99
	
87 100
	//if true, use inverse include information
88
	private boolean inverseInclude = true;
101
	private boolean inverseInclude = false;
89 102
	
90
	private boolean includeFdg1 = false;
103
	private boolean includeFdg1 = true;
91 104
	private boolean includeFdg2 = true;
92 105
	private boolean includeFdg3 = true;
93 106
	private boolean includeFdg4 = true;
......
101 114
	private boolean includeFdg11 = true;
102 115
	
103 116
	
117
// **************** NO CHANGE **********************************************/
104 118
	
105
	
106
//	
107
		
108
	private boolean replaceStandardKeyTitles = false;
109

  
110 119
	private IIoObserver observer = new LoggingIoObserver();
111 120
	private Set<IIoObserver> observerList = new HashSet<IIoObserver>();
112 121
	
......
130 139
		config.setObservers(observerList);
131 140
		config.setReplaceStandardKeyTitles(replaceStandardKeyTitles);
132 141
		config.setSourceReference(getSourceReference("Flore du Gabon"));
142
		config.setClassificationName(classificationTitle);
143
		config.setReuseExistingState(reuseState);
133 144
		
134 145
		myImport = new CdmDefaultImport<MarkupImportConfigurator>(); 
135 146
		
......
173 184
		FeatureTree tree = makeFeatureNode(myImport.getCdmAppController().getTermService());
174 185
		myImport.getCdmAppController().getFeatureTreeService().saveOrUpdate(tree);
175 186
		
187
		FeatureTree automatedTree = makeAutomatedFeatureTree();
188
		
189
		
190
		
176 191
		//check keys
177 192
		if (doPrintKeys){
178 193
			TransactionStatus tx = myImport.getCdmAppController().startTransaction();
......
204 219
		result.setTitleCache(string);
205 220
		return result;
206 221
	}
222
	
223
	
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

  
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
	}
207 280

  
208 281
	private FeatureTree makeFeatureNode(ITermService service){
209 282
		MarkupTransformer transformer = new MarkupTransformer();
210 283
		
211
		FeatureTree result = FeatureTree.NewInstance(featureTreeUuid);
212
		result.setTitleCache("Flore Gabon Presentation Feature Tree");
284
		FeatureTree result = FeatureTree.NewInstance();
285
		result.setTitleCache("Old feature tree", true);
213 286
		FeatureNode root = result.getRoot();
214 287
		FeatureNode newNode;
215 288
		

Also available in: Unified diff