View Javadoc

1   /*
2    * Copyright (c) 2002 Peter Antman, Teknik i Media  <peter.antman@tim.se>
3    *
4    * $Id: ResourceSetCursor.java,v 1.1.1.1 2004/05/19 14:10:47 pra Exp $
5    *
6    * This library is free software; you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public
8    * License as published by the Free Software Foundation; either
9    * version 2 of the License, or (at your option) any later version
10   * 
11   * This library is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   * Lesser General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Lesser General Public
17   * License along with this library; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */
20  package org.backsource.xindice.cursor;
21  import java.util.AbstractList;
22  import org.apache.log4j.Logger;
23  import org.xmldb.api.base.ResourceSet;
24  import org.xmldb.api.base.XMLDBException;
25  import org.backsource.xindice.XindiceException;
26  /***
27   * Cursor for an XML:DB ResourceSet, is mostly used to get the cursor chain going, or for subclassing or usage as a delegator.
28   *
29   * @author <a href="mailto:pra@tim.se">Peter Antman</a>
30   * @version $Revision: 1.1.1.1 $
31   */
32  
33  public class ResourceSetCursor extends AbstractList implements Cursor {
34     private static Logger log = Logger.getLogger(ResourceSetCursor .class);
35     protected ResourceSet set; 
36     public ResourceSetCursor (ResourceSet set){
37        this.set = set;
38     }
39     
40     /***
41      * Throws an XindiceException if used!.
42      */
43     public void setSource(Cursor cursor) throws XindiceException {
44        throw new XindiceException("This cursor can not have another cursor as a source");
45     }
46     
47     public Object get(int i) throws java.lang.IndexOutOfBoundsException,IllegalStateException {
48        if ( set == null) {
49           throw new java.lang.IndexOutOfBoundsException("Set is null");
50        } // end of if ()
51        try {
52           return set.getResource(i);
53        } catch (XMLDBException e) {
54           log.error("Could not get resource from XML:DB: " + e,e);
55           throw new IllegalStateException("Could not get resource from XML:DB: " + e);
56        } // end of try-catch
57  
58     }
59     
60     public int size() throws IllegalStateException{
61        try {
62           return set != null? (int)set.getSize() : 0; 
63        } catch (XMLDBException e) {
64           log.error("Could not get size from XML:DB: " + e,e);
65           throw new IllegalStateException("Could not get size from XML:DB: " + e);
66        } // end of try-catch
67       
68     }
69  
70  }// ResourceSetCursor