/*! @header FTDictionaryServiceForNodeImpl @abstract Module of FT @availability OS X, GNUstep @copyright 2004, 2005, 2006 Free Software Foundation, Inc. This library 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.1 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  -------------------------------------------------------------------------
  Modification history

  17.07.06 ola     initial version
  23.08.06 ola     license changed
  -------------------------------------------------------------------------
  
*/ #include #include #include "FTDictionaryServiceForNodeImpl.h" #include #include "FTDictionaryServiceTransactionStepImpl.h" #include "FTDictionaryServiceForGraphImpl.h" @implementation FTDictionaryServiceForNodeImpl - initForDictionaryServiceForGraph: (FTDictionaryServiceForGraphImpl *) aServiceForGraph forNode: (id ) aNode { self = [super init]; self->serviceForGraph = [aServiceForGraph retain]; self->node = [aNode retain]; return self; } - (void) dealloc { [self->serviceForGraph release]; [self->node release]; [super dealloc]; } - (id ) allKeys { return [self->serviceForGraph allKeysOfNode: self->node]; } - (void) close { return; } - setObject: (id ) anObject forKey: (id ) aKey { id transaction; FTTransactionContext *context; FTDictionaryServiceTransactionStepImpl *transactionStep; if( [[FTLogging coreLog] isTraceEnabled] ) { [[FTLogging coreLog] trace: @"FTDictionaryServiceForNodeImpl::setObject"]; } /* todo: first check wether node exists in db ... */ transaction = [[FTSessionImpl currentSession] currentTransaction]; if( nil == transaction ) { [[[ECIllegalStateException alloc] initWithIllegalStateInfo: @"FTDictionaryServiceForNodeImpl::setObject: "\ "no transaction given!"] raise]; } context = [[((FTTransactionImpl *) transaction) createContext] autorelease]; transactionStep = [FTDictionaryServiceTransactionStepImpl transactionForOperationSETOfNode: self->node withKey: aKey withObject: anObject withDictionaryServiceGraphImpl: self->serviceForGraph transactionContext: context]; [((FTTransactionImpl *) transaction) addTransactionStep: transactionStep withContext: context ]; return self; } - objectForKey: (id ) aKey { if( [[FTLogging coreLog] isTraceEnabled] ) { [[FTLogging coreLog] trace: @"FTDictionaryServiceForNodeImpl::objectForKey"]; } return [self->serviceForGraph objectForKey: aKey ofNode: self->node]; } - removeObjectForKey: (id ) aKey { id transaction; FTTransactionContext *context; FTDictionaryServiceTransactionStepImpl *transactionStep; if( [[FTLogging coreLog] isTraceEnabled] ) { [[FTLogging coreLog] trace: @"FTDictionaryServiceForNodeImpl::"\ "removeObjectForKey"]; } /* todo: first check wether node exists in db ... */ transaction = [[FTSessionImpl currentSession] currentTransaction]; if( nil == transaction ) { [[[ECIllegalStateException alloc] initWithIllegalStateInfo: @"FTDictionaryServiceForNodeImpl::"\ "removeObjectForKey: no transaction given!"] raise]; } context = [[((FTTransactionImpl *) transaction) createContext] autorelease]; transactionStep = [FTDictionaryServiceTransactionStepImpl transactionForOperationREMOVEOfNode: self->node withKey: aKey withDictionaryServiceGraphImpl: self->serviceForGraph transactionContext: context]; [((FTTransactionImpl *) transaction) addTransactionStep: transactionStep withContext: context ]; return self; } - (NSString *) serviceId { return [[self->serviceForGraph serviceLoader] serviceId]; } - (id ) serviceVersion { return [[self->serviceForGraph serviceLoader] serviceVersion]; } @end