Revision 70086918
Added by Andreas Müller almost 11 years ago
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
added automated feature tree creation for FdG