motion-yapper 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -1
- data/lib/yapper.rb +3 -3
- data/lib/yapper/db.rb +61 -4
- data/lib/yapper/document/persistence.rb +4 -0
- data/lib/yapper/document/selection.rb +13 -0
- data/lib/yapper/version.rb +1 -1
- data/motion-yapper.gemspec +1 -1
- data/spec/integration/search_spec.rb +111 -0
- data/vendor/Podfile.lock +11 -7
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +16 -2
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +10 -7
- data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +20 -2
- metadata +19 -297
- data/vendor/Pods/.build/libPods-CocoaLumberjack.a +0 -0
- data/vendor/Pods/.build/libPods-NSData+MD5Digest.a +0 -0
- data/vendor/Pods/.build/libPods-YapDatabase.a +0 -0
- data/vendor/Pods/.build/libPods.a +0 -0
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +0 -41
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +0 -102
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDContextFilterLogFormatter.h +0 -63
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDDispatchQueueLogFormatter.h +0 -128
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +0 -369
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog+LOGV.h +0 -99
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +0 -634
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDMultiFormatter.h +0 -30
- data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +0 -181
- data/vendor/Pods/BuildHeaders/NSData+MD5Digest/NSData+MD5Digest.h +0 -18
- data/vendor/Pods/BuildHeaders/YapDatabase/NSDictionary+YapDatabase.h +0 -8
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +0 -91
- data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +0 -23
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +0 -547
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +0 -449
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnectionState.h +0 -29
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +0 -37
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtension.h +0 -15
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionConnection.h +0 -11
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +0 -444
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionTransaction.h +0 -11
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +0 -81
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewConnection.h +0 -12
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +0 -39
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTypes.h +0 -32
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearch.h +0 -89
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchConnection.h +0 -32
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +0 -77
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +0 -79
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchTransaction.h +0 -68
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseLogging.h +0 -158
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseManager.h +0 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +0 -446
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseQuery.h +0 -42
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationship.h +0 -35
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipConnection.h +0 -29
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdge.h +0 -163
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdgePrivate.h +0 -79
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipNode.h +0 -99
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipOptions.h +0 -59
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipPrivate.h +0 -125
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipTransaction.h +0 -384
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +0 -149
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexConnection.h +0 -33
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +0 -83
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetup.h +0 -33
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetupPrivate.h +0 -18
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +0 -58
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseStatement.h +0 -13
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseString.h +0 -121
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +0 -651
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +0 -127
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +0 -272
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChangePrivate.h +0 -94
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +0 -116
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +0 -842
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappingsPrivate.h +0 -72
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +0 -63
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPage.h +0 -36
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPageMetadata.h +0 -27
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +0 -170
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptions.h +0 -330
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +0 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +0 -498
- data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTypes.h +0 -99
- data/vendor/Pods/BuildHeaders/YapDatabase/YapMemoryTable.h +0 -74
- data/vendor/Pods/BuildHeaders/YapDatabase/YapNull.h +0 -17
- data/vendor/Pods/BuildHeaders/YapDatabase/YapSet.h +0 -41
- data/vendor/Pods/BuildHeaders/YapDatabase/YapTouch.h +0 -15
- data/vendor/Pods/CocoaLumberjack/LICENSE.txt +0 -18
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +0 -41
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +0 -100
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +0 -102
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +0 -727
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +0 -369
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +0 -1539
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog+LOGV.h +0 -99
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +0 -634
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +0 -1208
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +0 -181
- data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +0 -1520
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDContextFilterLogFormatter.h +0 -63
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDContextFilterLogFormatter.m +0 -191
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDDispatchQueueLogFormatter.h +0 -128
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDDispatchQueueLogFormatter.m +0 -253
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.h +0 -30
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.m +0 -127
- data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +0 -7
- data/vendor/Pods/CocoaLumberjack/README.markdown +0 -74
- data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +0 -41
- data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +0 -102
- data/vendor/Pods/Headers/CocoaLumberjack/DDContextFilterLogFormatter.h +0 -63
- data/vendor/Pods/Headers/CocoaLumberjack/DDDispatchQueueLogFormatter.h +0 -128
- data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +0 -369
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog+LOGV.h +0 -99
- data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +0 -634
- data/vendor/Pods/Headers/CocoaLumberjack/DDMultiFormatter.h +0 -30
- data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +0 -181
- data/vendor/Pods/Headers/NSData+MD5Digest/NSData+MD5Digest.h +0 -18
- data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +0 -23
- data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +0 -547
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +0 -449
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtension.h +0 -15
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionConnection.h +0 -11
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionTransaction.h +0 -11
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +0 -81
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewConnection.h +0 -12
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +0 -39
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTypes.h +0 -32
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearch.h +0 -89
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchConnection.h +0 -32
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchSnippetOptions.h +0 -79
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchTransaction.h +0 -68
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseQuery.h +0 -42
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationship.h +0 -35
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipConnection.h +0 -29
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipEdge.h +0 -163
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipNode.h +0 -99
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipOptions.h +0 -59
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipTransaction.h +0 -384
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +0 -149
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexConnection.h +0 -33
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexSetup.h +0 -33
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexTransaction.h +0 -58
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +0 -651
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +0 -127
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +0 -272
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +0 -116
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +0 -842
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +0 -63
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptions.h +0 -330
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +0 -498
- data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTypes.h +0 -99
- data/vendor/Pods/Headers/YapDatabase/YapSet.h +0 -41
- data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +0 -7
- data/vendor/Pods/Headers/____Pods-NSData+MD5Digest-prefix.h +0 -5
- data/vendor/Pods/Headers/____Pods-YapDatabase-prefix.h +0 -5
- data/vendor/Pods/Headers/____Pods-environment.h +0 -38
- data/vendor/Pods/Manifest.lock +0 -22
- data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.h +0 -18
- data/vendor/Pods/NSData+MD5Digest/NSData+MD5Digest/NSData+MD5Digest.m +0 -39
- data/vendor/Pods/NSData+MD5Digest/README.md +0 -11
- data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-CocoaLumberjack-dummy.m +0 -5
- data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +0 -7
- data/vendor/Pods/Pods-CocoaLumberjack.xcconfig +0 -0
- data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-NSData+MD5Digest-dummy.m +0 -5
- data/vendor/Pods/Pods-NSData+MD5Digest-prefix.pch +0 -5
- data/vendor/Pods/Pods-NSData+MD5Digest.xcconfig +0 -0
- data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +0 -5
- data/vendor/Pods/Pods-YapDatabase-dummy.m +0 -5
- data/vendor/Pods/Pods-YapDatabase-prefix.pch +0 -5
- data/vendor/Pods/Pods-YapDatabase.xcconfig +0 -1
- data/vendor/Pods/Pods-acknowledgements.markdown +0 -59
- data/vendor/Pods/Pods-acknowledgements.plist +0 -97
- data/vendor/Pods/Pods-dummy.m +0 -5
- data/vendor/Pods/Pods-environment.h +0 -38
- data/vendor/Pods/Pods-resources.sh +0 -68
- data/vendor/Pods/Pods.xcconfig +0 -5
- data/vendor/Pods/Pods.xcodeproj/project.pbxproj +0 -4807
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-CocoaLumberjack.xcscheme +0 -59
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-NSData+MD5Digest.xcscheme +0 -59
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-YapDatabase.xcscheme +0 -59
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods.xcscheme +0 -59
- data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/xcschememanagement.plist +0 -31
- data/vendor/Pods/YapDatabase/LICENSE.txt +0 -18
- data/vendor/Pods/YapDatabase/README.md +0 -32
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +0 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +0 -81
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +0 -159
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.h +0 -12
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewConnection.m +0 -41
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +0 -39
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +0 -1235
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTypes.h +0 -32
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +0 -77
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.h +0 -89
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearch.m +0 -146
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.h +0 -32
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +0 -298
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.h +0 -79
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchSnippetOptions.m +0 -95
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.h +0 -68
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +0 -1403
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +0 -444
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.h +0 -15
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +0 -83
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.h +0 -11
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +0 -46
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.h +0 -11
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +0 -204
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipEdgePrivate.h +0 -79
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipPrivate.h +0 -125
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h +0 -35
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m +0 -129
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h +0 -29
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m +0 -802
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h +0 -163
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m +0 -408
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h +0 -99
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h +0 -59
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m +0 -29
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h +0 -384
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m +0 -5254
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +0 -83
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexSetupPrivate.h +0 -18
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +0 -149
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +0 -161
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.h +0 -33
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +0 -331
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.h +0 -33
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +0 -245
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.h +0 -58
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +0 -1269
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewChangePrivate.h +0 -94
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewMappingsPrivate.h +0 -72
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.h +0 -36
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPage.mm +0 -296
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.h +0 -27
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPageMetadata.m +0 -28
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +0 -170
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewRangeOptionsPrivate.h +0 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +0 -272
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +0 -2500
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +0 -842
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +0 -1714
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.h +0 -330
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewRangeOptions.m +0 -141
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +0 -127
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +0 -194
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +0 -116
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +0 -888
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +0 -63
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.m +0 -27
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +0 -498
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +0 -4986
- data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTypes.h +0 -99
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.h +0 -8
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.m +0 -19
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +0 -91
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +0 -465
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.h +0 -29
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseConnectionState.m +0 -48
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +0 -37
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +0 -83
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.h +0 -158
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseLogging.m +0 -73
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.h +0 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseManager.m +0 -56
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +0 -446
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.h +0 -13
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseStatement.m +0 -26
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseString.h +0 -121
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.h +0 -74
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapMemoryTable.m +0 -603
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.h +0 -17
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +0 -35
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.h +0 -15
- data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapTouch.m +0 -31
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +0 -23
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +0 -199
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.h +0 -42
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapDatabaseQuery.m +0 -96
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.h +0 -41
- data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapSet.m +0 -82
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +0 -547
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +0 -2013
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +0 -449
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +0 -4046
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +0 -651
- data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +0 -5602
- data/vendor/Pods/build-iPhoneSimulator/Pods.bridgesupport +0 -3172
- data/vendor/Pods/build-iPhoneSimulator/libPods.a +0 -0
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#import <Foundation/Foundation.h>
|
|
2
|
-
#import "YapDatabaseViewConnection.h"
|
|
3
|
-
|
|
4
|
-
@class YapDatabaseFilteredView;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@interface YapDatabaseFilteredViewConnection : YapDatabaseViewConnection
|
|
8
|
-
|
|
9
|
-
// Returns properly typed parent view instance
|
|
10
|
-
@property (nonatomic, strong, readonly) YapDatabaseFilteredView *filteredView;
|
|
11
|
-
|
|
12
|
-
@end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#import "YapDatabaseFilteredViewConnection.h"
|
|
2
|
-
#import "YapDatabaseFilteredViewPrivate.h"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
@implementation YapDatabaseFilteredViewConnection
|
|
6
|
-
|
|
7
|
-
- (YapDatabaseFilteredView *)filteredView
|
|
8
|
-
{
|
|
9
|
-
return (YapDatabaseFilteredView *)view;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
13
|
-
#pragma mark Transactions
|
|
14
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Required override method from YapDatabaseExtensionConnection.
|
|
18
|
-
**/
|
|
19
|
-
- (id)newReadTransaction:(YapDatabaseReadTransaction *)databaseTransaction
|
|
20
|
-
{
|
|
21
|
-
YapDatabaseFilteredViewTransaction *filteredViewTransaction =
|
|
22
|
-
[[YapDatabaseFilteredViewTransaction alloc] initWithViewConnection:self
|
|
23
|
-
databaseTransaction:databaseTransaction];
|
|
24
|
-
|
|
25
|
-
return filteredViewTransaction;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Required override method from YapDatabaseExtensionConnection.
|
|
30
|
-
**/
|
|
31
|
-
- (id)newReadWriteTransaction:(YapDatabaseReadWriteTransaction *)databaseTransaction
|
|
32
|
-
{
|
|
33
|
-
YapDatabaseFilteredViewTransaction *filteredViewTransaction =
|
|
34
|
-
[[YapDatabaseFilteredViewTransaction alloc] initWithViewConnection:self
|
|
35
|
-
databaseTransaction:databaseTransaction];
|
|
36
|
-
|
|
37
|
-
[self prepareForReadWriteTransaction];
|
|
38
|
-
return filteredViewTransaction;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
@end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#import <Foundation/Foundation.h>
|
|
2
|
-
|
|
3
|
-
#import "YapDatabaseViewTransaction.h"
|
|
4
|
-
#import "YapDatabaseFilteredViewTypes.h"
|
|
5
|
-
#import "YapDatabaseFilteredView.h"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@interface YapDatabaseFilteredViewTransaction : YapDatabaseViewTransaction
|
|
9
|
-
|
|
10
|
-
// This class extends YapDatabaseViewTransaction.
|
|
11
|
-
//
|
|
12
|
-
// Please see YapDatabaseViewTransaction.h
|
|
13
|
-
|
|
14
|
-
@end
|
|
15
|
-
|
|
16
|
-
#pragma mark -
|
|
17
|
-
|
|
18
|
-
@interface YapDatabaseFilteredViewTransaction (ReadWrite)
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* This method allows you to change the filterBlock on-the-fly.
|
|
22
|
-
*
|
|
23
|
-
* When you do so, the extension will emit the smallest change-set possible.
|
|
24
|
-
* That is, it does NOT clear the view and start from scratch.
|
|
25
|
-
* Rather it performs a quick in-place update.
|
|
26
|
-
* The end result is a minimal change-set that looks nice for tableView / collectionView animations.
|
|
27
|
-
*
|
|
28
|
-
* For example, in Apple's phone app, in the Recents tab, one can switch between "all" and "missed" calls.
|
|
29
|
-
* Tapping the "missed" button smoothly animates away all non-red rows. It looks great.
|
|
30
|
-
* You can get the same effect by using a YapDatabaseFilteredView,
|
|
31
|
-
* and swapping in/out a filterBlock to allow/disallow non-missed calls.
|
|
32
|
-
*
|
|
33
|
-
* Note: You must pass a different versionTag, or this method does nothing.
|
|
34
|
-
**/
|
|
35
|
-
- (void)setFilteringBlock:(YapDatabaseViewFilteringBlock)filteringBlock
|
|
36
|
-
filteringBlockType:(YapDatabaseViewBlockType)filteringBlockType
|
|
37
|
-
versionTag:(NSString *)tag;
|
|
38
|
-
|
|
39
|
-
@end
|
|
@@ -1,1235 +0,0 @@
|
|
|
1
|
-
#import "YapDatabaseFilteredViewTransaction.h"
|
|
2
|
-
#import "YapDatabaseFilteredViewPrivate.h"
|
|
3
|
-
#import "YapDatabasePrivate.h"
|
|
4
|
-
#import "YapDatabaseViewChangePrivate.h"
|
|
5
|
-
#import "YapDatabaseExtensionPrivate.h"
|
|
6
|
-
#import "YapCollectionKey.h"
|
|
7
|
-
#import "YapDatabaseLogging.h"
|
|
8
|
-
|
|
9
|
-
#if ! __has_feature(objc_arc)
|
|
10
|
-
#warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
|
|
11
|
-
#endif
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Define log level for this file: OFF, ERROR, WARN, INFO, VERBOSE
|
|
15
|
-
* See YapDatabaseLogging.h for more information.
|
|
16
|
-
**/
|
|
17
|
-
#if DEBUG
|
|
18
|
-
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
19
|
-
#else
|
|
20
|
-
static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
|
|
21
|
-
#endif
|
|
22
|
-
|
|
23
|
-
#define ExtKey_classVersion @"classVersion"
|
|
24
|
-
#define ExtKey_persistent @"persistent"
|
|
25
|
-
#define ExtKey_parentViewName @"parentViewName"
|
|
26
|
-
#define ExtKey_tag_deprecated @"tag"
|
|
27
|
-
#define ExtKey_versionTag @"versionTag"
|
|
28
|
-
|
|
29
|
-
@implementation YapDatabaseFilteredViewTransaction
|
|
30
|
-
|
|
31
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
32
|
-
#pragma mark Extension Lifecycle
|
|
33
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Required override method from YapDatabaseExtensionTransaction.
|
|
37
|
-
*
|
|
38
|
-
* This method is called to create any necessary tables (if needed),
|
|
39
|
-
* as well as populate the view (if needed) by enumerating over the existing rows in the database.
|
|
40
|
-
**/
|
|
41
|
-
- (BOOL)createIfNeeded
|
|
42
|
-
{
|
|
43
|
-
YDBLogAutoTrace();
|
|
44
|
-
|
|
45
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView = (YapDatabaseFilteredView *)(viewConnection->view);
|
|
46
|
-
|
|
47
|
-
int classVersion = YAP_DATABASE_VIEW_CLASS_VERSION;
|
|
48
|
-
BOOL isPersistent = [self isPersistentView];
|
|
49
|
-
|
|
50
|
-
NSString *parentViewName = filteredView->parentViewName;
|
|
51
|
-
NSString *versionTag = filteredView->versionTag;
|
|
52
|
-
|
|
53
|
-
// Figure out what steps we need to take in order to register the view
|
|
54
|
-
|
|
55
|
-
BOOL needsCreateTables = NO;
|
|
56
|
-
|
|
57
|
-
BOOL oldIsPersistent = NO;
|
|
58
|
-
BOOL hasOldIsPersistent = NO;
|
|
59
|
-
|
|
60
|
-
NSString *oldParentViewName = nil;
|
|
61
|
-
NSString *oldVersionTag = nil;
|
|
62
|
-
|
|
63
|
-
// Check classVersion (the internal version number of view implementation)
|
|
64
|
-
|
|
65
|
-
int oldClassVersion = 0;
|
|
66
|
-
BOOL hasOldClassVersion = [self getIntValue:&oldClassVersion forExtensionKey:ExtKey_classVersion];
|
|
67
|
-
|
|
68
|
-
if (!hasOldClassVersion)
|
|
69
|
-
{
|
|
70
|
-
needsCreateTables = YES;
|
|
71
|
-
}
|
|
72
|
-
else if (oldClassVersion != classVersion)
|
|
73
|
-
{
|
|
74
|
-
[self dropTablesForOldClassVersion:oldClassVersion];
|
|
75
|
-
needsCreateTables = YES;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Check persistence.
|
|
79
|
-
// Need to properly transition from persistent to non-persistent, and vice-versa.
|
|
80
|
-
|
|
81
|
-
if (!needsCreateTables || hasOldClassVersion)
|
|
82
|
-
{
|
|
83
|
-
hasOldIsPersistent = [self getBoolValue:&oldIsPersistent forExtensionKey:ExtKey_persistent];
|
|
84
|
-
|
|
85
|
-
if (hasOldIsPersistent && oldIsPersistent && !isPersistent)
|
|
86
|
-
{
|
|
87
|
-
[[viewConnection->view class]
|
|
88
|
-
dropTablesForRegisteredName:[self registeredName]
|
|
89
|
-
withTransaction:(YapDatabaseReadWriteTransaction *)databaseTransaction];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (!hasOldIsPersistent || (oldIsPersistent != isPersistent))
|
|
93
|
-
{
|
|
94
|
-
needsCreateTables = YES;
|
|
95
|
-
}
|
|
96
|
-
else if (!isPersistent)
|
|
97
|
-
{
|
|
98
|
-
// We always have to create & populate the tables for non-persistent views.
|
|
99
|
-
// Even when re-registering from previous app launch.
|
|
100
|
-
needsCreateTables = YES;
|
|
101
|
-
|
|
102
|
-
oldParentViewName = [self stringValueForExtensionKey:ExtKey_parentViewName];
|
|
103
|
-
oldVersionTag = [self stringValueForExtensionKey:ExtKey_versionTag];
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Create or re-populate if needed
|
|
108
|
-
|
|
109
|
-
if (needsCreateTables)
|
|
110
|
-
{
|
|
111
|
-
// First time registration
|
|
112
|
-
|
|
113
|
-
if (![self createTables]) return NO;
|
|
114
|
-
if (![self populateView]) return NO;
|
|
115
|
-
|
|
116
|
-
if (!hasOldClassVersion || (oldClassVersion != classVersion)) {
|
|
117
|
-
[self setIntValue:classVersion forExtensionKey:ExtKey_classVersion];
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (!hasOldIsPersistent || (oldIsPersistent != isPersistent)) {
|
|
121
|
-
[self setBoolValue:isPersistent forExtensionKey:ExtKey_persistent];
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (![oldParentViewName isEqualToString:parentViewName]) {
|
|
125
|
-
[self setStringValue:parentViewName forExtensionKey:ExtKey_parentViewName];
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (![oldVersionTag isEqualToString:versionTag]) {
|
|
129
|
-
[self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
else
|
|
133
|
-
{
|
|
134
|
-
BOOL needsRepopulateView = NO;
|
|
135
|
-
|
|
136
|
-
// Check parentViewName.
|
|
137
|
-
// Need to re-populate if the parent changed.
|
|
138
|
-
|
|
139
|
-
oldParentViewName = [self stringValueForExtensionKey:ExtKey_parentViewName];
|
|
140
|
-
|
|
141
|
-
if (![oldParentViewName isEqualToString:parentViewName])
|
|
142
|
-
{
|
|
143
|
-
needsRepopulateView = YES;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Check user-supplied tag.
|
|
147
|
-
// We may need to re-populate the database if the groupingBlock or sortingBlock changed.
|
|
148
|
-
|
|
149
|
-
oldVersionTag = [self stringValueForExtensionKey:ExtKey_versionTag];
|
|
150
|
-
|
|
151
|
-
NSString *oldTag_deprecated = nil;
|
|
152
|
-
if (oldVersionTag == nil)
|
|
153
|
-
{
|
|
154
|
-
oldTag_deprecated = [self stringValueForExtensionKey:ExtKey_tag_deprecated];
|
|
155
|
-
if (oldTag_deprecated)
|
|
156
|
-
{
|
|
157
|
-
oldVersionTag = oldTag_deprecated;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (![oldVersionTag isEqualToString:versionTag])
|
|
162
|
-
{
|
|
163
|
-
needsRepopulateView = YES;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if (needsRepopulateView)
|
|
167
|
-
{
|
|
168
|
-
if (![self populateView]) return NO;
|
|
169
|
-
|
|
170
|
-
if (![oldParentViewName isEqualToString:parentViewName]) {
|
|
171
|
-
[self setStringValue:parentViewName forExtensionKey:ExtKey_parentViewName];
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (![oldVersionTag isEqualToString:versionTag]) {
|
|
175
|
-
[self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (oldTag_deprecated)
|
|
179
|
-
[self removeValueForExtensionKey:ExtKey_tag_deprecated];
|
|
180
|
-
}
|
|
181
|
-
else if (oldTag_deprecated)
|
|
182
|
-
{
|
|
183
|
-
[self removeValueForExtensionKey:ExtKey_tag_deprecated];
|
|
184
|
-
[self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return YES;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Internal method.
|
|
193
|
-
* This method overrides the version in YapDatabaseViewTransaction.
|
|
194
|
-
*
|
|
195
|
-
* This method is called, if needed, to populate the view.
|
|
196
|
-
* It does so by enumerating the rows in the database, and invoking the usual blocks and insertion methods.
|
|
197
|
-
**/
|
|
198
|
-
- (BOOL)populateView
|
|
199
|
-
{
|
|
200
|
-
YDBLogAutoTrace();
|
|
201
|
-
|
|
202
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
203
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
204
|
-
|
|
205
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
206
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
207
|
-
|
|
208
|
-
// Remove everything from the database
|
|
209
|
-
|
|
210
|
-
[self removeAllRowids];
|
|
211
|
-
|
|
212
|
-
// Initialize ivars
|
|
213
|
-
|
|
214
|
-
viewConnection->group_pagesMetadata_dict = [[NSMutableDictionary alloc] init];
|
|
215
|
-
viewConnection->pageKey_group_dict = [[NSMutableDictionary alloc] init];
|
|
216
|
-
|
|
217
|
-
// Enumerate the existing rows in the database and populate the view
|
|
218
|
-
|
|
219
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
220
|
-
{
|
|
221
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
222
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
223
|
-
|
|
224
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
225
|
-
{
|
|
226
|
-
__block NSUInteger filteredIndex = 0;
|
|
227
|
-
|
|
228
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
229
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
230
|
-
{
|
|
231
|
-
YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
|
|
232
|
-
|
|
233
|
-
if (filterBlock(group, ck.collection, ck.key))
|
|
234
|
-
{
|
|
235
|
-
if (filteredIndex == 0)
|
|
236
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
237
|
-
else
|
|
238
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
|
|
239
|
-
withExistingPageKey:nil];
|
|
240
|
-
filteredIndex++;
|
|
241
|
-
}
|
|
242
|
-
}];
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
246
|
-
{
|
|
247
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
248
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
249
|
-
|
|
250
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
251
|
-
{
|
|
252
|
-
__block NSUInteger filteredIndex = 0;
|
|
253
|
-
|
|
254
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
255
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
256
|
-
{
|
|
257
|
-
YapCollectionKey *ck = nil;
|
|
258
|
-
id object = nil;
|
|
259
|
-
[databaseTransaction getCollectionKey:&ck object:&object forRowid:rowid];
|
|
260
|
-
|
|
261
|
-
if (filterBlock(group, ck.collection, ck.key, object))
|
|
262
|
-
{
|
|
263
|
-
if (filteredIndex == 0)
|
|
264
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
265
|
-
else
|
|
266
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
|
|
267
|
-
withExistingPageKey:nil];
|
|
268
|
-
filteredIndex++;
|
|
269
|
-
}
|
|
270
|
-
}];
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
274
|
-
{
|
|
275
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
276
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
277
|
-
|
|
278
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
279
|
-
{
|
|
280
|
-
__block NSUInteger filteredIndex = 0;
|
|
281
|
-
|
|
282
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
283
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
284
|
-
{
|
|
285
|
-
YapCollectionKey *ck = nil;
|
|
286
|
-
id metadata = nil;
|
|
287
|
-
[databaseTransaction getCollectionKey:&ck metadata:&metadata forRowid:rowid];
|
|
288
|
-
|
|
289
|
-
if (filterBlock(group, ck.collection, ck.key, metadata))
|
|
290
|
-
{
|
|
291
|
-
if (filteredIndex == 0)
|
|
292
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
293
|
-
else
|
|
294
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
|
|
295
|
-
withExistingPageKey:nil];
|
|
296
|
-
filteredIndex++;
|
|
297
|
-
}
|
|
298
|
-
}];
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
302
|
-
{
|
|
303
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
304
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
305
|
-
|
|
306
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
307
|
-
{
|
|
308
|
-
__block NSUInteger filteredIndex = 0;
|
|
309
|
-
|
|
310
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
311
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
312
|
-
{
|
|
313
|
-
YapCollectionKey *ck = nil;
|
|
314
|
-
id object = nil;
|
|
315
|
-
id metadata = nil;
|
|
316
|
-
|
|
317
|
-
[databaseTransaction getCollectionKey:&ck
|
|
318
|
-
object:&object
|
|
319
|
-
metadata:&metadata
|
|
320
|
-
forRowid:rowid];
|
|
321
|
-
|
|
322
|
-
if (filterBlock(group, ck.collection, ck.key, object, metadata))
|
|
323
|
-
{
|
|
324
|
-
if (filteredIndex == 0)
|
|
325
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
326
|
-
else
|
|
327
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
|
|
328
|
-
withExistingPageKey:nil];
|
|
329
|
-
filteredIndex++;
|
|
330
|
-
}
|
|
331
|
-
}];
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
return YES;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
339
|
-
#pragma mark Logic
|
|
340
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
341
|
-
|
|
342
|
-
- (void)repopulateView
|
|
343
|
-
{
|
|
344
|
-
YDBLogAutoTrace();
|
|
345
|
-
|
|
346
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
347
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
348
|
-
|
|
349
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
350
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
351
|
-
|
|
352
|
-
// Code overview:
|
|
353
|
-
//
|
|
354
|
-
// The objective is to enumerate the parentView, and invoke the new filter on each row.
|
|
355
|
-
// However, we want our changeset to properly match what actually changes.
|
|
356
|
-
// That is, we don't want to simply reset our view, and then repopulate from scratch.
|
|
357
|
-
// We want our changeset to specify the exact diff,
|
|
358
|
-
// highlighting just those items that were ultimately added or removed.
|
|
359
|
-
// This will allow for smooth animations when changing the filter.
|
|
360
|
-
//
|
|
361
|
-
// For example, in Apple's phone app, in the Recents tab, one can switch between "all" and "missed" calls.
|
|
362
|
-
// Tapping the "missed" button smoothly animates away all non-red rows. It looks great.
|
|
363
|
-
// This is what we're going for.
|
|
364
|
-
|
|
365
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
366
|
-
{
|
|
367
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
368
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
369
|
-
|
|
370
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
371
|
-
{
|
|
372
|
-
__block BOOL existing = NO;
|
|
373
|
-
__block int64_t existingRowid = 0;
|
|
374
|
-
|
|
375
|
-
existing = [self getRowid:&existingRowid atIndex:0 inGroup:group];
|
|
376
|
-
|
|
377
|
-
__block NSUInteger index = 0;
|
|
378
|
-
|
|
379
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
380
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
381
|
-
{
|
|
382
|
-
YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
|
|
383
|
-
|
|
384
|
-
if (filterBlock(group, ck.collection, ck.key))
|
|
385
|
-
{
|
|
386
|
-
if (existing && (existingRowid == rowid))
|
|
387
|
-
{
|
|
388
|
-
// The row was previously in the view (allowed by previous filter),
|
|
389
|
-
// and is still in the view (allowed by new filter).
|
|
390
|
-
|
|
391
|
-
index++;
|
|
392
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
393
|
-
}
|
|
394
|
-
else
|
|
395
|
-
{
|
|
396
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
397
|
-
// but is now in the view (allowed by new filter).
|
|
398
|
-
|
|
399
|
-
if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
|
|
400
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
401
|
-
else
|
|
402
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group
|
|
403
|
-
atIndex:index withExistingPageKey:nil];
|
|
404
|
-
index++;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
else
|
|
408
|
-
{
|
|
409
|
-
if (existing && (existingRowid == rowid))
|
|
410
|
-
{
|
|
411
|
-
// The row was previously in the view (allowed by previous filter),
|
|
412
|
-
// but is no longer in the view (disallowed by new filter).
|
|
413
|
-
|
|
414
|
-
[self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
|
|
415
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
416
|
-
}
|
|
417
|
-
else
|
|
418
|
-
{
|
|
419
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
420
|
-
// and is still not in the view (disallowed by new filter).
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}];
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
427
|
-
{
|
|
428
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
429
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
430
|
-
|
|
431
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
432
|
-
{
|
|
433
|
-
__block BOOL existing = NO;
|
|
434
|
-
__block int64_t existingRowid = 0;
|
|
435
|
-
|
|
436
|
-
existing = [self getRowid:&existingRowid atIndex:0 inGroup:group];
|
|
437
|
-
|
|
438
|
-
__block NSUInteger index = 0;
|
|
439
|
-
|
|
440
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
441
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
442
|
-
{
|
|
443
|
-
YapCollectionKey *ck = nil;
|
|
444
|
-
id object = nil;
|
|
445
|
-
[databaseTransaction getCollectionKey:&ck object:&object forRowid:rowid];
|
|
446
|
-
|
|
447
|
-
if (filterBlock(group, ck.collection, ck.key, object))
|
|
448
|
-
{
|
|
449
|
-
if (existing && (existingRowid == rowid))
|
|
450
|
-
{
|
|
451
|
-
// The row was previously in the view (allowed by previous filter),
|
|
452
|
-
// and is still in the view (allowed by new filter).
|
|
453
|
-
|
|
454
|
-
index++;
|
|
455
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
456
|
-
}
|
|
457
|
-
else
|
|
458
|
-
{
|
|
459
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
460
|
-
// but is now in the view (allowed by new filter).
|
|
461
|
-
|
|
462
|
-
if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
|
|
463
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
464
|
-
else
|
|
465
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group
|
|
466
|
-
atIndex:index withExistingPageKey:nil];
|
|
467
|
-
index++;
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
else
|
|
471
|
-
{
|
|
472
|
-
if (existing && (existingRowid == rowid))
|
|
473
|
-
{
|
|
474
|
-
// The row was previously in the view (allowed by previous filter),
|
|
475
|
-
// but is no longer in the view (disallowed by new filter).
|
|
476
|
-
|
|
477
|
-
[self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
|
|
478
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
479
|
-
}
|
|
480
|
-
else
|
|
481
|
-
{
|
|
482
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
483
|
-
// and is still not in the view (disallowed by new filter).
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}];
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
490
|
-
{
|
|
491
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
492
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
493
|
-
|
|
494
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
495
|
-
{
|
|
496
|
-
__block BOOL existing = NO;
|
|
497
|
-
__block int64_t existingRowid = 0;
|
|
498
|
-
|
|
499
|
-
existing = [self getRowid:&existingRowid atIndex:0 inGroup:group];
|
|
500
|
-
|
|
501
|
-
__block NSUInteger index = 0;
|
|
502
|
-
|
|
503
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
504
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
505
|
-
{
|
|
506
|
-
YapCollectionKey *ck = nil;
|
|
507
|
-
id metadata = nil;
|
|
508
|
-
[databaseTransaction getCollectionKey:&ck metadata:&metadata forRowid:rowid];
|
|
509
|
-
|
|
510
|
-
if (filterBlock(group, ck.collection, ck.key, metadata))
|
|
511
|
-
{
|
|
512
|
-
if (existing && (existingRowid == rowid))
|
|
513
|
-
{
|
|
514
|
-
// The row was previously in the view (allowed by previous filter),
|
|
515
|
-
// and is still in the view (allowed by new filter).
|
|
516
|
-
|
|
517
|
-
index++;
|
|
518
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
519
|
-
}
|
|
520
|
-
else
|
|
521
|
-
{
|
|
522
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
523
|
-
// but is now in the view (allowed by new filter).
|
|
524
|
-
|
|
525
|
-
if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
|
|
526
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
527
|
-
else
|
|
528
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group
|
|
529
|
-
atIndex:index withExistingPageKey:nil];
|
|
530
|
-
index++;
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
else
|
|
534
|
-
{
|
|
535
|
-
if (existing && (existingRowid == rowid))
|
|
536
|
-
{
|
|
537
|
-
// The row was previously in the view (allowed by previous filter),
|
|
538
|
-
// but is no longer in the view (disallowed by new filter).
|
|
539
|
-
|
|
540
|
-
[self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
|
|
541
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
542
|
-
}
|
|
543
|
-
else
|
|
544
|
-
{
|
|
545
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
546
|
-
// and is still not in the view (disallowed by new filter).
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
}];
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
553
|
-
{
|
|
554
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
555
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
556
|
-
|
|
557
|
-
for (NSString *group in [parentViewTransaction allGroups])
|
|
558
|
-
{
|
|
559
|
-
__block BOOL existing = NO;
|
|
560
|
-
__block int64_t existingRowid = 0;
|
|
561
|
-
|
|
562
|
-
existing = [self getRowid:&existingRowid atIndex:0 inGroup:group];
|
|
563
|
-
|
|
564
|
-
__block NSUInteger index = 0;
|
|
565
|
-
|
|
566
|
-
[parentViewTransaction enumerateRowidsInGroup:group
|
|
567
|
-
usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
|
|
568
|
-
{
|
|
569
|
-
YapCollectionKey *ck = nil;
|
|
570
|
-
id object = nil;
|
|
571
|
-
id metadata = nil;
|
|
572
|
-
|
|
573
|
-
[databaseTransaction getCollectionKey:&ck
|
|
574
|
-
object:&object
|
|
575
|
-
metadata:&metadata
|
|
576
|
-
forRowid:rowid];
|
|
577
|
-
|
|
578
|
-
if (filterBlock(group, ck.collection, ck.key, object, metadata))
|
|
579
|
-
{
|
|
580
|
-
if (existing && (existingRowid == rowid))
|
|
581
|
-
{
|
|
582
|
-
// The row was previously in the view (allowed by previous filter),
|
|
583
|
-
// and is still in the view (allowed by new filter).
|
|
584
|
-
|
|
585
|
-
index++;
|
|
586
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
587
|
-
}
|
|
588
|
-
else
|
|
589
|
-
{
|
|
590
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
591
|
-
// but is now in the view (allowed by new filter).
|
|
592
|
-
|
|
593
|
-
if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
|
|
594
|
-
[self insertRowid:rowid collectionKey:ck inNewGroup:group];
|
|
595
|
-
else
|
|
596
|
-
[self insertRowid:rowid collectionKey:ck inGroup:group
|
|
597
|
-
atIndex:index withExistingPageKey:nil];
|
|
598
|
-
index++;
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
else
|
|
602
|
-
{
|
|
603
|
-
if (existing && (existingRowid == rowid))
|
|
604
|
-
{
|
|
605
|
-
// The row was previously in the view (allowed by previous filter),
|
|
606
|
-
// but is no longer in the view (disallowed by new filter).
|
|
607
|
-
|
|
608
|
-
[self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
|
|
609
|
-
existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
|
|
610
|
-
}
|
|
611
|
-
else
|
|
612
|
-
{
|
|
613
|
-
// The row was not previously in the view (disallowed by previous filter),
|
|
614
|
-
// and is still not in the view (disallowed by new filter).
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
}];
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
623
|
-
#pragma mark YapDatabaseExtensionTransaction_Hooks
|
|
624
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
625
|
-
|
|
626
|
-
/**
|
|
627
|
-
* YapDatabase extension hook.
|
|
628
|
-
* This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
|
|
629
|
-
* This method overrides the version in YapDatabaseViewTransaction.
|
|
630
|
-
**/
|
|
631
|
-
- (void)handleInsertObject:(id)object
|
|
632
|
-
forCollectionKey:(YapCollectionKey *)collectionKey
|
|
633
|
-
withMetadata:(id)metadata
|
|
634
|
-
rowid:(int64_t)rowid
|
|
635
|
-
{
|
|
636
|
-
YDBLogAutoTrace();
|
|
637
|
-
|
|
638
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
639
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
640
|
-
|
|
641
|
-
__unsafe_unretained NSString *collection = collectionKey.collection;
|
|
642
|
-
__unsafe_unretained NSString *key = collectionKey.key;
|
|
643
|
-
|
|
644
|
-
// Instead of going to the groupingBlock,
|
|
645
|
-
// just ask the parentViewTransaction what the last group was.
|
|
646
|
-
|
|
647
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
648
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
649
|
-
|
|
650
|
-
NSString *group = parentViewTransaction->lastHandledGroup;
|
|
651
|
-
|
|
652
|
-
if (group == nil)
|
|
653
|
-
{
|
|
654
|
-
// Not included in parentView.
|
|
655
|
-
// This was an insert operation, so we know the key wasn't already in the view.
|
|
656
|
-
|
|
657
|
-
lastHandledGroup = nil;
|
|
658
|
-
return;
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
// Ask filter block if we should add key to view.
|
|
662
|
-
|
|
663
|
-
BOOL passesFilter;
|
|
664
|
-
|
|
665
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
666
|
-
{
|
|
667
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
668
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
669
|
-
|
|
670
|
-
passesFilter = filterBlock(group, collection, key);
|
|
671
|
-
}
|
|
672
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
673
|
-
{
|
|
674
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
675
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
676
|
-
|
|
677
|
-
passesFilter = filterBlock(group, collection, key, object);
|
|
678
|
-
}
|
|
679
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
680
|
-
{
|
|
681
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
682
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
683
|
-
|
|
684
|
-
passesFilter = filterBlock(group, collection, key, metadata);
|
|
685
|
-
}
|
|
686
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
687
|
-
{
|
|
688
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
689
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
690
|
-
|
|
691
|
-
passesFilter = filterBlock(group, collection, key, object, metadata);
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
if (passesFilter)
|
|
695
|
-
{
|
|
696
|
-
// This was an insert operation, so we know the key wasn't already in the view.
|
|
697
|
-
|
|
698
|
-
int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
|
|
699
|
-
|
|
700
|
-
[self insertRowid:rowid
|
|
701
|
-
collectionKey:collectionKey
|
|
702
|
-
object:object
|
|
703
|
-
metadata:metadata
|
|
704
|
-
inGroup:group
|
|
705
|
-
withChanges:flags
|
|
706
|
-
isNew:YES];
|
|
707
|
-
|
|
708
|
-
lastHandledGroup = group;
|
|
709
|
-
}
|
|
710
|
-
else
|
|
711
|
-
{
|
|
712
|
-
// Filtered from this view.
|
|
713
|
-
// This was an insert operation, so we know the key wasn't already in the view.
|
|
714
|
-
|
|
715
|
-
lastHandledGroup = nil;
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
/**
|
|
720
|
-
* YapDatabase extension hook.
|
|
721
|
-
* This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
|
|
722
|
-
* This method overrides the version in YapDatabaseViewTransaction.
|
|
723
|
-
**/
|
|
724
|
-
- (void)handleUpdateObject:(id)object
|
|
725
|
-
forCollectionKey:(YapCollectionKey *)collectionKey
|
|
726
|
-
withMetadata:(id)metadata
|
|
727
|
-
rowid:(int64_t)rowid
|
|
728
|
-
{
|
|
729
|
-
YDBLogAutoTrace();
|
|
730
|
-
|
|
731
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
732
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
733
|
-
|
|
734
|
-
__unsafe_unretained NSString *collection = collectionKey.collection;
|
|
735
|
-
__unsafe_unretained NSString *key = collectionKey.key;
|
|
736
|
-
|
|
737
|
-
// Instead of going to the groupingBlock,
|
|
738
|
-
// just ask the parentViewTransaction what the last group was.
|
|
739
|
-
|
|
740
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
741
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
742
|
-
|
|
743
|
-
NSString *group = parentViewTransaction->lastHandledGroup;
|
|
744
|
-
|
|
745
|
-
if (group == nil)
|
|
746
|
-
{
|
|
747
|
-
// Not included in parentView.
|
|
748
|
-
// Remove key from view (if needed).
|
|
749
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
750
|
-
|
|
751
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
752
|
-
|
|
753
|
-
lastHandledGroup = nil;
|
|
754
|
-
return;
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
// Ask filter block if we should add key to view.
|
|
758
|
-
|
|
759
|
-
BOOL passesFilter;
|
|
760
|
-
|
|
761
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
762
|
-
{
|
|
763
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
764
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
765
|
-
|
|
766
|
-
passesFilter = filterBlock(group, collection, key);
|
|
767
|
-
}
|
|
768
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
769
|
-
{
|
|
770
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
771
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
772
|
-
|
|
773
|
-
passesFilter = filterBlock(group, collection, key, object);
|
|
774
|
-
}
|
|
775
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
776
|
-
{
|
|
777
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
778
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
779
|
-
|
|
780
|
-
passesFilter = filterBlock(group, collection, key, metadata);
|
|
781
|
-
}
|
|
782
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
783
|
-
{
|
|
784
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
785
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
786
|
-
|
|
787
|
-
passesFilter = filterBlock(group, collection, key, object, metadata);
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
if (passesFilter)
|
|
791
|
-
{
|
|
792
|
-
// Add key to view (or update position).
|
|
793
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
794
|
-
|
|
795
|
-
int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
|
|
796
|
-
|
|
797
|
-
[self insertRowid:rowid
|
|
798
|
-
collectionKey:collectionKey
|
|
799
|
-
object:object
|
|
800
|
-
metadata:metadata
|
|
801
|
-
inGroup:group
|
|
802
|
-
withChanges:flags
|
|
803
|
-
isNew:NO];
|
|
804
|
-
|
|
805
|
-
lastHandledGroup = group;
|
|
806
|
-
}
|
|
807
|
-
else
|
|
808
|
-
{
|
|
809
|
-
// Filtered from this view.
|
|
810
|
-
// Remove key from view (if needed).
|
|
811
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
812
|
-
|
|
813
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
814
|
-
lastHandledGroup = nil;
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
|
|
818
|
-
/**
|
|
819
|
-
* YapDatabase extension hook.
|
|
820
|
-
* This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
|
|
821
|
-
* This method overrides the version in YapDatabaseViewTransaction.
|
|
822
|
-
**/
|
|
823
|
-
- (void)handleReplaceObject:(id)object forCollectionKey:(YapCollectionKey *)collectionKey withRowid:(int64_t)rowid
|
|
824
|
-
{
|
|
825
|
-
YDBLogAutoTrace();
|
|
826
|
-
|
|
827
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
828
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
829
|
-
|
|
830
|
-
__unsafe_unretained NSString *collection = collectionKey.collection;
|
|
831
|
-
__unsafe_unretained NSString *key = collectionKey.key;
|
|
832
|
-
|
|
833
|
-
BOOL groupMayHaveChanged = filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
834
|
-
filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithObject;
|
|
835
|
-
|
|
836
|
-
BOOL sortMayHaveChanged = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
837
|
-
filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithObject;
|
|
838
|
-
|
|
839
|
-
// Instead of going to the groupingBlock,
|
|
840
|
-
// just ask the parentViewTransaction what the last group was.
|
|
841
|
-
|
|
842
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
843
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
844
|
-
|
|
845
|
-
NSString *group = parentViewTransaction->lastHandledGroup;
|
|
846
|
-
|
|
847
|
-
if (group == nil)
|
|
848
|
-
{
|
|
849
|
-
// Not included in parentView.
|
|
850
|
-
|
|
851
|
-
if (groupMayHaveChanged)
|
|
852
|
-
{
|
|
853
|
-
// Remove key from view (if needed).
|
|
854
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
855
|
-
|
|
856
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
857
|
-
}
|
|
858
|
-
else
|
|
859
|
-
{
|
|
860
|
-
// The group hasn't changed.
|
|
861
|
-
// Thus it wasn't previously in view, and still isn't in the view.
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
lastHandledGroup = nil;
|
|
865
|
-
return;
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
BOOL filterMayHaveChanged = filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
869
|
-
filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject;
|
|
870
|
-
|
|
871
|
-
if (!groupMayHaveChanged && !sortMayHaveChanged && !filterMayHaveChanged)
|
|
872
|
-
{
|
|
873
|
-
// Nothing has changed that could possibly affect the view.
|
|
874
|
-
// Just note the touch.
|
|
875
|
-
|
|
876
|
-
int flags = YapDatabaseViewChangedObject;
|
|
877
|
-
|
|
878
|
-
NSString *pageKey = [self pageKeyForRowid:rowid];
|
|
879
|
-
NSUInteger existingIndex = [self indexForRowid:rowid inGroup:group withPageKey:pageKey];
|
|
880
|
-
|
|
881
|
-
[viewConnection->changes addObject:
|
|
882
|
-
[YapDatabaseViewRowChange updateKey:collectionKey changes:flags inGroup:group atIndex:existingIndex]];
|
|
883
|
-
|
|
884
|
-
lastHandledGroup = group;
|
|
885
|
-
return;
|
|
886
|
-
}
|
|
887
|
-
|
|
888
|
-
// Ask filter block if we should add key to view.
|
|
889
|
-
|
|
890
|
-
BOOL passesFilter;
|
|
891
|
-
id metadata = nil;
|
|
892
|
-
|
|
893
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
894
|
-
{
|
|
895
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
896
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
897
|
-
|
|
898
|
-
passesFilter = filterBlock(group, collection, key);
|
|
899
|
-
}
|
|
900
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
901
|
-
{
|
|
902
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
903
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
904
|
-
|
|
905
|
-
passesFilter = filterBlock(group, collection, key, object);
|
|
906
|
-
}
|
|
907
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
908
|
-
{
|
|
909
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
910
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
911
|
-
|
|
912
|
-
metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
|
|
913
|
-
passesFilter = filterBlock(group, collection, key, metadata);
|
|
914
|
-
}
|
|
915
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
916
|
-
{
|
|
917
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
918
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
919
|
-
|
|
920
|
-
metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
|
|
921
|
-
passesFilter = filterBlock(group, collection, key, object, metadata);
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
if (passesFilter)
|
|
925
|
-
{
|
|
926
|
-
// Add key to view (or update position).
|
|
927
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
928
|
-
|
|
929
|
-
int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
|
|
930
|
-
|
|
931
|
-
BOOL sortingBlockNeedsMetadata = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
932
|
-
filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithMetadata;
|
|
933
|
-
if (sortingBlockNeedsMetadata && metadata == nil)
|
|
934
|
-
{
|
|
935
|
-
metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
[self insertRowid:rowid
|
|
939
|
-
collectionKey:collectionKey
|
|
940
|
-
object:object
|
|
941
|
-
metadata:metadata
|
|
942
|
-
inGroup:group
|
|
943
|
-
withChanges:flags
|
|
944
|
-
isNew:NO];
|
|
945
|
-
|
|
946
|
-
lastHandledGroup = group;
|
|
947
|
-
}
|
|
948
|
-
else
|
|
949
|
-
{
|
|
950
|
-
// Filtered from this view.
|
|
951
|
-
// Remove key from view (if needed).
|
|
952
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
953
|
-
|
|
954
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
955
|
-
lastHandledGroup = nil;
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
|
|
959
|
-
/**
|
|
960
|
-
* YapDatabase extension hook.
|
|
961
|
-
* This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
|
|
962
|
-
* This method overrides the version in YapDatabaseViewTransaction.
|
|
963
|
-
**/
|
|
964
|
-
- (void)handleReplaceMetadata:(id)metadata forCollectionKey:(YapCollectionKey *)collectionKey withRowid:(int64_t)rowid
|
|
965
|
-
{
|
|
966
|
-
YDBLogAutoTrace();
|
|
967
|
-
|
|
968
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
969
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
970
|
-
|
|
971
|
-
__unsafe_unretained NSString *collection = collectionKey.collection;
|
|
972
|
-
__unsafe_unretained NSString *key = collectionKey.key;
|
|
973
|
-
|
|
974
|
-
BOOL groupMayHaveChanged = filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
975
|
-
filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithMetadata;
|
|
976
|
-
|
|
977
|
-
BOOL sortMayHaveChanged = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
978
|
-
filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithMetadata;
|
|
979
|
-
|
|
980
|
-
// Instead of going to the groupingBlock,
|
|
981
|
-
// just ask the parentViewTransaction what the last group was.
|
|
982
|
-
|
|
983
|
-
YapDatabaseViewTransaction *parentViewTransaction =
|
|
984
|
-
[databaseTransaction ext:filteredView->parentViewName];
|
|
985
|
-
|
|
986
|
-
NSString *group = parentViewTransaction->lastHandledGroup;
|
|
987
|
-
|
|
988
|
-
if (group == nil)
|
|
989
|
-
{
|
|
990
|
-
// Not included in parentView.
|
|
991
|
-
|
|
992
|
-
if (groupMayHaveChanged)
|
|
993
|
-
{
|
|
994
|
-
// Remove key from view (if needed).
|
|
995
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
996
|
-
|
|
997
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
998
|
-
}
|
|
999
|
-
else
|
|
1000
|
-
{
|
|
1001
|
-
// The group hasn't changed.
|
|
1002
|
-
// Thus it wasn't previously in view, and still isn't in the view.
|
|
1003
|
-
}
|
|
1004
|
-
|
|
1005
|
-
lastHandledGroup = nil;
|
|
1006
|
-
return;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
BOOL filterMayHaveChanged = filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
1010
|
-
filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata;
|
|
1011
|
-
|
|
1012
|
-
if (!groupMayHaveChanged && !sortMayHaveChanged && !filterMayHaveChanged)
|
|
1013
|
-
{
|
|
1014
|
-
// Nothing has changed that could possibly affect the view.
|
|
1015
|
-
// Just note the touch.
|
|
1016
|
-
|
|
1017
|
-
int flags = YapDatabaseViewChangedMetadata;
|
|
1018
|
-
|
|
1019
|
-
NSString *pageKey = [self pageKeyForRowid:rowid];
|
|
1020
|
-
NSUInteger existingIndex = [self indexForRowid:rowid inGroup:group withPageKey:pageKey];
|
|
1021
|
-
|
|
1022
|
-
[viewConnection->changes addObject:
|
|
1023
|
-
[YapDatabaseViewRowChange updateKey:collectionKey changes:flags inGroup:group atIndex:existingIndex]];
|
|
1024
|
-
|
|
1025
|
-
lastHandledGroup = group;
|
|
1026
|
-
return;
|
|
1027
|
-
}
|
|
1028
|
-
|
|
1029
|
-
// Ask filter block if we should add key to view.
|
|
1030
|
-
|
|
1031
|
-
BOOL passesFilter;
|
|
1032
|
-
id object = nil;
|
|
1033
|
-
|
|
1034
|
-
if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
|
|
1035
|
-
{
|
|
1036
|
-
YapDatabaseViewFilteringWithKeyBlock filterBlock =
|
|
1037
|
-
(YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
|
|
1038
|
-
|
|
1039
|
-
passesFilter = filterBlock(group, collection, key);
|
|
1040
|
-
}
|
|
1041
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
|
|
1042
|
-
{
|
|
1043
|
-
YapDatabaseViewFilteringWithObjectBlock filterBlock =
|
|
1044
|
-
(YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
|
|
1045
|
-
|
|
1046
|
-
object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
|
|
1047
|
-
passesFilter = filterBlock(group, collection, key, object);
|
|
1048
|
-
}
|
|
1049
|
-
else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
|
|
1050
|
-
{
|
|
1051
|
-
YapDatabaseViewFilteringWithMetadataBlock filterBlock =
|
|
1052
|
-
(YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
|
|
1053
|
-
|
|
1054
|
-
passesFilter = filterBlock(group, collection, key, metadata);
|
|
1055
|
-
}
|
|
1056
|
-
else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
|
|
1057
|
-
{
|
|
1058
|
-
YapDatabaseViewFilteringWithRowBlock filterBlock =
|
|
1059
|
-
(YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
|
|
1060
|
-
|
|
1061
|
-
object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
|
|
1062
|
-
passesFilter = filterBlock(group, collection, key, object, metadata);
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
if (passesFilter)
|
|
1066
|
-
{
|
|
1067
|
-
// Add key to view (or update position).
|
|
1068
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
1069
|
-
|
|
1070
|
-
int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
|
|
1071
|
-
|
|
1072
|
-
BOOL sortingBlockNeedsObject = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
|
|
1073
|
-
filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithObject;
|
|
1074
|
-
if (sortingBlockNeedsObject && object == nil)
|
|
1075
|
-
{
|
|
1076
|
-
object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
[self insertRowid:rowid
|
|
1080
|
-
collectionKey:collectionKey
|
|
1081
|
-
object:object
|
|
1082
|
-
metadata:metadata
|
|
1083
|
-
inGroup:group
|
|
1084
|
-
withChanges:flags
|
|
1085
|
-
isNew:NO];
|
|
1086
|
-
|
|
1087
|
-
lastHandledGroup = group;
|
|
1088
|
-
}
|
|
1089
|
-
else
|
|
1090
|
-
{
|
|
1091
|
-
// Filtered from this view.
|
|
1092
|
-
// Remove key from view (if needed).
|
|
1093
|
-
// This was an update operation, so the key may have previously been in the view.
|
|
1094
|
-
|
|
1095
|
-
[self removeRowid:rowid collectionKey:collectionKey];
|
|
1096
|
-
lastHandledGroup = nil;
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
|
|
1100
|
-
///
|
|
1101
|
-
/// All other hook methods are handled by superclass (YapDatabaseViewTransaction).
|
|
1102
|
-
///
|
|
1103
|
-
|
|
1104
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
1105
|
-
#pragma mark YapDatabaseViewDependency Protocol
|
|
1106
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
1107
|
-
|
|
1108
|
-
/**
|
|
1109
|
-
* This method is invoked if our parentView repopulates.
|
|
1110
|
-
* For example:
|
|
1111
|
-
*
|
|
1112
|
-
* - The parentView is a YapDatabaseView, and the groupingBlock and/or sortingBlock was changed.
|
|
1113
|
-
* - The parentView is a YapDatabaseFilteredView, and the filterBlock was changed.
|
|
1114
|
-
* - The parentView of the parentView was changed...
|
|
1115
|
-
*
|
|
1116
|
-
* When this happens, there has likely been a significant change in the content of the parentView,
|
|
1117
|
-
* and a full repopulate is required on our part.
|
|
1118
|
-
**/
|
|
1119
|
-
- (void)viewDidRepopulate:(NSString *)parentViewName
|
|
1120
|
-
{
|
|
1121
|
-
YDBLogAutoTrace();
|
|
1122
|
-
|
|
1123
|
-
if (!databaseTransaction->isReadWriteTransaction)
|
|
1124
|
-
{
|
|
1125
|
-
YDBLogWarn(@"%@ - Method only allowed in readWrite transaction", THIS_METHOD);
|
|
1126
|
-
return;
|
|
1127
|
-
}
|
|
1128
|
-
|
|
1129
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
1130
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
1131
|
-
|
|
1132
|
-
if (![parentViewName isEqualToString:filteredView->parentViewName])
|
|
1133
|
-
{
|
|
1134
|
-
YDBLogWarn(@"%@ - Method inappropriately invoked. Doesn't match parentViewName.", THIS_METHOD);
|
|
1135
|
-
return;
|
|
1136
|
-
}
|
|
1137
|
-
|
|
1138
|
-
// The parentView has significantly changed.
|
|
1139
|
-
// We need to repopulate.
|
|
1140
|
-
|
|
1141
|
-
[self repopulateView];
|
|
1142
|
-
|
|
1143
|
-
// Propogate the notification onward to any extensions dependent upon this one.
|
|
1144
|
-
|
|
1145
|
-
__unsafe_unretained NSString *registeredName = [self registeredName];
|
|
1146
|
-
__unsafe_unretained NSDictionary *extensionDependencies = databaseTransaction->connection->extensionDependencies;
|
|
1147
|
-
|
|
1148
|
-
[extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
|
|
1149
|
-
|
|
1150
|
-
__unsafe_unretained NSString *extName = (NSString *)key;
|
|
1151
|
-
__unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
|
|
1152
|
-
|
|
1153
|
-
if ([extDependencies containsObject:registeredName])
|
|
1154
|
-
{
|
|
1155
|
-
YapDatabaseExtensionTransaction *extTransaction = [databaseTransaction ext:extName];
|
|
1156
|
-
|
|
1157
|
-
if ([extTransaction respondsToSelector:@selector(viewDidRepopulate:)])
|
|
1158
|
-
{
|
|
1159
|
-
[(id <YapDatabaseViewDependency>)extTransaction viewDidRepopulate:registeredName];
|
|
1160
|
-
}
|
|
1161
|
-
}
|
|
1162
|
-
}];
|
|
1163
|
-
}
|
|
1164
|
-
|
|
1165
|
-
@end
|
|
1166
|
-
|
|
1167
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
1168
|
-
#pragma mark -
|
|
1169
|
-
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
1170
|
-
|
|
1171
|
-
@implementation YapDatabaseFilteredViewTransaction (ReadWrite)
|
|
1172
|
-
|
|
1173
|
-
- (void)setFilteringBlock:(YapDatabaseViewFilteringBlock)inFilteringBlock
|
|
1174
|
-
filteringBlockType:(YapDatabaseViewBlockType)inFilteringBlockType
|
|
1175
|
-
versionTag:(NSString *)inVersionTag
|
|
1176
|
-
|
|
1177
|
-
{
|
|
1178
|
-
YDBLogAutoTrace();
|
|
1179
|
-
|
|
1180
|
-
NSAssert(inFilteringBlock != NULL, @"Invalid filteringBlock");
|
|
1181
|
-
|
|
1182
|
-
NSAssert(inFilteringBlockType == YapDatabaseViewBlockTypeWithKey ||
|
|
1183
|
-
inFilteringBlockType == YapDatabaseViewBlockTypeWithObject ||
|
|
1184
|
-
inFilteringBlockType == YapDatabaseViewBlockTypeWithMetadata ||
|
|
1185
|
-
inFilteringBlockType == YapDatabaseViewBlockTypeWithRow,
|
|
1186
|
-
@"Invalid filteringBlockType");
|
|
1187
|
-
|
|
1188
|
-
if (!databaseTransaction->isReadWriteTransaction)
|
|
1189
|
-
{
|
|
1190
|
-
YDBLogWarn(@"%@ - Method only allowed in readWrite transaction", THIS_METHOD);
|
|
1191
|
-
return;
|
|
1192
|
-
}
|
|
1193
|
-
|
|
1194
|
-
__unsafe_unretained YapDatabaseFilteredView *filteredView =
|
|
1195
|
-
(YapDatabaseFilteredView *)viewConnection->view;
|
|
1196
|
-
|
|
1197
|
-
NSString *newVersionTag = inVersionTag ? [inVersionTag copy] : @"";
|
|
1198
|
-
|
|
1199
|
-
if ([filteredView->versionTag isEqualToString:newVersionTag])
|
|
1200
|
-
{
|
|
1201
|
-
YDBLogWarn(@"%@ - versionTag didn't change, so not updating view", THIS_METHOD);
|
|
1202
|
-
return;
|
|
1203
|
-
}
|
|
1204
|
-
|
|
1205
|
-
filteredView->filteringBlock = inFilteringBlock;
|
|
1206
|
-
filteredView->filteringBlockType = inFilteringBlockType;
|
|
1207
|
-
|
|
1208
|
-
filteredView->versionTag = newVersionTag;
|
|
1209
|
-
|
|
1210
|
-
[self repopulateView];
|
|
1211
|
-
[self setStringValue:newVersionTag forExtensionKey:ExtKey_versionTag];
|
|
1212
|
-
|
|
1213
|
-
// Notify any extensions dependent upon this one that we repopulated.
|
|
1214
|
-
|
|
1215
|
-
NSString *registeredName = [self registeredName];
|
|
1216
|
-
NSDictionary *extensionDependencies = databaseTransaction->connection->extensionDependencies;
|
|
1217
|
-
|
|
1218
|
-
[extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
|
|
1219
|
-
|
|
1220
|
-
__unsafe_unretained NSString *extName = (NSString *)key;
|
|
1221
|
-
__unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
|
|
1222
|
-
|
|
1223
|
-
if ([extDependencies containsObject:registeredName])
|
|
1224
|
-
{
|
|
1225
|
-
YapDatabaseExtensionTransaction *extTransaction = [databaseTransaction ext:extName];
|
|
1226
|
-
|
|
1227
|
-
if ([extTransaction respondsToSelector:@selector(viewDidRepopulate:)])
|
|
1228
|
-
{
|
|
1229
|
-
[(id <YapDatabaseViewDependency>)extTransaction viewDidRepopulate:registeredName];
|
|
1230
|
-
}
|
|
1231
|
-
}
|
|
1232
|
-
}];
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
@end
|