xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexEntry.cpp
branchGCC_SURGE
changeset 28 d9861ae9169c
parent 23 77cb48a03620
parent 26 04ca1926b01c
--- a/xdmprotocols/XcapProtocol/XcapCache/Server/src/XcapCacheIndexEntry.cpp	Thu Jul 01 14:09:06 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,404 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   CXcapCacheIndexEntry
-*
-*/
-
-
-
-
-// INCLUDE FILES
-#include "ServerDefines.h"
-#include "XcapCacheServer.h"
-#include "XcapCacheIndexEntry.h"
-#include "XcapCacheEntryProperty.h"
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::CXcapCacheIndexEntry
-// 
-// ----------------------------------------------------------
-//
-CXcapCacheIndexEntry::CXcapCacheIndexEntry()
-    {
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::NewL
-// 
-// ----------------------------------------------------------
-//
-CXcapCacheIndexEntry* CXcapCacheIndexEntry::NewL( const TCacheEntryInfo* aHeader )
-    {
-    CXcapCacheIndexEntry* self = new( ELeave ) CXcapCacheIndexEntry();
-    CleanupStack::PushL( self );
-    self->ConstructL( aHeader );
-    CleanupStack::Pop();
-    return self;
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::NewL
-// 
-// ----------------------------------------------------------
-//
-CXcapCacheIndexEntry* CXcapCacheIndexEntry::NewL( TPtr8& aEntryData )
-    {
-    CXcapCacheIndexEntry* self = new( ELeave ) CXcapCacheIndexEntry();
-    CleanupStack::PushL( self );
-    self->ConstructL( aEntryData );
-    CleanupStack::Pop();
-    return self;
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::~CXcapCacheIndexEntry
-// 
-// ----------------------------------------------------------
-//
-CXcapCacheIndexEntry::~CXcapCacheIndexEntry()
-    {
-    iPropertyList.ResetAndDestroy();
-    iPropertyList.Close();
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::ConstructL
-// 
-// ----------------------------------------------------------
-//
-void CXcapCacheIndexEntry::ConstructL( TPtr8& aEntryData )
-    {
-    while( aEntryData.Length() > 0 )
-        {
-        CXcapCacheEntryProperty* prop = NULL;
-        TInt index = aEntryData.FindF( KValueFieldSeparator );
-        if( index > 0 )
-            {
-            TPtrC8 propData = aEntryData.Left( index );
-            TInt separator = propData.FindF( KValuePropertySeparator );
-            if( separator > 0 )
-                {
-                TPtrC8 name = propData.Left( separator );
-                TPtrC8 value = propData.Right( propData.Length() - separator - 1 );
-                const TInt nameId = FindPropNameId( name );
-                __ASSERT_DEBUG( nameId != KErrNotFound, User::Leave( KErrCorrupt ) );
-                prop = CreatePropertyL( nameId, value );
-                CleanupStack::PushL( prop );
-                User::LeaveIfError( iPropertyList.Append( prop ) );
-                CleanupStack::Pop();  //prop
-                }
-            aEntryData.Delete( 0, index + 1 );
-            }
-        }
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::ConstructL
-// 
-// ----------------------------------------------------------
-//
-void CXcapCacheIndexEntry::ConstructL( const TCacheEntryInfo* aHeader )
-    {
-    CreateFromHeaderL( aHeader );
-    }
-    
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::FindPropNameId
-// 
-// ----------------------------------------------------------
-//
-TInt CXcapCacheIndexEntry::FindPropNameId( const TDesC8& aNameString ) const
-    {
-    TBool found = EFalse;
-    TInt ret = KErrNotFound;
-    TInt arrayLength = sizeof( KCacheEntryArray ) /
-                       sizeof( KCacheEntryArray[0] );
-    for( TInt i = 0;!found && i < arrayLength;i++ )
-        {
-        if( aNameString.CompareF( TPtrC8( KCacheEntryArray[i] ) ) == 0 )
-            {
-            ret = i;
-            found = ETrue;
-            }
-        }
-    return ret;
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::UpdateEntryL
-// 
-// ----------------------------------------------------------
-//
-void CXcapCacheIndexEntry::UpdateEntryL( const TCacheEntryInfo* aHeader )
-    {
-    TTime access = LastAccess();
-    DeleteFileL( FileNameL() );
-    iPropertyList.ResetAndDestroy();
-    CreateFromHeaderL( aHeader );
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::DeleteFileL
-// 
-// ----------------------------------------------------------
-//
-void CXcapCacheIndexEntry::DeleteFileL( const TDesC8& aFileName )
-    {
-    HBufC* buf = HBufC::NewLC( aFileName.Length() );
-    buf->Des().Copy( aFileName );
-    CFileMan* manager = CFileMan::NewL( CXcapCacheServer::FileSession() );
-    CleanupStack::PushL( manager );
-    TInt error = manager->Delete( buf->Des() );
-    #ifdef _DEBUG
-        CXcapCacheServer::WriteToLog( _L8( "CXcapCacheServer::DeleteFileL() - Error: %d" ), error );
-    #endif
-    CleanupStack::PopAndDestroy( 2 );  //manager, buf
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::CreatePropertyL
-// 
-// ----------------------------------------------------------
-//
-CXcapCacheEntryProperty* CXcapCacheIndexEntry::CreatePropertyL( const TInt aPropertyName,
-                                                                const TDesC8& aPropertyValue )
-    {
-    return CXcapCacheEntryProperty::NewL( aPropertyName, aPropertyValue );
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::FindProperty
-// 
-// ---------------------------------------------------------
-//  
-const CXcapCacheEntryProperty& CXcapCacheIndexEntry::FindProperty( const TInt aPropId ) const
-    {
-    TBool found = EFalse;
-    TInt count = iPropertyList.Count();
-    CXcapCacheEntryProperty* property = NULL;
-    for( TInt i = 0;!found && i < count;i++ )
-        {
-        property = iPropertyList[i];
-        if( property->Name() == aPropId )
-            found = ETrue;
-        }
-    return *property;
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::LastAccess
-// 
-// ---------------------------------------------------------
-//  
-TTime CXcapCacheIndexEntry::LastAccess() const
-    {
-    const CXcapCacheEntryProperty& property = FindProperty( KCacheLastAccess );
-    return property.TimeValue();
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::LastModified
-// 
-// ---------------------------------------------------------
-//  
-TTime CXcapCacheIndexEntry::LastModified() const
-    {
-    const CXcapCacheEntryProperty& property = FindProperty( KCacheLastModified );
-    return property.TimeValue();
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::XmlSize
-// 
-// ---------------------------------------------------------
-//  
-TInt CXcapCacheIndexEntry::XmlSize() const
-    {
-    const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlSize );
-    return property.IntValue();
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::FileNameL
-// 
-// ---------------------------------------------------------
-//  
-TPtrC8 CXcapCacheIndexEntry::FileNameL() const
-    {
-    const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlFile );
-    return property.DesValue8();
-    }
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::FileName16L
-// 
-// ---------------------------------------------------------
-//
-TPtrC CXcapCacheIndexEntry::FileName16L() const
-	{
-	const CXcapCacheEntryProperty& property = FindProperty( KCacheXmlFile );
-	return property.DesValue16();
-	}
-
-// ---------------------------------------------------------
-// CXcapCacheIndexTableEntry::ETag
-// 
-// ---------------------------------------------------------
-//  
-TPtrC8 CXcapCacheIndexEntry::ETag() const
-    {
-    const CXcapCacheEntryProperty& property = FindProperty( KCacheEntryETag );
-    return property.DesValue8();
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::CreateFromHeaderL
-// 
-// ----------------------------------------------------------
-//
-void CXcapCacheIndexEntry::CreateFromHeaderL( const TCacheEntryInfo* aHeader )
-    {
-    TInt arrayLength = sizeof( KCacheEntryArray ) /
-                       sizeof( KCacheEntryArray[0] );
-    HBufC8* hour = HourStringLC();
-    for( TInt i = 0;i < arrayLength;i++ )
-        {
-        CXcapCacheEntryProperty* prop = NULL;
-        switch( i )
-            {
-            case KCacheEntryETag:
-                prop = CreatePropertyL( KCacheEntryETag, *aHeader->iEtag );
-                break;
-            case KCacheXmlSize:
-                {
-                TBuf8<10> sizeBuf;
-                sizeBuf.AppendNum( aHeader->iDataLength );
-                prop = CreatePropertyL( KCacheXmlSize, sizeBuf );
-                }
-                break;
-            case KCacheXmlFile:
-                {
-                HBufC8* fileName = StoreXmlFileLC( *aHeader->iRespData );
-                prop = CreatePropertyL( KCacheXmlFile, fileName->Des() );
-                CleanupStack::PopAndDestroy();  //fileName
-                }
-                break;
-            case KCacheLastAccess:
-                prop = CreatePropertyL( KCacheLastAccess, hour->Des() );
-                break;
-            case KCacheLastModified:
-                prop = CreatePropertyL( KCacheLastModified, hour->Des() );
-                break;
-            default:
-                break;
-            }
-        if( prop != NULL )
-            User::LeaveIfError( iPropertyList.Append( prop ) );
-        }
-    CleanupStack::PopAndDestroy();  //hour
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::HourStringLC
-// 
-// ----------------------------------------------------------
-//
-HBufC8* CXcapCacheIndexEntry::HourStringLC()
-    {
-    HBufC8* hourString = NULL;
-    TPtrC date( CXcapCacheServer::Date() );
-    TPtrC time( CXcapCacheServer::Time() );
-    hourString = HBufC8::NewLC( date.Length() + time.Length() + 1 );
-    TPtr8 pointer( hourString->Des() );
-    pointer.Copy( date );
-    pointer.Append( KPageFileSeparator );
-    pointer.Append( time );
-    return hourString;
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::StoreXmlFileLC
-// 
-// ----------------------------------------------------------
-//
-HBufC8* CXcapCacheIndexEntry::StoreXmlFileLC( const TDesC8& aXmlData )
-    {
-    RFile file;
-    HBufC* nameBuf = NULL;
-    TPtrC randomName( _L( "" ) );
-    TInt error = KErrAlreadyExists;
-    //It is extremely unlikely that the random string generator
-    //creates two exact same patterns, but let's check for it, anyway.
-    while( error == KErrAlreadyExists )
-        {
-        randomName.Set( CXcapCacheServer::RandomString() );
-        nameBuf = HBufC::NewLC( KCacheServerRoot().Length() + randomName.Length() );
-        nameBuf->Des().Copy( KCacheServerRoot );
-        nameBuf->Des().Append( randomName );
-        error = file.Create( CXcapCacheServer::FileSession(),
-                             nameBuf->Des(), EFileWrite );
-        if( error != KErrNone )
-            CleanupStack::PopAndDestroy();  //nameBuf
-        }
-    file.Write( aXmlData );
-    file.Close();
-    __ASSERT_ALWAYS( nameBuf != NULL, User::Leave( KErrCorrupt ) );
-    HBufC8* ret = HBufC8::NewLC( nameBuf->Des().Length() );
-    ret->Des().Copy( nameBuf->Des() );
-    CleanupStack::Pop();  //ret
-    CleanupStack::PopAndDestroy();  //nameBuf
-    CleanupStack::PushL( ret );
-    return ret;
-    }
-
-// ----------------------------------------------------------
-// CXcapCacheIndexEntry::PrintLC
-// 
-// ----------------------------------------------------------
-//
-HBufC8* CXcapCacheIndexEntry::PrintLC() const
-    {
-    TInt position = 0;
-    CBufFlat* buffer = NULL;
-    HBufC8* entryString = NULL;
-    TInt count = iPropertyList.Count();
-    if( count > 0 )
-        {
-        buffer = CBufFlat::NewL( 50 );
-        CleanupStack::PushL( buffer );
-        for( TInt i = 0;i < count;i++ )
-            {
-            TPtrC8 name = TPtrC8( KCacheEntryArray[iPropertyList[i]->Name()] );
-            TPtrC8 value = iPropertyList[i]->DesValue8();
-            buffer->InsertL( position, name );
-            position = position + name.Length();
-            buffer->InsertL( position, KValuePropertySeparator );
-            position = position + KValuePropertySeparator().Length();
-            buffer->InsertL( position, value );
-            position = position + value.Length();
-            buffer->InsertL( position, KValueFieldSeparator );
-            position = position + KValueFieldSeparator().Length();
-            }
-        buffer->InsertL( position, KIndexFileEndOfLine );
-        TPtr8 pointer( buffer->Ptr( 0 ) );
-        entryString = HBufC8::NewL( pointer.Length() );
-        entryString->Des().Copy( pointer );
-        CleanupStack::PopAndDestroy();  //buffer
-        CleanupStack::PushL( entryString );
-        }
-    return entryString;
-    }
-
-
-