View Javadoc

1   package com.ontotext.ordi.rdbms;
2   
3   import java.util.NoSuchElementException;
4   
5   import org.openrdf.model.URI;
6   
7   import com.ontotext.ordi.iterator.CloseableIterator;
8   import com.ontotext.ordi.mapper.model.RDFResultSet;
9   import com.ontotext.ordi.tripleset.TFactory;
10  import com.ontotext.ordi.tripleset.TStatement;
11  
12  public class RDBMSCloseableIterator implements CloseableIterator<TStatement> {
13  
14      private boolean isClosed = false;
15      private RDFResultSet resultSet;
16      private TFactory factory;
17      private TStatement statement;
18  
19      public RDBMSCloseableIterator(RDFResultSet resultSet, TFactory factory) {
20          if (resultSet == null || factory == null) {
21              throw new IllegalArgumentException();
22          }
23          this.resultSet = resultSet;
24          this.factory = factory;
25      }
26  
27      public void close() {
28          isClosed = true;
29          resultSet.close();
30      }
31  
32      public boolean hasNext() {
33          if (statement == null) {
34              if (resultSet.next() == false)
35                  return false;
36              statement = factory.createStatement(resultSet.getSubject(),
37                      resultSet.getPredicate(), resultSet.getObject(), resultSet
38                              .getNamedGraph(), new URI[0]);
39          }
40          return true;
41      }
42  
43      public TStatement next() {
44          if (isClosed)
45              throw new NoSuchElementException("Iterator is closed!");
46          if (hasNext() == false)
47              throw new NoSuchElementException("No more elements are available!");
48          TStatement result = statement;
49          statement = null;
50          return result;
51      }
52  
53      public void remove() {
54          if (!isClosed)
55              throw new NoSuchElementException("Iterator is closed!");
56      }
57  }