]> err.no Git - sope/commitdiff
map EOControl to CoreData
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 2 Aug 2005 22:17:20 +0000 (22:17 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Tue, 2 Aug 2005 22:17:20 +0000 (22:17 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@959 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/mod_ngobjweb/handler.c
sope-appserver/samples/CoreDataBlog/ChangeLog
sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.h [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.m [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.h [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.m [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.h [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.m [new file with mode: 0644]
sope-appserver/samples/CoreDataBlog/GNUmakefile

index ce100333a8ee724936338dc824b03e2455e033fb..1476b29ab5dfa047e5f66d70a706cfa7411b6a1a 100644 (file)
@@ -266,7 +266,7 @@ int ngobjweb_handler(request_rec *r) {
   uri = r->uri;
   requestContentLength = 0;
   requestBody = NULL;
-  
+
 #ifndef AP_VERSION_1
   if (r->handler == NULL)
     return DECLINED;
index 7aeb8c5021bc4380d6bf2adc991e33d82bef9a29..bbb6ed5482d8793190b81f98e61c4693a2edf771 100644 (file)
@@ -1,3 +1,7 @@
+2005-08-03  Helge Hess  <helge.hess@opengroupware.org>
+
+       * added classes to map EOControl objects to CoreData ones
+
 2005-08-01  Helge Hess  <helge.hess@opengroupware.org>
 
        * started CoreData demo
diff --git a/sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.h b/sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.h
new file mode 100644 (file)
index 0000000..6d143e6
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#ifndef __EOFetchSpecification_CoreData_H__
+#define __EOFetchSpecification_CoreData_H__
+
+#include <EOControl/EOFetchSpecification.h>
+
+/*
+  EOFetchSpecification(CoreData)
+  
+  Convert an libEOControl EOFetchSpecification to a CoreData compliant fetch
+  specification.
+  
+  A major difference is that a CoreData NSFetchRequest takes the entity object
+  while in EOF we just pass the name of it.
+*/
+
+@class NSArray;
+@class NSFetchRequest, NSManagedObjectModel;
+
+@interface EOFetchSpecification(CoreData)
+
+- (NSFetchRequest *)fetchRequestWithModel:(NSManagedObjectModel *)_model;
+- (NSArray *)sortOrderingsAsSortDescriptors;
+
+@end
+
+#endif /* __EOFetchSpecification_CoreData_H__ */
diff --git a/sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.m b/sope-appserver/samples/CoreDataBlog/EOFetchSpecification+CoreData.m
new file mode 100644 (file)
index 0000000..be52a1b
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#include "EOFetchSpecification+CoreData.h"
+#include "EOSortOrdering+CoreData.h"
+#include "EOQualifier+CoreData.h"
+#include "common.h"
+
+
+@implementation EOFetchSpecification(CoreData)
+
+- (NSArray *)sortOrderingsAsSortDescriptors {
+  NSMutableArray *ma;
+  NSArray  *a;
+  unsigned i, count;
+  
+  if ((a = [self sortOrderings]) == nil)
+    return nil;
+  if ((count = [a count]) == 0)
+    return nil;
+  
+  if (count == 1) /* common, optimization */
+    return [NSArray arrayWithObject:[[a objectAtIndex:0] asSortDescriptor]];
+  
+  ma = [NSMutableArray arrayWithCapacity:count];
+  for (i = 0; i < count; i++)
+    [ma addObject:[[a objectAtIndex:i] asSortDescriptor]];
+  return ma;
+}
+
+- (NSFetchRequest *)fetchRequestWithModel:(NSManagedObjectModel *)_model {
+  NSFetchRequest *fr;
+  NSString *s;
+  
+  fr = [[[NSFetchRequest alloc] init] autorelease];
+  
+  if ((s = [self entityName]) != nil)
+    [fr setEntity:[[_model entitiesByName] objectForKey:s]];
+  
+  [fr setFetchLimit:[self fetchLimit]];
+  [fr setPredicate:[[self qualifier] asPredicate]];
+  [fr setSortDescriptors:[self sortOrderingsAsSortDescriptors]];
+  
+  return fr;
+}
+
+@end /* EOFetchSpecification(CoreData) */
diff --git a/sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.h b/sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.h
new file mode 100644 (file)
index 0000000..b47887b
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#ifndef __EOQualifier_CoreData_H__
+#define __EOQualifier_CoreData_H__
+
+#include <EOControl/EOQualifier.h>
+
+/*
+  EOQualifier(CoreData)
+  
+  Convert an libEOControl EOQualifier to a CoreData compliant NSPredicate
+  object.
+*/
+
+@class NSPredicate;
+
+@interface EOQualifier(CoreData)
+
+- (NSPredicate *)asPredicate;
+
+@end
+
+#endif /* __EOQualifier_CoreData_H__ */
diff --git a/sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.m b/sope-appserver/samples/CoreDataBlog/EOQualifier+CoreData.m
new file mode 100644 (file)
index 0000000..2b7ea03
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#include "EOQualifier+CoreData.h"
+#include "common.h"
+
+@implementation EOQualifier(CoreData)
+
+- (NSPredicate *)asPredicate {
+#warning IMPLEMENT ME
+  [self logWithFormat:@"TODO: AS PREDICATE ..."];
+  return nil;
+}
+
+@end /* EOQualifier(CoreData) */
diff --git a/sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.h b/sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.h
new file mode 100644 (file)
index 0000000..c0aa76e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#ifndef __EOSortOrdering_CoreData_H__
+#define __EOSortOrdering_CoreData_H__
+
+#include <EOControl/EOSortOrdering.h>
+
+/*
+  EOSortOrdering(CoreData)
+  
+  Convert an libEOControl EOSortOrdering to a CoreData compliant
+  NSSortDescriptor object.
+*/
+
+@class NSSortDescriptor;
+
+@interface EOSortOrdering(CoreData)
+
+- (NSSortDescriptor *)asSortDescriptor;
+
+@end
+
+#endif /* __EOSortOrdering_CoreData_H__ */
diff --git a/sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.m b/sope-appserver/samples/CoreDataBlog/EOSortOrdering+CoreData.m
new file mode 100644 (file)
index 0000000..c52c94b
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+  
+  This file is part of SOPE.
+
+  SOPE is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with SOPE; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#include "EOSortOrdering+CoreData.h"
+#include "common.h"
+
+@implementation EOSortOrdering(CoreData)
+
+- (NSSortDescriptor *)asSortDescriptor {
+  [self logWithFormat:@"TODO: AS SORT DESCRIPTOR ..."];
+  return nil;
+}
+
+@end /* EOSortOrdering(CoreData) */
index 5b1cb2d33be556545ac5f0b4faefbac7690d705b..a0e1f1a39458d7200d65b8c6c26d0a775b4f7d9d 100644 (file)
@@ -6,8 +6,11 @@ include $(GNUSTEP_MAKEFILES)/common.make
 WOAPP_NAME = CoreDataBlog
 
 CoreDataBlog_OBJC_FILES += \
-       WOCoreDataApplication.m \
-       WOSession+CoreData.m    \
+       WOCoreDataApplication.m         \
+       WOSession+CoreData.m            \
+       EOFetchSpecification+CoreData.m \
+       EOQualifier+CoreData.m          \
+       EOSortOrdering+CoreData.m       \
        \
        CoreDataBlog.m          \
        Session.m               \