2010-04-15 David Wetzel <dave@turbocat.de>

new GSWDatabase Framework for EOF/GDL based applications
    not tested yet!
    GSWeb.framework:
    * Moved WODisplayGroup.? to GSWDatabase
    * GSWApplication: removed EOF
    * small cleanups   



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@30163 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Dave Wetzel 2010-04-15 05:58:08 +00:00
parent 694de1fe8e
commit 89e2a50334
6 changed files with 3031 additions and 86 deletions

86
GSWDatabase/GNUmakefile Normal file
View file

@ -0,0 +1,86 @@
# GNUmakefile - GSWeb: GNUmakefile
# Copyright (C) 2010 Free Software Foundation, Inc.
#
# Written by: David Wetzel <dave@turbocat.de>
# Date: Apr 2010
#
# This file is part of the GNUstep Web Library.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library 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
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
include $(GNUSTEP_MAKEFILES)/common.make
FRAMEWORK_NAME = GSWDatabase
GSWDatabase_CPPFLAGS = -DGSWEB_WONAMES
# The framework resource files and directories
GSWDatabase_RESOURCE_FILES = \
Resources/Info-gnustep.plist \
GSWDatabase_COMPONENTS =
GSWDatabase_LOCALIZED_RESOURCE_FILES =
GSWDatabase_COMPONENTS = $(addprefix GSW, \
$(addsuffix .gswc, $(Extensions_COMPONENTS)))
GSWDatabase_COMPONENTS += GSWRedirect.gswc
WOExtensions_COMPONENTS = $(addprefix WO, \
$(addsuffix .wo, $(Extensions_COMPONENTS)))
GSWDatabase_LANGUAGES = \
French
GSWDatabase_LOCALIZED_RESOURCE_FILES = $(addprefix GSW, \
$(addsuffix .gswc, $(Extensions_LOCALIZED_RESOURCE_FILES)))
WOExtensions_LOCALIZED_RESOURCE_FILES = $(addprefix WO, \
$(addsuffix .wo, $(Extensions_LOCALIZED_RESOURCE_FILES)))
WOExtensions_LANGUAGES = $(GSWDatabase_LANGUAGES)
GSWDatabase_RESOURCE_DIRS =
# The Objective-C source files to be compiled
GSWDatabase_OBJC_FILES = \
WODisplayGroup.m
# The header files to be installed
GSWDatabase_HEADER_FILES = \
WODisplayGroup.h
WOExtensions_HEADER_FILES = $(GSWDatabase_HEADER_FILES) \
WOExtensions.h $(WO_HEADER_FILES)
GSWDatabase_HEADER_FILES_DIR = $(HEADER_DIR)
SRCS = $(LIBRARY_NAME:=.m)
HDRS = $(LIBRARY_NAME:=.h)
GSWDatabase_AUTOGSDOC_HEADERS = $(GSWDatabase_HEADER_FILES)
GSWDatabase_AUTOGSDOC_SOURCE = $(GSWDatabase_OBJC_FILES)
DOCUMENT_NAME = GSWDatabase
-include Makefile.preamble
-include GNUmakefile.local
include ../gsweb.make
include $(GNUSTEP_MAKEFILES)/framework.make
-include Makefile.postamble

7
GSWDatabase/README Normal file
View file

@ -0,0 +1,7 @@
GDL dependant code will go here.
You have to add the GSWDatabase.framework to your project if you want to use a database.
Have fun!
-- dw

View file

