2 * Copyright (C) 2009 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
.tcsxml
.in
;
12 import java
.util
.List
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.jdom
.Element
;
16 import org
.jdom
.Namespace
;
17 import org
.springframework
.stereotype
.Component
;
19 import eu
.etaxonomy
.cdm
.api
.service
.IReferenceService
;
20 import eu
.etaxonomy
.cdm
.common
.DoubleResult
;
21 import eu
.etaxonomy
.cdm
.common
.XmlHelp
;
22 import eu
.etaxonomy
.cdm
.io
.common
.ICdmIO
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.ImportHelper
;
25 import eu
.etaxonomy
.cdm
.io
.common
.MapWrapper
;
26 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
34 public class TcsXmlPublicationsImport
extends TcsXmlImportBase
implements ICdmIO
<TcsXmlImportState
> {
35 private static final Logger logger
= Logger
.getLogger(TcsXmlPublicationsImport
.class);
37 private static int modCount
= 1000;
39 public TcsXmlPublicationsImport(){
44 public boolean doCheck(TcsXmlImportState state
){
45 boolean result
= true;
46 result
&= checkArticlesWithoutJournal(state
.getConfig());
47 //result &= checkPartOfJournal(config);
52 private static boolean checkArticlesWithoutJournal(IImportConfigurator bmiConfig
){
54 boolean result
= true;
56 // result = firstRow = false;
60 } catch (Exception e
) {
69 public void doInvoke(TcsXmlImportState state
){
71 logger
.info("start make Publications ...");
72 boolean success
= true;
76 MapWrapper
<Reference
> referenceMap
= (MapWrapper
<Reference
>)state
.getStore(ICdmIO
.REFERENCE_STORE
);
77 IReferenceService referenceService
= getReferenceService();
79 TcsXmlImportConfigurator config
= state
.getConfig();
80 Element elDataSet
= getDataSetElement(config
);
81 Namespace tcsNamespace
= config
.getTcsXmlNamespace();
83 DoubleResult
<Element
, Boolean
> doubleResult
;
84 childName
= "Publications";
86 doubleResult
= XmlHelp
.getSingleChildElement(elDataSet
, childName
, tcsNamespace
, obligatory
);
87 success
&= doubleResult
.getSecondResult();
88 Element elPublications
= doubleResult
.getFirstResult();
90 String tcsElementName
= "Publication";
91 String idNamespace
= "Publication";
92 List
<Element
> elPublicationList
= elPublications
.getChildren(tcsElementName
, tcsNamespace
);
96 for (Element elPublication
: elPublicationList
){
97 if ((++i
% modCount
) == 0){ logger
.info("publications handled: " + (i
-1));}
99 //create TaxonName element
100 String strId
= elPublication
.getAttributeValue("id");
102 childName
= "Simple";
104 doubleResult
= XmlHelp
.getSingleChildElement(elPublication
, childName
, tcsNamespace
, obligatory
);
105 success
&= doubleResult
.getSecondResult();
106 Element elSimple
= doubleResult
.getFirstResult();
108 String simple
= elSimple
.getTextNormalize();
110 Reference
<?
> reference
= ReferenceFactory
.newGeneric();
111 reference
.setTitleCache(simple
, true);
113 childName
= "PublicationDetailed";
115 doubleResult
= XmlHelp
.getSingleChildElement(elPublication
, childName
, tcsNamespace
, obligatory
);
116 success
&= doubleResult
.getSecondResult();
117 Element elPublicationDetailed
= doubleResult
.getFirstResult();
119 success
&= config
.getPlaceholderClass().makePublicationDetailed(config
, elPublicationDetailed
, reference
);
120 ImportHelper
.setOriginalSource(reference
, config
.getSourceReference(), strId
, idNamespace
);
122 referenceMap
.put(strId
, reference
);
126 // //save and store in map
127 // logger.info("Save nomenclatural references (" + nomRefCount + ")");
128 // referenceService.saveReferenceAll(nomRefMap.objects());
129 logger
.info("Save bibliographical references (" + i
+")");
130 referenceService
.save(referenceMap
.objects());
132 logger
.info("end make publications ...");
134 state
.setUnsuccessfull();
140 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
142 protected boolean isIgnore(TcsXmlImportState state
){
143 return (state
.getConfig().getDoReferences() == IImportConfigurator
.DO_REFERENCES
.NONE
);