fauna europaea import fix
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / CdmImportBase.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.io.common;
11
12 import org.apache.log4j.Logger;
13
14 import eu.etaxonomy.cdm.common.CdmUtils;
15 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
16 import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
17
18 /**
19 * @author a.mueller
20 * @created 01.07.2008
21 * @version 1.0
22 */
23 public abstract class CdmImportBase<CONFIG extends IImportConfigurator, STATE extends ImportStateBase> extends CdmIoBase<STATE> implements ICdmImport<CONFIG, STATE>{
24 @SuppressWarnings("unused")
25 private static Logger logger = Logger.getLogger(CdmImportBase.class);
26
27 protected TaxonomicTree makeTree(STATE state, ReferenceBase ref){
28 String treeName = "TaxonTree (Import)";
29 if (ref != null && CdmUtils.isNotEmpty(ref.getTitleCache())){
30 treeName = ref.getTitleCache();
31 }
32 TaxonomicTree tree = TaxonomicTree.NewInstance(treeName);
33 tree.setReference(ref);
34
35
36 // use defined uuid for first tree
37 CONFIG config = (CONFIG)state.getConfig();
38 if (state.countTrees() < 1 ){
39 tree.setUuid(config.getTreeUuid());
40 }
41 getTaxonService().saveTaxonomicTree(tree);
42 state.putTree(ref, tree);
43 return tree;
44 }
45
46
47 /**
48 * Alternative memory saving method variant of
49 * {@link #makeTree(STATE state, ReferenceBase ref)} which stores only the
50 * UUID instead of the full tree in the <code>ImportStateBase</code> by
51 * using <code>state.putTreeUuid(ref, tree);</code>
52 *
53 * @param state
54 * @param ref
55 * @return
56 */
57 protected TaxonomicTree makeTreeMemSave(STATE state, ReferenceBase ref){
58 String treeName = "TaxonTree (Import)";
59 if (ref != null && CdmUtils.isNotEmpty(ref.getTitleCache())){
60 treeName = ref.getTitleCache();
61 }
62 TaxonomicTree tree = TaxonomicTree.NewInstance(treeName);
63 tree.setReference(ref);
64
65
66 // use defined uuid for first tree
67 CONFIG config = (CONFIG)state.getConfig();
68 if (state.countTrees() < 1 ){
69 tree.setUuid(config.getTreeUuid());
70 }
71 getTaxonService().saveTaxonomicTree(tree);
72 state.putTreeUuid(ref, tree);
73 return tree;
74 }
75
76 }