@ -0,0 +1,282 @@
/** GSWDisplayGroup.h - <title>GSWeb: Class GSWDisplayGroup</title>
Copyright (C) 1999-2004 Free Software Foundation, Inc.
Written by: Manuel Guesdon <mguesdon@orange-concept.com>
Date: Jan 1999
$Revision$
$Date$
This file is part of the GNUstep Web Library.
<license>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</license>
**/
// $Id$
#ifndef _GSWDisplayGroup_h__
#define _GSWDisplayGroup_h__
#ifdef TCSDB
#include <TCSimpleDB/TCSimpleDB.h>
#include <TCSimpleDB/EODefines.h>
#else
#include <EOControl/EOQualifier.h>
#include <EOControl/EOEditingContext.h>
#include <EOControl/EODataSource.h>
#include <EOControl/EODetailDataSource.h>
#include <EOControl/EOKeyValueArchiver.h>
#include <EOControl/EONull.h>
#include <EOControl/EODeprecated.h>
#include <EOAccess/EODatabaseDataSource.h>
#endif
@interface GSWDisplayGroup : NSObject <NSCoding>
{
id _delegate;
/*
objects (array) supplied by the EODataSource
EOQualifier and EOSortOrderings to filter the objects for display
Array of selection indexes
*/
EODataSource* _dataSource;
NSMutableArray* _allObjects;
NSMutableArray* _displayedObjects;
NSMutableArray* _selectedObjects;
NSArray* _selection;
NSArray* _sortOrdering;
EOQualifier* _qualifier; /** qualifier used to in memory filter after fetch **/
EOQualifier* _auxiliaryQueryQualifier; /** qualifier used when qualifying dataSource (added to query qualifiers) **/
NSArray* _localKeys;
NSDictionary* _insertedObjectDefaultValues;
NSMutableArray* _savedAllObjects;
NSMutableDictionary* _queryMatch;
NSMutableDictionary* _queryNotMatch;
NSMutableDictionary* _queryMin;
NSMutableDictionary* _queryMinMatch;
NSMutableDictionary* _queryMax;
NSMutableDictionary* _queryMaxMatch;
NSMutableDictionary* _queryOperator;
NSMutableDictionary* _queryKeyValueQualifierClassName;
NSString* _defaultStringMatchOperator;
NSString* _defaultStringMatchFormat;
NSMutableDictionary*_queryBindings;
int _updatedObjectIndex;
unsigned _numberOfObjectsPerBatch;
unsigned _batchIndex;
struct {
unsigned int selectFirstObject:1;
unsigned int autoFetch:1;
unsigned int validateImmediately:1;
unsigned int fetchAll:1;
unsigned int isCustomDataSourceClass:1;
unsigned int isInitialized:1;
unsigned int didChangeContents:1;
unsigned int didChangeSelection:1;
unsigned int haveFetched:1;
unsigned int _reserved:23;
} _flags;
struct {
unsigned int didChangeDataSource:1;
unsigned int displayArrayForObjects:1;
unsigned int selectsFirstObjectAfterFetch:1;
unsigned int shouldChangeSelection:1;
unsigned int didChangeSelection:1;
unsigned int didChangeSelectedObjects:1;
unsigned int createObjectFailed:1;
unsigned int shouldInsertObject:1;
unsigned int didInsertObject:1;
unsigned int shouldFetchObjects:1;
unsigned int didFetchObjects:1;
unsigned int shouldDeleteObject:1;
unsigned int didDeleteObject:1;
unsigned int didSetValueForObject:1;
unsigned int shouldRedisplay:1;
unsigned int shouldRefetchObjects:1;
unsigned int _reserved:16;
} _delegateRespondsTo;
};
+ (GSWDisplayGroup* )displayGroup;
- (id)undoManager;
- (NSArray *)allObjects;
- (NSArray *)allQualifierOperators;
- (unsigned)batchCount;
- (BOOL)buildsQualifierFromInput;
- (BOOL)clearSelection;
- (unsigned)currentBatchIndex;
- (EODataSource *)dataSource;
- (NSString *)defaultStringMatchFormat;
- (NSString *)defaultStringMatchOperator;
+ (NSString*)globalDefaultStringMatchOperator;
+ (void)setGlobalDefaultStringMatchOperator:(NSString *)operatorString;
+ (NSString *)globalDefaultStringMatchFormat;
+ (void)setGlobalDefaultStringMatchFormat:(NSString *)format;
+ (BOOL)globalDefaultForValidatesChangesImmediately;
+ (void)setGlobalDefaultForValidatesChangesImmediately:(BOOL)flag;
- (id)delegate;
- (id)delete;
- (BOOL)deleteObjectAtIndex:(unsigned)index;
- (BOOL)deleteSelection;
- (NSString *)detailKey;
- (id)displayBatchContainingSelectedObject;
- (NSArray *)displayedObjects;
- (NSArray *)allDisplayedObjects;
- (id)displayFirstBatch;
- (id)displayNextBatch;
- (id)displayPreviousBatch;
- (id)displayLastBatch;
- (BOOL)canDisplayFirstBatch;
- (BOOL)canDisplayNextBatch;
- (BOOL)canDisplayPreviousBatch;
- (BOOL)canDisplayLastBatch;
- (BOOL)endEditing;
- (id)executeQuery;
- (id)fetch;
- (BOOL)fetchesOnLoad;
- (BOOL)hasDetailDataSource;
- (BOOL)hasMultipleBatches;
- (unsigned)indexOfFirstDisplayedObject;
- (unsigned)indexOfLastDisplayedObject;
- (id)init;
- (id)initWithKeyValueUnarchiver:(EOKeyValueUnarchiver*)unarchiver;
- (void)awakeFromKeyValueUnarchiver:(EOKeyValueUnarchiver*)object;
- (NSMutableDictionary *)inputObjectForQualifier;
- (BOOL)inQueryMode;
-(void) editingContext:(EOEditingContext*)editingContext
presentErrorMessage:(NSString*)msg;
- (id)insert;
- (id)insertAfterLastObject;
- (NSDictionary *)insertedObjectDefaultValues;
- (void)insertObject:object
atIndex:(unsigned)index;
- (id)insertObjectAtIndex:(unsigned)index;
- (EOQualifier *)lastQualifierFromInputValues;
- (NSArray *)localKeys;
- (id)masterObject;
- (unsigned)numberOfObjectsPerBatch;
- (EOQualifier *)qualifier;
- (EOQualifier *)_auxiliaryQueryQualifier;
- (EOQualifier *)qualifierFromInputValues;
- (EOQualifier *)qualifierFromQueryValues;
- (void)qualifyDataSource;
- (void)qualifyDisplayGroup;
- (NSMutableDictionary*)queryBindings;
- (NSMutableDictionary*)queryMatch;
- (NSMutableDictionary*)queryNotMatch;
- (NSMutableDictionary*)queryMax;
- (NSMutableDictionary*)queryMaxMatch;
- (NSMutableDictionary*)queryMin;
- (NSMutableDictionary*)queryMinMatch;
- (NSMutableDictionary*)queryOperator;
- (NSMutableDictionary*)queryKeyValueQualifierClassName;
- (void)redisplay;
- (NSArray *)relationalQualifierOperators;
- (NSMutableDictionary *)secondObjectForQualifier;
- (id)selectedObject;
- (void)setSelectedObject:(id)object;
- (void)setSelectedObjects:(NSArray *)objects;
- (NSArray *)selectedObjects;
- (NSArray *)selectionIndexes;
- (id)selectFirst;
- (id)selectNext;
- (BOOL)selectObject:(id)object;
- (BOOL)selectObjectsIdenticalTo:(NSArray *)objects;
- (BOOL)selectObjectsIdenticalTo:(NSArray *)objects
selectFirstOnNoMatch:(BOOL)flag;
- (id)selectPrevious;
- (BOOL)selectsFirstObjectAfterFetch;
- (void)setBuildsQualifierFromInput:(BOOL)flag;
- (void)setCurrentBatchIndex:(unsigned)index;
- (void)setDataSource:(EODataSource *)dataSource;
- (void)setDefaultStringMatchFormat:(NSString *)format;
- (void)setDefaultStringMatchOperator:(NSString *)operator;
- (void)setDelegate:(id)object;
- (void)setDetailKey:(NSString *)detailKey;
- (void)setFetchesOnLoad:(BOOL)flag;
- (void)setInQueryMode:(BOOL)flag;
- (void)setInsertedObjectDefaultValues:(NSDictionary *)defaultValues;
- (void)setQueryOperator:(NSDictionary*)qo;
- (void)addQueryOperator:(NSString*)value
forKey:(NSString*)operatorKey;
- (void)setQueryKeyValueQualifierClassName:(NSDictionary*)qo;
- (void)setLocalKeys:(NSArray *)keys;
- (void)setMasterObject:(id)masterObject;
- (void)setNumberOfObjectsPerBatch:(unsigned)count;
- (void)setObjectArray:(NSArray *)objects;
- (void)setQualifier:(EOQualifier *)qualifier;
- (void)setAuxiliaryQueryQualifier:(EOQualifier *)qualifier;
- (BOOL)setSelectionIndexes:(NSArray *)selection;
- (void)setSelectsFirstObjectAfterFetch:(BOOL)flag;
- (void)setSortOrderings:(NSArray *)orderings;
- (void)setValidatesChangesImmediately:(BOOL)flag;
- (NSArray *)sortOrderings;
- (void)updateDisplayedObjects;
- (BOOL)validatesChangesImmediately;
@end
// By Delegate
@interface NSObject (GSWDisplayGroupDelegation)
-(void)displayGroup:(GSWDisplayGroup*)displayGroup
createObjectFailedForDataSource:(id)dataSource;
-(void)displayGroup:(GSWDisplayGroup*)displayGroup
didDeleteObject:(id)object;
-(void)displayGroup:(GSWDisplayGroup*)displayGroup
didFetchObjects:(NSArray*)objects;
-(void)displayGroup:(GSWDisplayGroup*)displayGroup
didInsertObject:(id)object;
-(void)displayGroup:(GSWDisplayGroup*)displayGroup
didSetValue:(id)value
forObject:(id)object
key:(NSString*)key;
-(NSArray*)displayGroup:(GSWDisplayGroup*)displayGroup
displayArrayForObjects:(NSArray*)objects;
-(BOOL)displayGroup:(GSWDisplayGroup*)displayGroup
shouldChangeSelectionToIndexes:(NSArray*)newIndexes;
-(BOOL)displayGroup:(GSWDisplayGroup*)displayGroup
shouldInsertObject:object
atIndex:(unsigned)index;
-(BOOL)displayGroup:(GSWDisplayGroup*)displayGroup
shouldDeleteObject:object;
-(BOOL)displayGroup:(GSWDisplayGroup*)displayGroup
shouldRedisplayForEditingContextChangeNotification:(NSNotification*)notification;
-(BOOL)displayGroup:(GSWDisplayGroup*)displayGroup
shouldRefetchForInvalidatedAllObjectsNotification:(NSNotification*)notification;
-(void)displayGroupDidChangeDataSource:(GSWDisplayGroup*)displayGroup;
-(void)displayGroupDidChangeSelectedObjects:(GSWDisplayGroup*)displayGroup;
-(void)displayGroupDidChangeSelection:(GSWDisplayGroup*)displayGroup;
-(BOOL)displayGroupShouldFetch:(GSWDisplayGroup*)displayGroup;
@end
#endif //_GSWDisplayGroup_h__

