Project

General

Profile

Download (7.49 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.io.InputStream;
13
import java.net.MalformedURLException;
14
import java.net.URL;
15

    
16
import org.apache.log4j.Logger;
17
import org.jdom.Element;
18
import org.jdom.Namespace;
19

    
20
import eu.etaxonomy.cdm.common.XmlHelp;
21
import eu.etaxonomy.cdm.database.ICdmDataSource;
22
import eu.etaxonomy.cdm.io.common.IImportConfigurator;
23
import eu.etaxonomy.cdm.io.common.ImportConfiguratorBase;
24
import eu.etaxonomy.cdm.io.common.mapping.IInputTransformer;
25
import eu.etaxonomy.cdm.model.reference.IDatabase;
26
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
27
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
28

    
29
/**
30
 * @author a.mueller
31
 * @created 29.05.2008
32
 * @version 1.0
33
 */
34
public class TcsRdfImportConfigurator extends ImportConfiguratorBase<TcsRdfImportState> implements IImportConfigurator {
35
	private static final Logger logger = Logger.getLogger(TcsRdfImportConfigurator.class);
36
	
37
	
38
	//TODO
39
	private static IInputTransformer defaultTransformer = null;
40

    
41
	
42
	//if false references in this rdf file are not published in the bibliography list
43
	private boolean isPublishReferences = true;
44
	
45
	//rdfNamespace
46
	private Namespace rdfNamespace;
47
	//TaxonConcept namespace
48
	private Namespace tcNamespace;
49
	//TaxonName namespace
50
	private Namespace tnNamespace;
51
	//TDWG common namespace
52
	private Namespace commonNamespace;
53
	//TDWG geoNamespace
54
	private Namespace geoNamespace;
55
	//publicationNamespace
56
	private Namespace publicationNamespace;
57
	//palmNamespace
58
	private Namespace palmNamespace;
59
	
60
//TODO	
61
	protected static Namespace nsTcom = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/Common#");
62
	protected static Namespace nsTn = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonName#");
63
	protected static Namespace nsTgeo = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/GeographicRegion#");
64
	protected static Namespace nsTc = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/TaxonConcept#");
65
	protected static Namespace nsTpub = Namespace.getNamespace("http://rs.tdwg.org/ontology/voc/PublicationCitation#");
66
	protected static Namespace nsTpalm = Namespace.getNamespace("http://wp5.e-taxonomy.eu/import/palmae/common");
67

    
68
	protected void makeIoClassList(){
69
		ioClassList = new Class[]{
70
			TcsRdfReferenceImport.class
71
			, TcsRdfTaxonNameImport.class
72
			, TcsRdfTaxonNameRelationsImport.class
73
			, TcsRdfTaxonImport.class
74
			, TcsRdfTaxonRelationsImport.class
75
		};
76
	};
77
	
78
	public static TcsRdfImportConfigurator NewInstance(String url,
79
			ICdmDataSource destination){
80
		return new TcsRdfImportConfigurator(url, destination);
81
	}
82
	
83
	//TODO for spring use only 
84
	private TcsRdfImportConfigurator(){
85
		super(defaultTransformer);
86
		
87
	}
88
	
89
	
90
	/**
91
	 * @param berlinModelSource
92
	 * @param sourceReference
93
	 * @param destination
94
	 */
95
	private TcsRdfImportConfigurator(String url, ICdmDataSource destination) {
96
		super(defaultTransformer);
97
		setSource(url);
98
		setDestination(destination);
99
	}
100
	
101

    
102
	/* (non-Javadoc)
103
	 * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSource()
104
	 */
105
	public String getSource() {
106
		return (String)super.getSource();
107
	}
108
	
109
	/**
110
	 * @param file
111
	 */
112
	public void setSource(String file) {
113
		super.setSource(file);
114
	}
115
	
116
	/**
117
	 * @return
118
	 */
119
	public Element getSourceRoot(){
120
		String source = getSource();
121
		try {
122
			URL url;
123
			url = new URL(source);
124
			Object o = url.getContent();
125
			InputStream is = (InputStream)o;
126
			Element root = XmlHelp.getRoot(is);
127
			makeNamespaces(root);
128
			return root;
129
		} catch (MalformedURLException e) {
130
			e.printStackTrace();
131
		}catch (Exception e) {
132
			// TODO Auto-generated catch block
133
			e.printStackTrace();
134
		}
135
		return null;
136
	}
137
	
138
	private boolean makeNamespaces(Element root){
139
		//String strTnNamespace = "http://rs.tdwg.org/ontology/voc/TaxonName#";
140
		//Namespace taxonNameNamespace = Namespace.getNamespace("tn", strTnNamespace);
141

    
142
		String prefix;
143
		rdfNamespace = root.getNamespace();
144
		prefix = "tc";
145
		tcNamespace = root.getNamespace(prefix);
146
		prefix = "tn";
147
		tnNamespace = root.getNamespace(prefix);
148
		prefix = "tcom";
149
		commonNamespace = root.getNamespace(prefix);
150
		prefix = "tgeo";
151
		geoNamespace = root.getNamespace(prefix);
152
		prefix = "tpub";
153
		publicationNamespace = root.getNamespace(prefix);
154
		
155
		prefix = "tpalm";
156
		palmNamespace = root.getNamespace(prefix);
157
		
158
		if (rdfNamespace == null || tcNamespace == null || tnNamespace == null ||
159
				commonNamespace == null ||	geoNamespace == null || publicationNamespace == null 
160
				|| palmNamespace == null){
161
			logger.warn("At least one Namespace is NULL");
162
		}
163
		return true;
164
	}
165

    
166

    
167
	/* (non-Javadoc)
168
	 * @see eu.etaxonomy.cdm.io.common.ImportConfiguratorBase#getSourceReference()
169
	 */
170
	@Override
171
	public ReferenceBase getSourceReference() {
172
		//TODO
173
		if (this.sourceReference == null){
174
			logger.warn("getSource Reference not yet fully implemented");
175
			ReferenceFactory refFactory = ReferenceFactory.newInstance();
176
			sourceReference = refFactory.newDatabase();
177
			sourceReference.setTitleCache("XXX", true);
178
		}
179
		return sourceReference;
180
	}
181

    
182

    
183
	/* (non-Javadoc)
184
	 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getSourceNameString()
185
	 */
186
	public String getSourceNameString() {
187
		if (this.getSource() == null){
188
			return null;
189
		}else{
190
			return this.getSource();
191
		}
192
	}
193
	
194
	public Namespace getRdfNamespace() {
195
		return rdfNamespace;
196
	}
197

    
198
	public void setRdfNamespace(Namespace rdfNamespace) {
199
		this.rdfNamespace = rdfNamespace;
200
	}
201

    
202
	public Namespace getTcNamespace() {
203
		return tcNamespace;
204
	}
205

    
206
	public void setTcNamespace(Namespace tcNamespace) {
207
		this.tcNamespace = tcNamespace;
208
	}
209

    
210
	public Namespace getTnNamespace() {
211
		return tnNamespace;
212
	}
213

    
214
	public void setTnNamespace(Namespace tnNamespace) {
215
		this.tnNamespace = tnNamespace;
216
	}
217

    
218
	public Namespace getCommonNamespace() {
219
		return commonNamespace;
220
	}
221

    
222
	public void setCommonNamespace(Namespace commonNamespace) {
223
		this.commonNamespace = commonNamespace;
224
	}
225

    
226
	public Namespace getGeoNamespace() {
227
		return geoNamespace;
228
	}
229

    
230
	public void setGeoNamespace(Namespace geoNamespace) {
231
		this.geoNamespace = geoNamespace;
232
	}
233

    
234
	public Namespace getPublicationNamespace() {
235
		return publicationNamespace;
236
	}
237

    
238
	public void setPublicationNamespace(Namespace publicationNamespace) {
239
		this.publicationNamespace = publicationNamespace;
240
	}
241
	/**
242
	 * @return the palmNamespace
243
	 */
244
	public Namespace getPalmNamespace() {
245
		return palmNamespace;
246
	}
247

    
248
	/**
249
	 * @param palmNamespace the palmNamespace to set
250
	 */
251
	public void setPalmNamespace(Namespace palmNamespace) {
252
		this.palmNamespace = palmNamespace;
253
	}
254

    
255
	/**
256
	 * if false references in this rdf file are not published in the bibliography list
257
	 * @return the isPublishReferences
258
	 */
259
	public boolean isPublishReferences() {
260
		return isPublishReferences;
261
	}
262

    
263
	/**
264
	 * @param isPublishReferences the isPublishReferences to set
265
	 */
266
	public void setPublishReferences(boolean isPublishReferences) {
267
		this.isPublishReferences = isPublishReferences;
268
	}
269

    
270
	/* (non-Javadoc)
271
	 * @see eu.etaxonomy.cdm.io.common.IImportConfigurator#getNewState()
272
	 */
273
	public TcsRdfImportState getNewState() {
274
		return new TcsRdfImportState(this);
275
	}
276
	
277

    
278
	
279
	
280
}
(6-6/13)