Project

General

Profile

Download (4.47 KB) Statistics
| Branch: | Tag: | Revision:
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.tcsrdf;
11

    
12
import java.util.HashSet;
13
import java.util.Set;
14

    
15
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
16
import org.jdom.Namespace;
17
import org.springframework.stereotype.Component;
18

    
19
import com.hp.hpl.jena.rdf.model.Model;
20

    
21
import eu.etaxonomy.cdm.api.service.INameService;
22
import eu.etaxonomy.cdm.io.common.ICdmIO;
23
import eu.etaxonomy.cdm.io.common.MapWrapper;
24
import eu.etaxonomy.cdm.model.name.TaxonName;
25
import eu.etaxonomy.cdm.model.reference.Reference;
26

    
27
/**
28
 * @author a.mueller
29
 * @since 29.05.2008
30
 */
31
@Component
32
public class TcsRdfTaxonNameRelationsImport extends TcsRdfImportBase implements ICdmIO<TcsRdfImportState> {
33
    private static final long serialVersionUID = 3886480984730604589L;
34

    
35
    private static final Logger logger = LogManager.getLogger(TcsRdfTaxonNameRelationsImport.class);
36

    
37
	private static int modCount = 5000;
38

    
39
	public TcsRdfTaxonNameRelationsImport(){
40
		super();
41
	}
42

    
43
	@Override
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);
49

    
50
		return result;
51
	}
52

    
53
	@Override
54
	public void doInvoke(TcsRdfImportState state){
55

    
56
		MapWrapper<TaxonName> taxonNameMap = (MapWrapper<TaxonName>)state.getStore(ICdmIO.TAXONNAME_STORE);
57
		MapWrapper<Reference> referenceMap = (MapWrapper<Reference>)state.getStore(ICdmIO.REFERENCE_STORE);
58

    
59
		String tcsElementName;
60
		Namespace tcsNamespace;
61
		String cdmAttrName;
62
		String value;
63

    
64
		Set<TaxonName> nameStore = new HashSet<TaxonName>();
65
		TcsRdfImportConfigurator config = state.getConfig();
66
		//Model source = config.getSourceRoot();
67

    
68
		logger.info("start makeNameRelationships ...");
69
		INameService nameService = getNameService();
70

    
71
//		<tn:hasBasionym rdf:resource="palm_tn_14530"/>
72

    
73
		Model root = config.getSourceRoot();
74

    
75
		String rdfNamespace = config.getRdfNamespaceURIString();
76
		String taxonNameNamespace = config.getTnNamespaceURIString();
77
		/*
78
		List<Element> elTaxonNames = root.getChildren("TaxonName", taxonNameNamespace);
79

    
80
		int i = 0;
81
		int nameRelCount = 0;
82
		//for each taxonName
83
		for (Element elTaxonName : elTaxonNames){
84

    
85
			TaxonName fromName = null;
86
			if ((++i % modCount) == 0){ logger.info("Names handled: " + (i-1));}
87

    
88
			//Basionyms
89
			tcsElementName = "hasBasionym";
90
			tcsNamespace = taxonNameNamespace;
91
			List<Element> elBasionymList = elTaxonName.getChildren(tcsElementName, tcsNamespace);
92

    
93
			for (Element elBasionym: elBasionymList){
94
				nameRelCount++;
95
				logger.debug("BASIONYM "+  nameRelCount);
96
				tcsElementName = "resource";
97
				tcsNamespace = rdfNamespace;
98
				Attribute attrResource = elBasionym.getAttribute(tcsElementName, tcsNamespace);
99
				if (attrResource == null){
100
					logger.warn("Basionym rdf:resource is missing ! Basionym not set!");
101
					continue;
102
				}
103
				String basionymId = attrResource.getValue();
104
				TaxonName basionym = taxonNameMap.get(basionymId);
105
				if (basionym == null){
106
					logger.warn("Basionym name ("+basionymId+") not found in Map! Basionym not set!");
107
					continue;
108
				}
109
				if (fromName == null){
110
					Attribute about = elTaxonName.getAttribute("about", rdfNamespace);
111
					if (about != null){
112
						fromName = taxonNameMap.get(about.getValue() );
113
					}
114
					if (fromName == null){
115
						logger.warn("From name ("+about+") not found in Map! Basionym not set!");
116
						continue;
117
					}
118
				}
119
				String ruleConcidered = null; //TODO
120
				String microCitation = null; //TODO;
121
				Reference citation = null; //TODO;
122
				fromName.addBasionym(basionym, citation, microCitation, ruleConcidered);
123
				nameStore.add(fromName);
124

    
125
			}
126
		}// end Basionyms
127

    
128
		//Other Relations
129
		//TODO
130

    
131
		logger.info(nameRelCount + " nameRelations handled");
132
		nameService.save(nameStore);
133
		logger.info("end makeNameRelationships ...");
134
		*/
135
		return;
136
	}
137

    
138
	/* (non-Javadoc)
139
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IImportConfigurator)
140
	 */
141
	@Override
142
    protected boolean isIgnore(TcsRdfImportState state){
143
		return ! state.getConfig().isDoRelNames();
144
	}
145

    
146
}
(11-11/13)