2605
GSWDatabase/WODisplayGroup.m Normal file

File diff suppressed because it is too large Load diff

View file

@ -558,6 +558,53 @@ GSWEB_EXPORT BOOL WOStrictFlag;
-(void)setRequestClassName:(NSString*)className;
-(NSString*)requestClassName;
//NDFN
-(id)propListWithResourceNamed:(NSString*)aName
ofType:(NSString*)aType
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
+(BOOL)createUnknownComponentClasses:(NSArray*)classes
superClassName:(NSString*)aSuperClassName;
+(void)addDynCreateClassName:(NSString*)aClassName
superClassName:(NSString*)aSuperClassName;
//NDFN
-(NSString*)pathForResourceNamed:(NSString*)aName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSString*)pathForResourceNamed:(NSString*)aName
ofType:(NSString*)aType
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSString*)urlForResourceNamed:(NSString*)aName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages
request:(GSWRequest*)aRequest;
//NDFN
-(NSString*)stringForKey:(NSString*)key_
inTableNamed:(NSString*)aTableName
withDefaultValue:(NSString*)defaultValue
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSDictionary*)stringsTableNamed:(NSString*)aTableName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSArray*)stringsTableArrayNamed:(NSString*)aTableName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSArray*)filterLanguages:(NSArray*)languages;
@end
GSWEB_EXPORT GSWApplication* GSWApp;
/* User Defaults. This is an interface in WO 4.x -- dw*/
@interface GSWApplication (UserDefaults)
+(NSArray*)loadFrameworks;
+(void)setLoadFrameworks:(NSArray*)frameworks;
+(BOOL)isDebuggingEnabled;
@ -688,76 +735,6 @@ GSWEB_EXPORT BOOL WOStrictFlag;
+(BOOL)_multipleInstances;
+(void)_readLicenseParameters;
//NDFN
-(id)propListWithResourceNamed:(NSString*)aName
ofType:(NSString*)aType
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
+(BOOL)createUnknownComponentClasses:(NSArray*)classes
superClassName:(NSString*)aSuperClassName;
+(void)addDynCreateClassName:(NSString*)aClassName
superClassName:(NSString*)aSuperClassName;
//NDFN
-(NSString*)pathForResourceNamed:(NSString*)aName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSString*)pathForResourceNamed:(NSString*)aName
ofType:(NSString*)aType
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
@end /* User defaults */
//NDFN
-(NSString*)urlForResourceNamed:(NSString*)aName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages
request:(GSWRequest*)aRequest;
//NDFN
-(NSString*)stringForKey:(NSString*)key_
inTableNamed:(NSString*)aTableName
withDefaultValue:(NSString*)defaultValue
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSDictionary*)stringsTableNamed:(NSString*)aTableName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSArray*)stringsTableArrayNamed:(NSString*)aTableName
inFramework:(NSString*)aFrameworkName
languages:(NSArray*)languages;
//NDFN
-(NSArray*)filterLanguages:(NSArray*)languages;
@end
//====================================================================
/*
@interface GSWApplication (GSWDeprecatedAPI)
-(GSWComponent*)pageWithName:(NSString*)aName; //OldFN
-(void)savePage:(GSWComponent*)page_;
-(GSWSession*)session;
-(GSWContext*)context;
-(GSWSession*)createSession;
-(GSWSession*)restoreSession;
-(void)saveSession:(GSWSession*)session_;
-(GSWResponse*)handleSessionCreationError;
-(GSWResponse*)handleSessionRestorationError;
-(GSWResponse*)handlePageRestorationError;
-(GSWResponse*)handleException:(NSException*)exception_;
-(GSWComponent*)restorePageForContextID:(NSString*)contextID_;
-(NSString*)pathForResourceNamed:(NSString*)aName
ofType:(NSString*)aType;
-(NSString*)urlForResourceNamed:(NSString*)aName
ofType:(NSString*)aType;
-(NSString*)stringForKey:(NSString*)key_
inTableNamed:(NSString*)table_
withDefaultValue:(NSString*)defaultValue_;
-(GSWResponse*)handleRequest:(GSWRequest*)aRequest;
-(GSWDynamicElement*)dynamicElementWithName:(NSString*)aName
associations:(NSDictionary*)associations_
template:(GSWElement*)templateElement_; //OldFN
@end
*/
GSWEB_EXPORT GSWApplication* GSWApp;
#endif //_GSWApplication_h__

View file

@ -37,12 +37,6 @@ RCS_ID("$Id$")
#include "GSWLifebeatThread.h"
#include "GSWRecording.h"
#if HAVE_GDL2 // GDL2 implementation
#include <EOAccess/EOModelGroup.h>
#endif
#ifdef TCSDB
#include <TCSimpleDB/TCSimpleDB.h>
#endif
#include "stacktrace.h"
#include "attach.h"
@ -3661,18 +3655,12 @@ to another instance **/
//--------------------------------------------------------------------
+(id)defaultModelGroup
{
#if HAVE_GDL2 // GDL2 implementation
//OK
return [EOModelGroup defaultGroup];
#else
#ifdef TCSDB
return [DBModelGroup defaultGroup];
return [NSClassFromString(@"DBModelGroup") defaultGroup];
#else
LOGClassFnNotImplemented();
return nil;
return [NSClassFromString(@"EOModelGroup") defaultGroup];
#endif
#endif
};
}
//--------------------------------------------------------------------
+(id)_modelGroupFromBundles:(id)bundles