--- /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 <upnpobject.h>
+#include <upnpitem.h>
+// ============================ 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<KMaxIntegerLen> 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<KMaxIntegerLen> num;
+ num.Num(ObjId());
+ aElement.AddNewAttributeL( KIdAttrName(), num );
+}
+// -----------------------------------------------------------------------------
+// CUpnpObjectBean::AttachParentIdL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CUpnpObjectBean::AttachParentIdL(TXmlEngElement aElement)
+{
+ TBuf8<KMaxIntegerLen> 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<CUpnpItem*>(aObj);
+ HBufC8* iObjRefIdString = HBufC8::NewLC(KMaxIntegerLen);
+ iObjRefIdString->Des().Num(iObjRefId);
+ item->SetRefIdL(*iObjRefIdString);
+ CleanupStack::PopAndDestroy(iObjRefIdString);
+ }
+}
+
+
+// End of File