diff -r 000000000000 -r 7f85d04be362 upnpmediaserver/contentdirectoryservice/src/upnpobjectbean.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpmediaserver/contentdirectoryservice/src/upnpobjectbean.cpp Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,351 @@ +/** @file +* Copyright (c) 2005-2006 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: Element table data handler +* +*/ + + + +// INCLUDE FILES +#include "upnpobjectbean.h" +#include "upnpcontentdirectoryglobals.h" +#include +#include +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::CUpnpObjectBean +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CUpnpObjectBean::CUpnpObjectBean() +{ + iObjRefId = KUndef; + +} + +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::ConstructL() +{ + +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CUpnpObjectBean* CUpnpObjectBean::NewLC() +{ + CUpnpObjectBean* self = new( ELeave ) CUpnpObjectBean; + CleanupStack::PushL( self ); + self->ConstructL(); + return self; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CUpnpObjectBean* CUpnpObjectBean::NewLC(const RDbRowSet& aRowSet) +{ + CUpnpObjectBean* self = NewLC(); + self->SetL(aRowSet); + return self; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CUpnpObjectBean* CUpnpObjectBean::NewL(const RDbRowSet& aRowSet) +{ + CUpnpObjectBean* self = NewLC(aRowSet); + CleanupStack::Pop(); + return self; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::~CUpnpObjectBean +// Destructor +// ----------------------------------------------------------------------------- +// +CUpnpObjectBean::~CUpnpObjectBean() +{ + delete iObjTitle; + delete iObjClass; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::SetL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::SetL(const RDbRowSet& aRowSet) +{ + // get cols ids + CDbColSet* colSet = aRowSet.ColSetL(); + CleanupStack::PushL(colSet); + const TInt idColNo = colSet->ColNo(KObjIdColName); + const TInt parentIDColNo = colSet->ColNo(KObjParentIdColName); + const TInt titleColNo = colSet->ColNo(KObjTiltleColName); + const TInt classColNo = colSet->ColNo(KObjClassColName); + const TInt restrictedColNo = colSet->ColNo(KObjRestrictedColName); + const TInt searchableColNo = colSet->ColNo(KObjSearchableColName); + const TInt refIDColNo = colSet->ColNo(KObjRefIdColName); + CleanupStack::PopAndDestroy(colSet); + + // for each column call setter + if( idColNo != KDbNullColNo ) + { + SetObjId( aRowSet.ColInt(idColNo) ); + } + if( parentIDColNo != KDbNullColNo ) + { + SetObjParentId( aRowSet.ColInt(parentIDColNo) ); + } + if( titleColNo != KDbNullColNo ) + { + SetObjTitleL( aRowSet.ColDes8(titleColNo) ); + } + if( classColNo != KDbNullColNo ) + { + SetObjClassL( aRowSet.ColDes8(classColNo) ); + } + if( restrictedColNo != KDbNullColNo ) + { + SetObjRestricted( aRowSet.ColUint8(restrictedColNo) ); + } + if( searchableColNo != KDbNullColNo && !aRowSet.IsColNull(searchableColNo) ) + { + SetObjSearchable( aRowSet.ColUint8(searchableColNo) ); + } + else + { + SetObjSearchable( KUndef); + } + if( refIDColNo != KDbNullColNo && !aRowSet.IsColNull(refIDColNo) ) + { + SetObjRefId( aRowSet.ColInt(refIDColNo) ); + } + else + { + SetObjRefId(KUndef); + } +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::SetObjTitleL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::SetObjTitleL(const TDesC8& aObjTitle) +{ + delete iObjTitle; + iObjTitle = NULL; + iObjTitle = aObjTitle.AllocL(); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::SetObjClassL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::SetObjClassL(const TDesC8& aObjClass) +{ + delete iObjClass; + iObjClass = NULL; + iObjClass = aObjClass.AllocL(); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachObjectElL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TXmlEngElement CUpnpObjectBean::AttachObjectElL(TXmlEngElement aElement) +{ + TXmlEngElement object; + + // check if the object is a container + if( ObjClass().Find( KContainerClass8 ) == 0 ) + { // container + object = aElement.AddNewElementSameNsL( KContainer() ); + } + else + { // item + object = aElement.AddNewElementSameNsL( KItem() ); + } + + // add required properties + AttachRequiredPropertiesL(object); + + return object; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachRequiredPropertiesL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachRequiredPropertiesL(TXmlEngElement aElement) +{ + // id + AttachIdL(aElement); + // parentId + AttachParentIdL(aElement); + // restricted + AttachRestrictedL(aElement); + // title + AttachTitleL(aElement); + // class + AttachClassL(aElement); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachWholeObjectElL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TXmlEngElement CUpnpObjectBean::AttachWholeObjectElL(TXmlEngElement aElement) +{ + // object with required properties + TXmlEngElement object = AttachObjectElL(aElement); + + // optional properties: + // refId + AttachRefIdL(object); + // searchable + AttachSearchableL(object); + + return object; +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachRefIdL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachRefIdL(TXmlEngElement aElement) +{ + if(ObjRefId() != CUpnpObjectBean::KUndef) + { + TBuf8 num; + num.Num(ObjRefId()); + aElement.AddNewAttributeL( KRefID(), num ); + } +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachSearchableL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachSearchableL(TXmlEngElement aElement) +{ + if(ObjSearchable() != CUpnpObjectBean::KUndef) + { + if( ObjSearchable() ) + { // true + aElement.AddNewAttributeL( KSearchable(), KTrueValue8() ); + } + else + { // false + aElement.AddNewAttributeL( KSearchable(), KFalseValue8() ); + } + } +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachIdL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachIdL(TXmlEngElement aElement) +{ + TBuf8 num; + num.Num(ObjId()); + aElement.AddNewAttributeL( KIdAttrName(), num ); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachParentIdL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachParentIdL(TXmlEngElement aElement) +{ + TBuf8 num; + num.Num(ObjParentId()); + aElement.AddNewAttributeL( KParentID(), num ); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachRestrictedL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachRestrictedL(TXmlEngElement aElement) +{ + if( ObjRestricted() ) + { // true + aElement.AddNewAttributeL( KRestricted(), KTrueValue8() ); + } + else + { // false + aElement.AddNewAttributeL( KRestricted(), KFalseValue8() ); + } +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachTitleL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachTitleL(TXmlEngElement aElement) +{ + aElement.AddNewElementUsePrefixL( KTitle(), KDcNsPrefix() ).SetValueL( ObjTitle() ); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::AttachClassL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::AttachClassL(TXmlEngElement aElement) +{ + aElement.AddNewElementUsePrefixL( KClassTagName(), KUpnpNsPrefix() ).SetValueL( ObjClass() ); +} +// ----------------------------------------------------------------------------- +// CUpnpObjectBean::CopyToUpnpObjectL +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CUpnpObjectBean::CopyToUpnpObjectL(CUpnpObject* aObj) +{ + HBufC8* id = HBufC8::NewLC(KMaxIntegerLen); + id->Des().Num(iObjId); + aObj->SetIdL(*id); + CleanupStack::PopAndDestroy(id); + + HBufC8* parentId = HBufC8::NewLC(KMaxIntegerLen); + parentId->Des().Num(iObjParentId); + aObj->SetParentIdL(*parentId); + CleanupStack::PopAndDestroy(parentId); + + aObj->SetTitleL(*iObjTitle); + aObj->SetRestricted(iObjRestricted); + aObj->SetObjectClassL(*iObjClass); + if( iObjRefId != KUndef && aObj->ObjectType() == EUPnPItem) + { + CUpnpItem* item = dynamic_cast(aObj); + HBufC8* iObjRefIdString = HBufC8::NewLC(KMaxIntegerLen); + iObjRefIdString->Des().Num(iObjRefId); + item->SetRefIdL(*iObjRefIdString); + CleanupStack::PopAndDestroy(iObjRefIdString); + } +} + + +// End of File