Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgscacheindexfeatureid.cpp 3 : : -------------------------------------- 4 : : Date : 13.2.2013 5 : : Copyright : (C) 2013 Matthias Kuhn 6 : : Email : matthias at opengis dot ch 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #include "qgscacheindexfeatureid.h" 17 : : #include "qgsfeaturerequest.h" 18 : : #include "qgscachedfeatureiterator.h" 19 : : #include "qgsvectorlayercache.h" 20 : : 21 : 0 : QgsCacheIndexFeatureId::QgsCacheIndexFeatureId( QgsVectorLayerCache *cachedVectorLayer ) 22 : 0 : : C( cachedVectorLayer ) 23 : 0 : { 24 : : 25 : 0 : } 26 : : 27 : 0 : void QgsCacheIndexFeatureId::flushFeature( const QgsFeatureId fid ) 28 : : { 29 : : Q_UNUSED( fid ) 30 : 0 : } 31 : : 32 : 0 : void QgsCacheIndexFeatureId::flush() 33 : : { 34 : 0 : } 35 : : 36 : 0 : void QgsCacheIndexFeatureId::requestCompleted( const QgsFeatureRequest &featureRequest, const QgsFeatureIds &fids ) 37 : : { 38 : 0 : Q_UNUSED( featureRequest ) 39 : 0 : Q_UNUSED( fids ) 40 : 0 : } 41 : : 42 : 0 : bool QgsCacheIndexFeatureId::getCacheIterator( QgsFeatureIterator &featureIterator, const QgsFeatureRequest &featureRequest ) 43 : : { 44 : 0 : switch ( featureRequest.filterType() ) 45 : : { 46 : : case QgsFeatureRequest::FilterFid: 47 : : { 48 : 0 : if ( C->isFidCached( featureRequest.filterFid() ) ) 49 : : { 50 : 0 : featureIterator = QgsFeatureIterator( new QgsCachedFeatureIterator( C, featureRequest ) ); 51 : 0 : return true; 52 : : } 53 : 0 : break; 54 : : } 55 : : case QgsFeatureRequest::FilterFids: 56 : : { 57 : 0 : if ( C->cachedFeatureIds().contains( featureRequest.filterFids() ) ) 58 : : { 59 : 0 : featureIterator = QgsFeatureIterator( new QgsCachedFeatureIterator( C, featureRequest ) ); 60 : 0 : return true; 61 : : } 62 : 0 : break; 63 : : } 64 : : case QgsFeatureRequest::FilterNone: 65 : : case QgsFeatureRequest::FilterExpression: 66 : : { 67 : 0 : if ( C->hasFullCache() ) 68 : : { 69 : 0 : featureIterator = QgsFeatureIterator( new QgsCachedFeatureIterator( C, featureRequest ) ); 70 : 0 : return true; 71 : : } 72 : 0 : break; 73 : : } 74 : : } 75 : : 76 : 0 : return false; 77 : 0 : } 78 : :