View Javadoc

1   package net.sourceforge.xmlfit.data.impl;
2   
3   import java.io.File;
4   import java.util.Iterator;
5   
6   import javax.xml.parsers.DocumentBuilder;
7   import javax.xml.parsers.DocumentBuilderFactory;
8   
9   import net.sourceforge.xmlfit.data.DataSet;
10  import net.sourceforge.xmlfit.data.DataSource;
11  import net.sourceforge.xmlfit.data.DataSourceProvider;
12  
13  import org.apache.log4j.Logger;
14  import org.w3c.dom.Document;
15  import org.w3c.dom.Node;
16  import org.w3c.dom.NodeList;
17  
18  @DataSourceProvider(fileExtension="XML")
19  public class XMLDataSourceImpl implements DataSource, Iterator<DataSet> {
20  
21  	private static Logger logger = 
22  		Logger.getLogger(XMLDataSourceImpl.class);
23  	
24  	private int actualIndex = 0;
25  	
26  	private Document document;
27  
28  	private NodeList dataSets;
29  
30  	public XMLDataSourceImpl(String fileName) {
31  		try {
32  			DocumentBuilderFactory factory = 
33  				DocumentBuilderFactory.newInstance();
34  			DocumentBuilder documentBuilder = factory.newDocumentBuilder();
35  			document = documentBuilder.parse(new File(fileName));
36  			dataSets = document.getElementsByTagName("dataSet");
37  			
38  		} catch (Exception e) {
39  			logger.error("Error on loading data file with name: " +fileName);
40  			logger.error(e);
41  			throw new XmlLoadingException(e);
42  		}
43  	}
44  
45  	public Iterator<DataSet> iterator() {
46  		return this;
47  	}
48  
49  	public boolean hasNext() {
50  		return actualIndex < dataSets.getLength();
51  	}
52  
53  	public DataSet next() {
54  		Node dataSetNode = dataSets.item(actualIndex++);
55  		return new XMLDataSetImpl(dataSetNode);
56  	}
57  
58  	public void remove() {
59  		
60  	}
61  
62  }