Revision: 29223
          http://sourceforge.net/p/bibdesk/svn/29223
Author:   hofman
Date:     2025-04-27 21:56:26 +0000 (Sun, 27 Apr 2025)
Log Message:
-----------
Formatter for CQL queries for SRU search groups

Modified Paths:
--------------
    trunk/bibdesk/BDSKSRUGroupServer.m
    trunk/bibdesk/de.lproj/Localizable.strings
    trunk/bibdesk/en.lproj/Localizable.strings
    trunk/bibdesk/fr.lproj/Localizable.strings

Modified: trunk/bibdesk/BDSKSRUGroupServer.m
===================================================================
--- trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-27 17:10:38 UTC (rev 29222)
+++ trunk/bibdesk/BDSKSRUGroupServer.m  2025-04-27 21:56:26 UTC (rev 29223)
@@ -43,6 +43,7 @@
 #import "NSString_BDSKExtensions.h"
 #import "NSURL_BDSKExtensions.h"
 #import "BDSKStringConstants.h"
+#import <yaz/ZOOMObjC.h>
 
 #define MAX_RESULTS 100
 
@@ -56,6 +57,11 @@
 
 enum { BDSKSRUStateIdle, BDSKSRUStateSearch, BDSKSRUStateRetrieve };
 
+@interface BDSKCQLQueryFormatter : NSFormatter
+@end
+
+#pragma mark -
+
 @interface BDSKSRUGroupServer ()
 
 @property (nonatomic, copy) NSString *searchTerm;
@@ -187,7 +193,12 @@
 
 - (BOOL)isRetrieving { return BDSKSRUStateIdle != downloadState; }
 
-- (NSFormatter *)searchStringFormatter { return nil; }
+- (NSFormatter *)searchStringFormatter {
+    static NSFormatter *formatter = nil;
+    if (formatter == nil)
+        formatter = [[BDSKCQLQueryFormatter alloc] init];
+    return formatter;
+}
 
 #pragma mark Search methods
 
@@ -357,3 +368,31 @@
 }
 
 @end
+
+#pragma mark -
+
+@implementation BDSKCQLQueryFormatter
+
+- (NSString *)stringForObjectValue:(id)obj { return obj; }
+
+- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string 
errorDescription:(NSString **)error;
+{
+    BOOL success;
+    if (string && [@"" isEqualToString:string] == NO) {
+        ZOOM_query query = ZOOM_query_create();
+        int status = ZOOM_query_cql2rpn(query, [string UTF8String], NULL);
+        if (status) {
+            if (error) *error = NSLocalizedString(@"This is not a valid CQL 
query.", @"Error description");
+            success = NO;
+        } else {
+            success = YES;
+        }
+        ZOOM_query_destroy(query);
+    } else {
+        success = YES;
+    }
+    *obj = string;
+    return success;
+}
+
+@end

Modified: trunk/bibdesk/de.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/en.lproj/Localizable.strings
===================================================================
(Binary files differ)

Modified: trunk/bibdesk/fr.lproj/Localizable.strings
===================================================================
(Binary files differ)

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to