KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > jcr > query > NodeRefRowIteratorImpl


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.jcr.query;
18
19 import java.io.Serializable JavaDoc;
20 import java.util.List JavaDoc;
21 import java.util.Map JavaDoc;
22
23 import javax.jcr.nodetype.PropertyDefinition;
24 import javax.jcr.query.Query;
25 import javax.jcr.query.Row;
26 import javax.jcr.query.RowIterator;
27
28 import org.alfresco.jcr.session.SessionImpl;
29 import org.alfresco.jcr.util.AbstractRangeIterator;
30 import org.alfresco.jcr.util.JCRProxyFactory;
31 import org.alfresco.service.cmr.repository.NodeRef;
32 import org.alfresco.service.cmr.repository.NodeService;
33 import org.alfresco.service.namespace.QName;
34
35
36 /**
37  * Row Iterator based on a list of Node References
38  *
39  * @author David Caruana
40  */

41 public class NodeRefRowIteratorImpl extends AbstractRangeIterator implements RowIterator
42 {
43     private SessionImpl session;
44     private Map JavaDoc<QName, PropertyDefinition> columns;
45     private List JavaDoc<NodeRef> nodeRefs;
46     private RowIterator proxy = null;
47     
48     /**
49      * Construct
50      *
51      * @param session
52      * @param columnNames
53      * @param nodeRefs
54      */

55     public NodeRefRowIteratorImpl(SessionImpl session, Map JavaDoc<QName, PropertyDefinition> columns, List JavaDoc<NodeRef> nodeRefs)
56     {
57         this.session = session;
58         this.columns = columns;
59         this.nodeRefs = nodeRefs;
60     }
61
62     /**
63      * Get proxied JCR Query
64      *
65      * @return proxy
66      */

67     public RowIterator getProxy()
68     {
69         if (proxy == null)
70         {
71             proxy = (RowIterator)JCRProxyFactory.create(this, RowIterator.class, session);
72         }
73         return proxy;
74     }
75     
76     /* (non-Javadoc)
77      * @see javax.jcr.query.RowIterator#nextRow()
78      */

79     public Row nextRow()
80     {
81         long position = skip();
82         NodeRef nodeRef = nodeRefs.get((int)position);
83         NodeService nodeService = session.getRepositoryImpl().getServiceRegistry().getNodeService();
84         Map JavaDoc<QName, Serializable JavaDoc> properties = nodeService.getProperties(nodeRef);
85         return new PropertyMapRowImpl(session, columns, nodeRef, properties);
86     }
87
88     /* (non-Javadoc)
89      * @see javax.jcr.RangeIterator#getSize()
90      */

91     public long getSize()
92     {
93         return nodeRefs.size();
94     }
95
96     /* (non-Javadoc)
97      * @see java.util.Iterator#next()
98      */

99     public Object JavaDoc next()
100     {
101         return nextRow();
102     }
103     
104 }
105
Popular Tags