Revision a2d00c04
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; |
|
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
latest eFlora activator and source changes