1 17 package org.alfresco.jcr.query; 18 19 import java.io.Serializable ; 20 import java.util.List ; 21 import java.util.Map ; 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 41 public class NodeRefRowIteratorImpl extends AbstractRangeIterator implements RowIterator 42 { 43 private SessionImpl session; 44 private Map <QName, PropertyDefinition> columns; 45 private List <NodeRef> nodeRefs; 46 private RowIterator proxy = null; 47 48 55 public NodeRefRowIteratorImpl(SessionImpl session, Map <QName, PropertyDefinition> columns, List <NodeRef> nodeRefs) 56 { 57 this.session = session; 58 this.columns = columns; 59 this.nodeRefs = nodeRefs; 60 } 61 62 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 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 <QName, Serializable > properties = nodeService.getProperties(nodeRef); 85 return new PropertyMapRowImpl(session, columns, nodeRef, properties); 86 } 87 88 91 public long getSize() 92 { 93 return nodeRefs.size(); 94 } 95 96 99 public Object next() 100 { 101 return nextRow(); 102 } 103 104 } 105 | Popular Tags |