2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.io
.tcsrdf
;
12 import java
.util
.HashSet
;
13 import java
.util
.List
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.jdom
.Attribute
;
18 import org
.jdom
.Element
;
19 import org
.jdom
.Namespace
;
20 import org
.springframework
.stereotype
.Component
;
22 import eu
.etaxonomy
.cdm
.api
.service
.INameService
;
23 import eu
.etaxonomy
.cdm
.io
.common
.ICdmIO
;
24 import eu
.etaxonomy
.cdm
.io
.common
.MapWrapper
;
25 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
26 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
34 public class TcsRdfTaxonNameRelationsImport
extends TcsRdfImportBase
implements ICdmIO
<TcsRdfImportState
> {
35 private static final Logger logger
= Logger
.getLogger(TcsRdfTaxonNameRelationsImport
.class);
37 private static int modCount
= 5000;
39 public TcsRdfTaxonNameRelationsImport(){
44 public boolean doCheck(TcsRdfImportState state
){
45 boolean result
= true;
46 logger
.warn("Checking for TaxonNameRelations not yet implemented");
47 //result &= checkArticlesWithoutJournal(tcsConfig);
48 //result &= checkPartOfJournal(tcsConfig);
54 public boolean doInvoke(TcsRdfImportState state
){
56 MapWrapper
<TaxonNameBase
> taxonNameMap
= (MapWrapper
<TaxonNameBase
>)state
.getStore(ICdmIO
.TAXONNAME_STORE
);
57 MapWrapper
<ReferenceBase
> referenceMap
= (MapWrapper
<ReferenceBase
>)state
.getStore(ICdmIO
.REFERENCE_STORE
);
59 String tcsElementName
;
60 Namespace tcsNamespace
;
64 Set
<TaxonNameBase
> nameStore
= new HashSet
<TaxonNameBase
>();
65 TcsRdfImportConfigurator config
= state
.getConfig();
66 Element source
= config
.getSourceRoot();
68 logger
.info("start makeNameRelationships ...");
69 INameService nameService
= getNameService();
71 // <tn:hasBasionym rdf:resource="palm_tn_14530"/>
73 Element root
= config
.getSourceRoot();
74 boolean success
=true;
76 Namespace rdfNamespace
= config
.getRdfNamespace();
77 Namespace taxonNameNamespace
= config
.getTnNamespace();
79 List
<Element
> elTaxonNames
= root
.getChildren("TaxonName", taxonNameNamespace
);
84 for (Element elTaxonName
: elTaxonNames
){
86 TaxonNameBase fromName
= null;
87 if ((++i
% modCount
) == 0){ logger
.info("Names handled: " + (i
-1));}
90 tcsElementName
= "hasBasionym";
91 tcsNamespace
= taxonNameNamespace
;
92 List
<Element
> elBasionymList
= elTaxonName
.getChildren(tcsElementName
, tcsNamespace
);
94 for (Element elBasionym
: elBasionymList
){
96 logger
.debug("BASIONYM "+ nameRelCount
);
97 tcsElementName
= "resource";
98 tcsNamespace
= rdfNamespace
;
99 Attribute attrResource
= elBasionym
.getAttribute(tcsElementName
, tcsNamespace
);
100 if (attrResource
== null){
101 logger
.warn("Basionym rdf:resource is missing ! Basionym not set!");
104 String basionymId
= attrResource
.getValue();
105 TaxonNameBase basionym
= taxonNameMap
.get(basionymId
);
106 if (basionym
== null){
107 logger
.warn("Basionym name ("+basionymId
+") not found in Map! Basionym not set!");
110 if (fromName
== null){
111 Attribute about
= elTaxonName
.getAttribute("about", rdfNamespace
);
113 fromName
= taxonNameMap
.get(about
.getValue() );
115 if (fromName
== null){
116 logger
.warn("From name ("+about
+") not found in Map! Basionym not set!");
120 String ruleConcidered
= null; //TODO
121 String microCitation
= null; //TODO;
122 ReferenceBase citation
= null; //TODO;
123 fromName
.addBasionym(basionym
, citation
, microCitation
, ruleConcidered
);
124 nameStore
.add(fromName
);
132 logger
.info(nameRelCount
+ " nameRelations handled");
133 nameService
.save(nameStore
);
134 logger
.info("end makeNameRelationships ...");
139 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
141 protected boolean isIgnore(TcsRdfImportState state
){
142 return ! state
.getConfig().isDoRelNames();