applicationmanagement/omascomoadapter/src/omascomoadapter.cpp
branchRCL_3
changeset 57 6757f1e2efd2
parent 55 c4687ff85147
child 58 5b858729772b
equal deleted inserted replaced
55:c4687ff85147 57:6757f1e2efd2
    46 #include <SyncMLClient.h>
    46 #include <SyncMLClient.h>
    47 #include <SyncMLClientDM.h>
    47 #include <SyncMLClientDM.h>
    48 #include <e32property.h>
    48 #include <e32property.h>
    49 #include <centralrepository.h>
    49 #include <centralrepository.h>
    50 #include <DevManInternalCRKeys.h>
    50 #include <DevManInternalCRKeys.h>
    51 #include <httpdownloadmgrcommon.h>
       
    52 
    51 
    53 #include "NSmlPrivateAPI.h"
    52 #include "NSmlPrivateAPI.h"
    54 
    53 
    55 #include "nsmldmconst.h"
    54 #include "nsmldmconst.h"
    56 #include "ampskeys.h"
    55 #include "ampskeys.h"
    57 
    56 
    58 #include "nsmldmtreedbclient.h"
    57 #include "nsmldmtreedbclient.h"
    59 #include "SyncService.h"
    58 //#include "SyncService.h"
    60 #include "amprivateCRKeys.h"
    59 #include "amprivateCRKeys.h"
    61 #include <e32cmn.h>
    60 #include <e32cmn.h>
    62 #include <SWInstDefs.h>
    61 #include <SWInstDefs.h>
    63 
    62 
    64 #ifdef __TARM_SYMBIAN_CONVERGENCY
    63 #ifdef __TARM_SYMBIAN_CONVERGENCY
   219     accessTypesGetAddReplaceDelete.SetDelete();
   218     accessTypesGetAddReplaceDelete.SetDelete();
   220 
   219 
   221     TSmlDmAccessTypes accessTypesAddReplace = 
   220     TSmlDmAccessTypes accessTypesAddReplace = 
   222 	    accessTypesAdd;
   221 	    accessTypesAdd;
   223     accessTypesAddReplace.SetReplace();
   222     accessTypesAddReplace.SetReplace();
       
   223 
       
   224 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step1" );
   224 
   225 
   225     /*
   226     /*
   226      Node: ./SCOMO
   227      Node: ./SCOMO
   227      AM node is the common parent to all application management functionality nodes. 
   228      AM node is the common parent to all application management functionality nodes. 
   228      Support: Mandatory
   229      Support: Mandatory
   235     MSmlDmDDFObject& am = aDDF.AddChildObjectL(KAMNodeName);
   236     MSmlDmDDFObject& am = aDDF.AddChildObjectL(KAMNodeName);
   236     FillNodeInfoL(am, accessTypesGet, MSmlDmDDFObject::EOne,
   237     FillNodeInfoL(am, accessTypesGet, MSmlDmDDFObject::EOne,
   237             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   238             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   238             KAMNodeDescription);
   239             KAMNodeDescription);
   239 
   240 
       
   241 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 2" );
       
   242 
   240     /*
   243     /*
   241      Node: ./SCOMO/Inventory
   244      Node: ./SCOMO/Inventory
   242      This node is start node to application inventory. 
   245      This node is start node to application inventory. 
   243      Support: Mandatory
   246      Support: Mandatory
   244      Occurs: One
   247      Occurs: One
   249     MSmlDmDDFObject& inv = am.AddChildObjectL(KAMInventoryNodeName);
   252     MSmlDmDDFObject& inv = am.AddChildObjectL(KAMInventoryNodeName);
   250     FillNodeInfoL(inv, accessTypesGet, MSmlDmDDFObject::EOne,
   253     FillNodeInfoL(inv, accessTypesGet, MSmlDmDDFObject::EOne,
   251             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   254             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   252             KAMInventoryNodeDescription);
   255             KAMInventoryNodeDescription);
   253 
   256 
       
   257 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 3" );
       
   258 
   254     /*
   259     /*
   255      Node: ./SCOMO/Inventory/Delivered
   260      Node: ./SCOMO/Inventory/Delivered
   256      This is node under which applications that are delivered but not installed are found.
   261      This is node under which applications that are delivered but not installed are found.
   257      Support: Mandatory
   262      Support: Mandatory
   258      Occurs: One
   263      Occurs: One
   263     MSmlDmDDFObject& del = inv.AddChildObjectL(KAMDeliveredNodeName);
   268     MSmlDmDDFObject& del = inv.AddChildObjectL(KAMDeliveredNodeName);
   264     FillNodeInfoL(del, accessTypesGetAdd, MSmlDmDDFObject::EOne,
   269     FillNodeInfoL(del, accessTypesGetAdd, MSmlDmDDFObject::EOne,
   265             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   270             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   266             KAMDeliveredNodeDescription);
   271             KAMDeliveredNodeDescription);
   267 
   272 
       
   273 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 4" );
       
   274 
   268     /*
   275     /*
   269      Node: ./SCOMO/Inventory/Deployed
   276      Node: ./SCOMO/Inventory/Deployed
   270      This is a node under which active applications are found.
   277      This is a node under which active applications are found.
   271      The child node descriptions are same as Delivered sibling node, except that <X> cannot be created, data node does not exist and there's no InstallOpts leaf.
   278      The child node descriptions are same as Delivered sibling node, except that <X> cannot be created, data node does not exist and there's no InstallOpts leaf.
   272      Support: Mandatory
   279      Support: Mandatory
   279     MSmlDmDDFObject& ac = inv.AddChildObjectL(KAMDeployedNodeName);
   286     MSmlDmDDFObject& ac = inv.AddChildObjectL(KAMDeployedNodeName);
   280     FillNodeInfoL(ac, accessTypesGet, MSmlDmDDFObject::EOne,
   287     FillNodeInfoL(ac, accessTypesGet, MSmlDmDDFObject::EOne,
   281             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   288             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   282             KAMDeployedNodeDescription);
   289             KAMDeployedNodeDescription);
   283 
   290 
       
   291 
       
   292 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 5" );
   284     /*
   293     /*
   285      Node: ./SCOMO/Inventory/Delivered/<X>
   294      Node: ./SCOMO/Inventory/Delivered/<X>
   286      This dynamic node is placeholder applications that are in Delivered state. 
   295      This dynamic node is placeholder applications that are in Delivered state. 
   287      Support: Mandatory
   296      Support: Mandatory
   288      Occurs: ZeroOrMore
   297      Occurs: ZeroOrMore
   293     MSmlDmDDFObject& deldyna = del.AddChildObjectGroupL();
   302     MSmlDmDDFObject& deldyna = del.AddChildObjectGroupL();
   294     FillNodeInfoL(deldyna, accessTypesGetAddReplaceDelete,
   303     FillNodeInfoL(deldyna, accessTypesGetAddReplaceDelete,
   295             MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic,
   304             MSmlDmDDFObject::EZeroOrMore, MSmlDmDDFObject::EDynamic,
   296             MSmlDmDDFObject::ENode, KAMDeliveredDynaNodeDescription);
   305             MSmlDmDDFObject::ENode, KAMDeliveredDynaNodeDescription);
   297 
   306 
       
   307 
       
   308 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 6" );
   298     /*
   309     /*
   299      Node: ./SCOMO/Inventory/Delivered/<X>/PkgID
   310      Node: ./SCOMO/Inventory/Delivered/<X>/PkgID
   300      This leaf node holds an identifier for an application.
   311      This leaf node holds an identifier for an application.
   301      Support: Mandatory
   312      Support: Mandatory
   302      Occurs: One
   313      Occurs: One
   307     MSmlDmDDFObject& delid = deldyna.AddChildObjectL(KAMPkgIDNodeName);
   318     MSmlDmDDFObject& delid = deldyna.AddChildObjectL(KAMPkgIDNodeName);
   308     FillNodeInfoL(delid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
   319     FillNodeInfoL(delid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
   309             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   320             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   310             KAMPkgIDNodeDescription);
   321             KAMPkgIDNodeDescription);
   311 
   322 
       
   323 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 7" );
   312     /*
   324     /*
   313      Node: ./SCOMO/Inventory/Delivered/<X>/Name
   325      Node: ./SCOMO/Inventory/Delivered/<X>/Name
   314      This leaf node holds name of an application. 
   326      This leaf node holds name of an application. 
   315      Support: Mandatory
   327      Support: Mandatory
   316      Occurs: One
   328      Occurs: One
   321     MSmlDmDDFObject& delname = deldyna.AddChildObjectL(KAMNameNodeName);
   333     MSmlDmDDFObject& delname = deldyna.AddChildObjectL(KAMNameNodeName);
   322     FillNodeInfoL(delname, accessTypesGetAddReplace,
   334     FillNodeInfoL(delname, accessTypesGetAddReplace,
   323             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   335             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   324             MSmlDmDDFObject::EChr, KAMNameNodeDescription);
   336             MSmlDmDDFObject::EChr, KAMNameNodeDescription);
   325 
   337 
   326     
   338     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 8" );
   327     /*
   339     /*
   328      Node: ./SCM/Inventory/Delivered/<X>/Status
   340      Node: ./SCM/Inventory/Delivered/<X>/Status
   329      This leaf node holds the status of the Delivered. The client updates the node value. 
   341      This leaf node holds the status of the Delivered. The client updates the node value. 
   330      The values are typically error codes of Operations done on delivered node
   342      The values are typically error codes of Operations done on delivered node
   331      Support: Mandatory 
   343      Support: Mandatory 
   337     MSmlDmDDFObject& delstatus = deldyna.AddChildObjectL(KAMStatusNodeName);
   349     MSmlDmDDFObject& delstatus = deldyna.AddChildObjectL(KAMStatusNodeName);
   338     FillNodeInfoL(delstatus, accessTypesGet, MSmlDmDDFObject::EOne,
   350     FillNodeInfoL(delstatus, accessTypesGet, MSmlDmDDFObject::EOne,
   339             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt,
   351             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt,
   340             KAMStatusNodeDescription);
   352             KAMStatusNodeDescription);
   341 
   353 
       
   354 
       
   355 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 9" );
   342     /*
   356     /*
   343      Node: ./SCOMO/Inventory/Delivered/<X>/PkgType
   357      Node: ./SCOMO/Inventory/Delivered/<X>/PkgType
   344      This leaf node holds an identifier for an application.
   358      This leaf node holds an identifier for an application.
   345      Support: Mandatory
   359      Support: Mandatory
   346      Occurs: One
   360      Occurs: One
   351     MSmlDmDDFObject& delpkgtype = deldyna.AddChildObjectL(KAMPkgTypeNodeName);
   365     MSmlDmDDFObject& delpkgtype = deldyna.AddChildObjectL(KAMPkgTypeNodeName);
   352     FillNodeInfoL(delpkgtype, accessTypesGetAddReplace, MSmlDmDDFObject::EZeroOrOne,
   366     FillNodeInfoL(delpkgtype, accessTypesGetAddReplace, MSmlDmDDFObject::EZeroOrOne,
   353             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   367             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   354             KAMPkgTypeNodeDescription);
   368             KAMPkgTypeNodeDescription);
   355     
   369     
   356     
   370     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 10" );
   357     /*
   371     /*
   358      Node: ./SCOMO/Inventory/Delivered/<X>/Data
   372      Node: ./SCOMO/Inventory/Delivered/<X>/Data
   359      This leaf node holds the data of an application. 
   373      This leaf node holds the data of an application. 
   360      Support: Mandatory
   374      Support: Mandatory
   361      Occurs: One
   375      Occurs: One
   366     MSmlDmDDFObject& delda = deldyna.AddChildObjectL(KAMDataNodeName);
   380     MSmlDmDDFObject& delda = deldyna.AddChildObjectL(KAMDataNodeName);
   367     FillNodeInfoNoDefaultMimeL(delda, accessTypesAddReplace,
   381     FillNodeInfoNoDefaultMimeL(delda, accessTypesAddReplace,
   368             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   382             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   369             MSmlDmDDFObject::EBin, KAMDataNodeDescription);
   383             MSmlDmDDFObject::EBin, KAMDataNodeDescription);
   370 
   384 
       
   385 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 11" );
       
   386 
   371     delda.AddDFTypeMimeTypeL(KSisxMimeType);
   387     delda.AddDFTypeMimeTypeL(KSisxMimeType);
   372     delda.AddDFTypeMimeTypeL(KSisMimeType);
   388     delda.AddDFTypeMimeTypeL(KSisMimeType);
   373     delda.AddDFTypeMimeTypeL(KPipMimeType);
   389     delda.AddDFTypeMimeTypeL(KPipMimeType);
   374 
   390 
       
   391 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 12" );
       
   392 
   375     FeatureManager::InitializeLibL();
   393     FeatureManager::InitializeLibL();
   376     if (FeatureManager::FeatureSupported(KFeatureIdJavaMIDP20) )
   394     if (FeatureManager::FeatureSupported(KFeatureIdJavaMIDP20) )
   377         {
   395         {
       
   396 	    RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 13" );
   378         delda.AddDFTypeMimeTypeL(KJadMIMEType);
   397         delda.AddDFTypeMimeTypeL(KJadMIMEType);
   379         delda.AddDFTypeMimeTypeL(KJarMIMEType);
   398         delda.AddDFTypeMimeTypeL(KJarMIMEType);
   380         delda.AddDFTypeMimeTypeL(KJavaMIMEType);
   399         delda.AddDFTypeMimeTypeL(KJavaMIMEType);
   381         }
   400         }
   382 
   401 
       
   402 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 14" );
   383     FeatureManager::UnInitializeLib();
   403     FeatureManager::UnInitializeLib();
   384 
   404 
   385     /*
   405     /*
   386      Node: ./SCOMO/Inventory/Delivered/<X>/Description
   406      Node: ./SCOMO/Inventory/Delivered/<X>/Description
   387      This leaf node holds the possible metadata of an application. Descriptor can be for example such a data that is required by the actual data in the Data leaf, but for some reason they cannot be bundled into same package. An example is Java JAR and JAD file combination, in which JAD file could be placed in MetaData and JAR in Data leaf.
   407      This leaf node holds the possible metadata of an application. Descriptor can be for example such a data that is required by the actual data in the Data leaf, but for some reason they cannot be bundled into same package. An example is Java JAR and JAD file combination, in which JAD file could be placed in MetaData and JAR in Data leaf.
   394     MSmlDmDDFObject& delmd = deldyna.AddChildObjectL(KAMDescriptionNodeName);
   414     MSmlDmDDFObject& delmd = deldyna.AddChildObjectL(KAMDescriptionNodeName);
   395     FillNodeInfoL(delmd, accessTypesGetAddReplace,
   415     FillNodeInfoL(delmd, accessTypesGetAddReplace,
   396             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   416             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   397             MSmlDmDDFObject::EBin, KAMDescriptorNodeDescription);
   417             MSmlDmDDFObject::EBin, KAMDescriptorNodeDescription);
   398 
   418 
       
   419 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 15" );
   399      /*
   420      /*
   400      Node: ./SCOMO/Inventory/Delivered/<X>/State
   421      Node: ./SCOMO/Inventory/Delivered/<X>/State
   401      This leaf node holds state value of an application. 
   422      This leaf node holds state value of an application. 
   402      Support: ?
   423      Support: ?
   403      Occurs: One
   424      Occurs: One
   408     MSmlDmDDFObject& delstate =
   429     MSmlDmDDFObject& delstate =
   409             deldyna.AddChildObjectL(KAMStateValueNodeName);
   430             deldyna.AddChildObjectL(KAMStateValueNodeName);
   410     FillNodeInfoL(delstate, accessTypesGet, MSmlDmDDFObject::EOne,
   431     FillNodeInfoL(delstate, accessTypesGet, MSmlDmDDFObject::EOne,
   411             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   432             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   412             KAMStateValueNodeDescription);
   433             KAMStateValueNodeDescription);
   413     
   434     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 16" );
   414     /*
   435     /*
   415      Node: ./SCOMO/Inventory/Delivered/<X>/Operations
   436      Node: ./SCOMO/Inventory/Delivered/<X>/Operations
   416      This is a node that allows vendors to extend functionality.
   437      This is a node that allows vendors to extend functionality.
   417      Support: Optional
   438      Support: Optional
   418      Occurs: One
   439      Occurs: One
   472             KAMRemoveNodeDescription);
   493             KAMRemoveNodeDescription);
   473 
   494 
   474     /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
   495     /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
   475      DEPLOYED
   496      DEPLOYED
   476      *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
   497      *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
   477 
   498     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 17" );
   478     /*
   499     /*
   479      Node: ./SCOMO/Inventory/Deployed/<X>
   500      Node: ./SCOMO/Inventory/Deployed/<X>
   480      This dynamic node is placeholder applications that are in Inactive state. 
   501      This dynamic node is placeholder applications that are in Inactive state. 
   481      Support: Mandatory
   502      Support: Mandatory
   482      Occurs: ZeroOrMore
   503      Occurs: ZeroOrMore
   528      */
   549      */
   529     MSmlDmDDFObject& deplver = depldyna.AddChildObjectL(KAMVersionNodeName);
   550     MSmlDmDDFObject& deplver = depldyna.AddChildObjectL(KAMVersionNodeName);
   530     FillNodeInfoL(deplver, accessTypesGetAddReplace,
   551     FillNodeInfoL(deplver, accessTypesGetAddReplace,
   531             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   552             MSmlDmDDFObject::EZeroOrOne, MSmlDmDDFObject::EPermanent,
   532             MSmlDmDDFObject::EChr, KAMVersionNodeDescription);
   553             MSmlDmDDFObject::EChr, KAMVersionNodeDescription);
   533     
   554     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 18" );
   534     /*
   555     /*
   535      Node: ./SCOMO/Inventory/Deployed/<X>/Description
   556      Node: ./SCOMO/Inventory/Deployed/<X>/Description
   536      This leaf node holds the version of an application.
   557      This leaf node holds the version of an application.
   537      Support: Mandatory
   558      Support: Mandatory
   538      Occurs: One
   559      Occurs: One
   586     MSmlDmDDFObject& deplstate =
   607     MSmlDmDDFObject& deplstate =
   587             depldyna.AddChildObjectL(KAMStateValueNodeName);
   608             depldyna.AddChildObjectL(KAMStateValueNodeName);
   588     FillNodeInfoL(deplstate, accessTypesGet, MSmlDmDDFObject::EOne,
   609     FillNodeInfoL(deplstate, accessTypesGet, MSmlDmDDFObject::EOne,
   589             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   610             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   590             KAMStateValueNodeDescription);
   611             KAMStateValueNodeDescription);
   591 
   612     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 19" );
   592     /*
   613     /*
   593      Node: ./SCOMO/Inventory/Deployed/<X>/Operations
   614      Node: ./SCOMO/Inventory/Deployed/<X>/Operations
   594      This is a node that allows vendors to extend functionality.
   615      This is a node that allows vendors to extend functionality.
   595      Support: Optional
   616      Support: Optional
   596      Occurs: One
   617      Occurs: One
   617      */
   638      */
   618     MSmlDmDDFObject& deplrem = deplop.AddChildObjectL(KAMRemoveNodeName);
   639     MSmlDmDDFObject& deplrem = deplop.AddChildObjectL(KAMRemoveNodeName);
   619     FillNodeInfoL(deplrem, accessTypesExecReplace, MSmlDmDDFObject::EOne,
   640     FillNodeInfoL(deplrem, accessTypesExecReplace, MSmlDmDDFObject::EOne,
   620             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   641             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   621             KAMRemoveNodeDescription);
   642             KAMRemoveNodeDescription);
   622 
   643     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 20" );
   623     /*
   644     /*
   624      Node: ./SCOMO/Inventory/Deployed/<X>/Operations/Activate
   645      Node: ./SCOMO/Inventory/Deployed/<X>/Operations/Activate
   625      Exec command causes device to activate an application. 
   646      Exec command causes device to activate an application. 
   626      Support: Mandatory
   647      Support: Mandatory
   627      Occurs: One
   648      Occurs: One
   694      */
   715      */
   695     MSmlDmDDFObject& dowid = dowdyna.AddChildObjectL(KAMPkgIDNodeName);
   716     MSmlDmDDFObject& dowid = dowdyna.AddChildObjectL(KAMPkgIDNodeName);
   696     FillNodeInfoL(dowid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
   717     FillNodeInfoL(dowid, accessTypesGetAddReplace, MSmlDmDDFObject::EOne,
   697             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   718             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   698             KAMPkgIDNodeDescription);
   719             KAMPkgIDNodeDescription);
   699 
   720     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 21" );
   700     /*
   721     /*
   701      Node: ./SCOMO/Download/<X>/Name
   722      Node: ./SCOMO/Download/<X>/Name
   702      This leaf node holds name of an application. 
   723      This leaf node holds name of an application. 
   703      Support: Mandatory
   724      Support: Mandatory
   704      Occurs: One
   725      Occurs: One
   827             dowop.AddChildObjectL(KAMDownloadAndInstallAndInActivateNodeName);
   848             dowop.AddChildObjectL(KAMDownloadAndInstallAndInActivateNodeName);
   828     FillNodeInfoL(dowdownia, accessTypesExec, MSmlDmDDFObject::EOne,
   849     FillNodeInfoL(dowdownia, accessTypesExec, MSmlDmDDFObject::EOne,
   829             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   850             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   830             KAMDownloadAndInstallAndInActivateNodeName);
   851             KAMDownloadAndInstallAndInActivateNodeName);
   831 
   852 
   832     
   853     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 22" );
   833 #ifdef __AM_LASTERROR_NODE
   854 #ifdef __AM_LASTERROR_NODE
   834     MSmlDmDDFObject& amext = am.AddChildObjectL(KAMExtNodeName);
   855     MSmlDmDDFObject& amext = am.AddChildObjectL(KAMExtNodeName);
   835     FillNodeInfoL(amext, accessTypesGet, MSmlDmDDFObject::EOne,
   856     FillNodeInfoL(amext, accessTypesGet, MSmlDmDDFObject::EOne,
   836             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   857             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode,
   837             KAMExtNodeDescription);
   858             KAMExtNodeDescription);
   841             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   862             MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr,
   842             KAMLastErrorDescription);
   863             KAMLastErrorDescription);
   843 #endif
   864 #endif
   844 
   865 
   845     // Ignore generic alert error status if any otherwise adapter fails to load 
   866     // Ignore generic alert error status if any otherwise adapter fails to load 
   846     
   867     RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 23" );
   847     TRAP_IGNORE(SendPendingGenericAlertL());
   868     TRAP_IGNORE(SendPendingGenericAlertL());
   848     if (GetAdapterValue() == KAMSCOMOAdapter)
   869 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 24" );
   849         {
   870     //if (GetAdapterValue() == KAMSCOMOAdapter)
       
   871         {
       
   872 		RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 25" );
   850         CheckStateChangesL();
   873         CheckStateChangesL();
   851         SetAdapterValue(KAMDefaultValue);
   874         SetAdapterValue(KAMDefaultValue);
   852         }
   875         }
       
   876 	RDEBUG( "CSCOMOAdapter::DDFStructureL(): Step 26" );
   853     CheckAndAddPredefinedNodeL();
   877     CheckAndAddPredefinedNodeL();
   854     RDEBUG( "CSCOMOAdapter::DDFStructureL(): end" );
   878     RDEBUG( "CSCOMOAdapter::DDFStructureL(): end" );
   855     }
   879     }
   856 
   880 
   857 void CSCOMOAdapter::SendPendingGenericAlertL()
   881 void CSCOMOAdapter::SendPendingGenericAlertL()
   920 	         
   944 	         
   921             
   945             
   922             TBuf8<6> dataresult;
   946             TBuf8<6> dataresult;
   923             dataresult.Num(finalresult);
   947             dataresult.Num(finalresult);
   924             
   948             
   925             RDEBUG8_2("CSCOMOAdapter::GetIdentifierIdL is targetURIGet '%S'", &targetURIGet);
   949             TPtrC8 mapping(NSmlDmURI::LastURISeg(targetURIGet) );
   926             
   950             
   927             //TPtrC8 mapping(NSmlDmURI::LastURISeg(targetURIGet) );
       
   928             
       
   929             HBufC8* identifier=GetIdentifierIdL(internalid );
       
   930             
   951             
   931             TInt retryupdate = iAMdb->GetRetryCountForLuidL(internalid);
   952             TInt retryupdate = iAMdb->GetRetryCountForLuidL(internalid);
   932             
   953             
   933             // If retryupdate in Zero then delete its entry from 
   954             // If retryupdate in Zero then delete its entry from 
   934             // database.
   955             // database.
   963             //ptr.Append(KDataStart);
   984             //ptr.Append(KDataStart);
   964             ptr.Append(KResultCodeStart);
   985             ptr.Append(KResultCodeStart);
   965             ptr.Append(dataresult);
   986             ptr.Append(dataresult);
   966             ptr.Append(KResultCodeEnd);
   987             ptr.Append(KResultCodeEnd);
   967             ptr.Append(KIdentifierStart);
   988             ptr.Append(KIdentifierStart);
   968             ptr.Append(*identifier);
   989             ptr.Append(mapping);
   969             ptr.Append(KIdentifierEnd);
   990             ptr.Append(KIdentifierEnd);
   970             //ptr.Append(KDataEnd);
   991             //ptr.Append(KDataEnd);
   971 
   992 
   972             HBufC8 *sourceuri = genericalerts[i]->iSourceURI;
   993             HBufC8 *sourceuri = genericalerts[i]->iSourceURI;
   973     		
   994     		
   993     
  1014     
   994     		iItemArray.AppendL(*item);
  1015     		iItemArray.AppendL(*item);
   995             
  1016             
   996             TRAP_IGNORE(privateAPI.AddDMGenericAlertRequestL(              
  1017             TRAP_IGNORE(privateAPI.AddDMGenericAlertRequestL(              
   997                     *genericalerts[i]->iCorrelator,iItemArray ));
  1018                     *genericalerts[i]->iCorrelator,iItemArray ));
   998                  
  1019                     
   999             
  1020                     
  1000             //cleanup all the allocated heap cells
       
  1001             if(data)        
       
  1002             delete data;
  1021             delete data;
  1003             
  1022             
  1004             if(metamark)
       
  1005             delete metamark;
  1023             delete metamark;
  1006             
  1024             
  1007             if(metaformat)
       
  1008             delete metaformat;
  1025             delete metaformat;
  1009             
  1026             
  1010             if(metatype)
       
  1011             delete metatype;
  1027             delete metatype;
  1012             
  1028             
  1013             if(targeturi)
       
  1014             delete targeturi;
  1029             delete targeturi;
  1015 
       
  1016             if(item)
       
  1017             delete item;
  1030             delete item;
  1018             
       
  1019             if(identifier)
       
  1020             delete identifier;
       
  1021                     
  1031                     
  1022             iItemArray.Reset();			
  1032             iItemArray.Reset();			
  1023 			iItemArray.Close();
  1033 			iItemArray.Close();
  1024             CleanupStack::PopAndDestroy( &privateAPI);
  1034             CleanupStack::PopAndDestroy( &privateAPI);
  1025             }
  1035             }
  1049         if (errx == KErrNone && re)
  1059         if (errx == KErrNone && re)
  1050             {
  1060             {
  1051             TPckg<TCertInfo> pcert(info);
  1061             TPckg<TCertInfo> pcert(info);
  1052             errx = re->Get(KCertKey, pcert) ;
  1062             errx = re->Get(KCertKey, pcert) ;
  1053 
  1063 
  1054             RDEBUG("CSCOMOAdapter::SessionL() aCertInfo");
  1064             RDEBUG_2("aCertInfo.iFingerprint.Length() is  %u",info.iFingerprint.Length() );
  1055 
       
  1056             //RDEBUG_2("aCertInfo.iFingerprint.Length() is  %u",info.iFingerprint.Length() );
       
  1057             if (errx == KErrNone)
  1065             if (errx == KErrNone)
  1058                 {
  1066                 {
  1059                 RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNone");
  1067                 RDEBUG("CSCOMOAdapter::SessionL() errx == KErrNone");
  1060                 }
  1068                 }
  1061             else
  1069             else
  1284                 TRAP_IGNORE( session.UpdateDeploymentComponentL( iluid, EDCInstallOptions, obj ) );
  1292                 TRAP_IGNORE( session.UpdateDeploymentComponentL( iluid, EDCInstallOptions, obj ) );
  1285                 
  1293                 
  1286                 
  1294                 
  1287                 TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
  1295                 TDeplCompAttrType fl(UpdateFlagFromMapping(mapping) );
  1288 
  1296 
  1289                            
       
  1290                 if (mapping == KAMDataNodeName || mapping
  1297                 if (mapping == KAMDataNodeName || mapping
  1291                         == KAMDescriptorNodeName)
  1298                         == KAMDescriptorNodeName)
  1292                     {
  1299                     {
  1293                     TInt erx(KErrNone);
  1300                     TInt erx(KErrNone);
  1294                     if ((mapping == KAMDataNodeName) &&(RecognizeMimeType(aType)== EFalse))
  1301                     if ((mapping == KAMDataNodeName) &&(RecognizeMimeType(aType)== EFalse))
  1753         TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
  1760         TPtrC8 aclmapping(URISegsUpTo(aURI, 4) );
  1754         SetMappingL(aclmapping, aTargetState, aLUID);
  1761         SetMappingL(aclmapping, aTargetState, aLUID);
  1755         iManagement.StateChangeComplete(aLuidi);
  1762         iManagement.StateChangeComplete(aLuidi);
  1756 
  1763 
  1757         DeactivateIfInactive(aLuidi, aTargetState);
  1764         DeactivateIfInactive(aLuidi, aTargetState);
  1758         aRet = EExecSuccess;
  1765         aRet = EOk;
  1759         }
  1766         }
  1760     else
  1767     else
  1761         {
  1768         {
  1762         RDEBUG_2( "CSCOMOAdapter::InstallL(): INSTALL FAILED '%d'" , err);
  1769         RDEBUG_2( "CSCOMOAdapter::InstallL(): INSTALL FAILED '%d'" , err);
  1763         //MAPERROR( err, aRet, _L8("Install %d") );
  1770         MAPERROR( err, aRet, _L8("Install %d") );
  1764 	  aRet = EExecInstallFailed;
       
  1765         }
  1771         }
  1766     }
  1772     }
  1767 
  1773 
  1768 // ------------------------------------------------------------------------------------------------
  1774 // ------------------------------------------------------------------------------------------------
  1769 // CSCOMOAdapter::DefaultMapError( const TInt aErr, TError &aRet )
  1775 // CSCOMOAdapter::DefaultMapError( const TInt aErr, TError &aRet )
  1853 // ------------------------------------------------------------------------------------------------
  1859 // ------------------------------------------------------------------------------------------------
  1854 void CSCOMOAdapter::ExecuteCommandL(const TDesC8& aURI, const TDesC8& aLUID,
  1860 void CSCOMOAdapter::ExecuteCommandL(const TDesC8& aURI, const TDesC8& aLUID,
  1855         const TDesC8& aArgument, const TDesC8& /*aType*/, TInt aStatusRef)
  1861         const TDesC8& aArgument, const TDesC8& /*aType*/, TInt aStatusRef)
  1856     {
  1862     {
  1857 
  1863 
  1858 #ifdef __TARM_SYMBIAN_CONVERGENCY	
  1864 #ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
  1859     TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
  1865     TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash(aURI);
  1860 #else
  1866 #else
  1861     //nothing
  1867     //nothing
  1862 #endif
  1868 #endif
  1863 
  1869 
  1864     RDEBUG8_3("CSCOMOAdapter::ExecuteCommandL(): begin, '%S', '%S'", &aURI, &aLUID );
  1870     RDEBUG8_3("CSCOMOAdapter::ExecuteCommandL(): begin, '%S', '%S'", &aURI, &aLUID );
  1865     SetAdapterValue(KAMSCOMOAdapter);
  1871     SetAdapterValue(KAMSCOMOAdapter);
  1866     CheckStateChangesL();
  1872     CheckStateChangesL();
  1867     TError ret(EExecUndefError);
  1873     TError ret(EError);
  1868 
  1874 
  1869     if (aLUID == KNullDesC8)
  1875     if (aLUID == KNullDesC8)
  1870         {
  1876         {
  1871         RDEBUG("CSCOMOAdapter::ExecuteCommandL(): WARNING no valid luid provided" );
  1877         RDEBUG("CSCOMOAdapter::ExecuteCommandL(): WARNING no valid luid provided" );
  1872         }
  1878         }
  1873 
  1879 
  1874 #ifdef __TARM_SYMBIAN_CONVERGENCY
  1880 #ifdef __TARM_SYMBIAN_CONVERGENCY	//Done by Dipak
  1875     TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
  1881     TInt cnt( NSmlDmURI::NumOfURISegs( uriPtrc ) );
  1876 #else
  1882 #else
  1877     TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
  1883     TInt cnt(NSmlDmURI::NumOfURISegs(aURI) );
  1878 #endif	
  1884 #endif	
  1879 
  1885 
  1952                         ret = ENotFound;
  1958                         ret = ENotFound;
  1953                         }
  1959                         }
  1954                     else
  1960                     else
  1955                         if (errx == KErrArgument)
  1961                         if (errx == KErrArgument)
  1956                             {
  1962                             {
  1957                             ret = EExecUndefError;
  1963                             ret = EInvalidObject ;
  1958                             }
  1964                             }
  1959                         else
  1965                         else
  1960                             {
  1966                             {
  1961                             ret = EExecUndefError;
  1967                             ret = EError;
  1962                             }
  1968                             }
  1963                     }
  1969                     }
  1964 			SetSCOMOTargetURIL(*iUriDel, mapping, ret);
       
  1965 
  1970 
  1966                 }
  1971                 }
  1967             else
  1972             else
  1968                 {
  1973                 {
  1969                 ret = EExecUndefError;
  1974                 ret = ENotFound;
  1970                 RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 5 Not found node" );
  1975                 RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 5 Not found node" );
  1971                 }
  1976                 }
  1972             break;
  1977             break;
  1973             }
  1978             }
  1974         case 6:
  1979         case 6:
  2008                     TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
  2013                     TInt err(iDbSession.RemoveMappingInfoL(KAMAdapterImplUid,
  2009                             *iUriDel, iluid) );
  2014                             *iUriDel, iluid) );
  2010                     }
  2015                     }
  2011                 else
  2016                 else
  2012                     {
  2017                     {
  2013                     ret = EExecInstallFailed;
  2018                     ret = ENotFound;
  2014                     RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 install Not found node" );
  2019                     RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 install Not found node" );
  2015                     }
  2020                     }
  2016                 }
  2021                 }
  2017             else
  2022             else
  2018                 if (mapping == KAMRemoveNodeName)
  2023                 if (mapping == KAMRemoveNodeName)
  2047 
  2052 
  2048                             // "Nullify" the mapping for argument
  2053                             // "Nullify" the mapping for argument
  2049                            err = iDbSession.RemoveMappingInfoL(KAMAdapterImplUid, aclmapping);
  2054                            err = iDbSession.RemoveMappingInfoL(KAMAdapterImplUid, aclmapping);
  2050                             if (err == KErrNone)
  2055                             if (err == KErrNone)
  2051                                 {
  2056                                 {
  2052                                 ret = EExecSuccess;
  2057                                 ret = EOk;
  2053                                 }
  2058                                 }
  2054                             if (iInAtomic)
  2059                             if (iInAtomic)
  2055                                 {
  2060                                 {
  2056                                 iBuffer.Append(TAMCommandBufferElement(
  2061                                 iBuffer.Append(TAMCommandBufferElement(
  2057                                         aStatusRef, aURI) );
  2062                                         aStatusRef, aURI) );
  2060                         else
  2065                         else
  2061                             {
  2066                             {
  2062                             RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): Remove FAILED '%d'", err);
  2067                             RDEBUG_2( "CSCOMOAdapter::ExecuteCommandL(): Remove FAILED '%d'", err);
  2063 
  2068 
  2064                             if (err == SwiUI::KSWInstErrUserCancel)
  2069                             if (err == SwiUI::KSWInstErrUserCancel)
  2065                                 ret = EExecUserCancelled;
  2070                                 ret = EError;
  2066                             else
  2071                             else
  2067                                 MAPERROR( err, ret, _L8("Execute Remove %d") );
  2072                                 MAPERROR( err, ret, _L8("Execute Remove %d") );
  2068                             }
  2073                             }
  2069                         }
  2074                         }
  2070                     else
  2075                     else
  2071                         {
  2076                         {
  2072                         ret = EExecRemoveFailed;
  2077                         ret = ENotFound;
  2073                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" );
  2078                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 remove Not found node" );
  2074                         }
  2079                         }
  2075                     SetSCOMOTargetURIL(*iUriDel, mapping, ret);
       
  2076                     }
  2080                     }
  2077                         else
  2081                         else
  2078                             if (mapping == KAMActivateNodeName)
  2082                             if (mapping == KAMActivateNodeName)
  2079                                 {
  2083                                 {
  2080                                 //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Activating " );
  2084                                 //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Activating " );
  2090                                             EDCSInactive) ;
  2094                                             EDCSInactive) ;
  2091                                     }
  2095                                     }
  2092                                 if (iluid > 0)
  2096                                 if (iluid > 0)
  2093                                     {
  2097                                     {
  2094                                     TRAP_IGNORE( SessionL().ActivateL( iluid ) );
  2098                                     TRAP_IGNORE( SessionL().ActivateL( iluid ) );
  2095                                     ret = EExecSuccess;
  2099                                     ret = EOk;
  2096 								
  2100 								
  2097                                     //MAPERROR( erx, ret, _L8("Activate %d") );
  2101                                     //MAPERROR( erx, ret, _L8("Activate %d") );
  2098                                     }
  2102                                     }
  2099                                 else
  2103                                 else
  2100                                     {
  2104                                     {
  2101                                     ret = EExecActivateFailed;
  2105                                     ret = ENotFound;
  2102                                     RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" );
  2106                                     RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 Activate Not found node" );
  2103                                     }
  2107                                     }
  2104 
       
  2105                                 SetSCOMOTargetURIL(*iUriDel, mapping, ret);
       
  2106                                 }
  2108                                 }
  2107                             else
  2109                             else
  2108                                 if (mapping == KAMDeActivateNodeName)
  2110                                 if (mapping == KAMDeActivateNodeName)
  2109                                     {
  2111                                     {
  2110                                     //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Inactivating " );
  2112                                     //DBG_ARGS8( "CSCOMOAdapter::ExecuteCommandL(): Inactivating " );
  2124                                         }
  2126                                         }
  2125                                     if (iluid > 0)
  2127                                     if (iluid > 0)
  2126                                         {
  2128                                         {
  2127                                         TRAP_IGNORE(SessionL().DeactivateL( iluid ) )
  2129                                         TRAP_IGNORE(SessionL().DeactivateL( iluid ) )
  2128                                         ;
  2130                                         ;
  2129 										ret = EExecSuccess;
  2131 										ret = EOk;
  2130                                         //MAPERROR( erx, ret,_L8("Dectivate %d") );
  2132                                         //MAPERROR( erx, ret,_L8("Dectivate %d") );
  2131                                         }
  2133                                         }
  2132                                     else
  2134                                     else
  2133                                         {
  2135                                         {
  2134                                         ret = EExecDeactivateFailed;
  2136                                         ret = ENotFound;
  2135                                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" );
  2137                                         RDEBUG( "CSCOMOAdapter::ExecuteCommandL(): case 6 DeActivate Not found node" );
  2136                                         }
  2138                                         }
  2137 
       
  2138                                     SetSCOMOTargetURIL(*iUriDel, mapping, ret);
       
  2139 						
       
  2140                                     }
  2139                                     }
  2141                                 else
  2140                                 else
  2142                                     {
  2141                                     {
  2143                                     RDEBUG8_2( "CSCOMOAdapter::ExecuteCommandL(): ASKED NOT SUPPORTED OPERATION '%S'", &mapping );
  2142                                     RDEBUG8_2( "CSCOMOAdapter::ExecuteCommandL(): ASKED NOT SUPPORTED OPERATION '%S'", &mapping );
  2144                                     
  2143                                     
  2145                                     ret = EExecUndefError;
  2144                                     ret = EError;
  2146                                     }
  2145                                     }
  2147             break;
  2146             break;
  2148             }
  2147             }
  2149 
  2148 
  2150         default:
  2149         default:
  2151             {
  2150             {
  2152             RDEBUG8_3( "CSCOMOAdapter::ExecuteCommandL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
  2151             RDEBUG8_3( "CSCOMOAdapter::ExecuteCommandL(): ILLEGAL LEVEL %d NODE %S", cnt, &aURI );
  2153             
  2152             
  2154             ret = EExecUndefError;
  2153             ret = EInvalidObject;
  2155             break;
  2154             break;
  2156             }
  2155             }
  2157         }
  2156         }
  2158     SetStatusL(aStatusRef, ret) ;
  2157     SetStatusL(aStatusRef, ret) ;
  2159     }
  2158     }
  2160 
       
  2161 
       
  2162 void CSCOMOAdapter::SetSCOMOTargetURIL(const TDesC8& aURI,
       
  2163         const TDesC8& aMapping,const TError& aErrorStatus)
       
  2164     {
       
  2165 
       
  2166     RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI" );
       
  2167 
       
  2168     TInt cnt(NSmlDmURI::NumOfURISegs(aURI));
       
  2169     _LIT8( KNSmlNull, "null" );
       
  2170 
       
  2171     CRepository* cenrep = NULL;
       
  2172     TInt errr(KErrNone);
       
  2173 
       
  2174     TRAP(errr, cenrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys ));
       
  2175 
       
  2176     if (errr == KErrNone)
       
  2177         {
       
  2178 
       
  2179         switch (cnt)
       
  2180             {
       
  2181             case 3:
       
  2182                 {
       
  2183 
       
  2184                 RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case 3" );
       
  2185 
       
  2186                 TInt ASyncSupported = -1;
       
  2187 
       
  2188                 CRepository *repository = CRepository::NewLC(
       
  2189                         KCRUidPrivateApplicationManagementKeys);
       
  2190                 repository->Get(KAsyncEnabled, ASyncSupported);
       
  2191                 CleanupStack::PopAndDestroy();
       
  2192 
       
  2193                 //means accepted for processing set <Target><LOCURI> to NULL.
       
  2194                 if (ASyncSupported)
       
  2195                     {
       
  2196                     RDEBUG( "CSCOMOAdapter:: ASyncSupported" );
       
  2197 
       
  2198                     TInt err1 = cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull);
       
  2199 
       
  2200                     RDEBUG_2( "CSCOMOAdapter:: ASyncSupported %d", err1 );
       
  2201 
       
  2202                     }
       
  2203 
       
  2204                 }
       
  2205                 break;
       
  2206 
       
  2207             case 4:
       
  2208                 {
       
  2209 
       
  2210                 RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case 4" );
       
  2211 
       
  2212                 if (aMapping == KAMRemoveNodeName)
       
  2213                     {
       
  2214 
       
  2215                     if (aErrorStatus == EExecSuccess)
       
  2216                         {
       
  2217                         cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull);
       
  2218                         }
       
  2219                     }
       
  2220 
       
  2221                 if (aMapping == KAMActivateNodeName || aMapping
       
  2222                         == KAMDeActivateNodeName)
       
  2223                     {
       
  2224 
       
  2225                     RDEBUG( "CSCOMOAdapter:: SetSCOMOTargetURI case KAMActivateNodeName or KAMDeActivateNodeName " );
       
  2226 
       
  2227                     if (aErrorStatus == EExecSuccess)
       
  2228                         {
       
  2229                         RDEBUG( "CSCOMOAdapter:: EExecSuccess " );
       
  2230                         _LIT8( KAMInitial, "./" );
       
  2231                         _LIT8( KAMSeparator8, "/" );
       
  2232                         _LIT8( KAMStateValueNodeName, "State" );
       
  2233                         TBuf8<256> targetStateURI;
       
  2234                         targetStateURI.Append(KAMInitial);
       
  2235                         targetStateURI.Append(aURI);
       
  2236 
       
  2237                         targetStateURI.Append(KAMSeparator8);
       
  2238                         targetStateURI.Append(KAMStateValueNodeName);
       
  2239 
       
  2240                         cenrep->Set(KNSmlDMSCOMOTargetRef, targetStateURI);
       
  2241                         RDEBUG( "CSCOMOAdapter:: EExecSuccess End" );
       
  2242                         }
       
  2243                     else
       
  2244                         {
       
  2245                         cenrep->Set(KNSmlDMSCOMOTargetRef, KNSmlNull);
       
  2246                         }
       
  2247 
       
  2248                     }
       
  2249 
       
  2250                 }
       
  2251 
       
  2252                 break;
       
  2253             }
       
  2254 
       
  2255         }
       
  2256 
       
  2257     if (cenrep)
       
  2258         {
       
  2259         delete cenrep;
       
  2260         cenrep = NULL;
       
  2261         }
       
  2262 
       
  2263     }
       
  2264 
       
  2265 
  2159 
  2266 void CSCOMOAdapter::ASyncReportL(TUint32 aLuid, const TDesC8& aArgument,
  2160 void CSCOMOAdapter::ASyncReportL(TUint32 aLuid, const TDesC8& aArgument,
  2267         const TDownloadTarget aTarget,const TDesC8& aURI)
  2161         const TDownloadTarget aTarget,const TDesC8& aURI)
  2268     {
  2162     {
  2269 
       
  2270     // while sending generic alert
  2163     // while sending generic alert
  2271     // adapter uses entry stored in database and constructs generic alert
  2164     // adapter uses entry stored in database and constructs generic alert
  2272     // using SyncML framework API.
  2165     // using SyncML framework API.
  2273 
       
  2274     TInt index = 0;
  2166     TInt index = 0;
  2275 
       
  2276 	// Default max retry count is 5. It is also cenep configurable
  2167 	// Default max retry count is 5. It is also cenep configurable
  2277 	// Cenrep configuration responsible can change the max retry 
  2168 	// Cenrep configuration responsible can change the max retry 
  2278 	// count
  2169 	// count
  2279     TInt retrycount = 5;
  2170     TInt retrycount = 5;
  2280     
  2171     
  2292     CleanupStack::PushL(serverId);
  2183     CleanupStack::PushL(serverId);
  2293 
  2184 
  2294     //Add Download entry to database
  2185     //Add Download entry to database
  2295 
  2186 
  2296     iAMdb->SaveToDatabaseL(index, aLuid, profId, retrycount, aURI,
  2187     iAMdb->SaveToDatabaseL(index, aLuid, profId, retrycount, aURI,
  2297             *serverId, aArgument);
  2188            *serverId, aArgument);
  2298 
  2189 
  2299     CleanupStack::PopAndDestroy(serverId);
  2190     CleanupStack::PopAndDestroy(serverId);
  2300 
  2191 
  2301     }
  2192     }
  2302 
  2193 
  2308     RProperty counter;
  2199     RProperty counter;
  2309     TInt r=counter.Attach(KUidPSApplicationManagementKeys, KSyncNotifier,
  2200     TInt r=counter.Attach(KUidPSApplicationManagementKeys, KSyncNotifier,
  2310             EOwnerThread);
  2201             EOwnerThread);
  2311     User::LeaveIfError(r);
  2202     User::LeaveIfError(r);
  2312 
  2203 
  2313     CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart);
  2204     /*CSyncService *syncService = CSyncService::NewL(NULL, KDevManServiceStart);
  2314     if (syncService)
  2205     if (syncService)
  2315         {
  2206         {
  2316         syncService->EnableProgressNoteL(EFalse);
  2207         syncService->EnableProgressNoteL(EFalse);
  2317         }
  2208         }
  2318 
  2209 
  2319     delete syncService;
  2210     delete syncService;*/
  2320 
  2211 
  2321     // wait for the previously attached ‘counter’ property to be updated
  2212     // wait for the previously attached ‘counter’ property to be updated
  2322     TRequestStatus s;
  2213     TRequestStatus s;
  2323     counter.Subscribe(s);
  2214     counter.Subscribe(s);
  2324     User::WaitForRequest(s);
  2215     User::WaitForRequest(s);
  2329                 		   
  2220                 		   
  2330 		switch(status)
  2221 		switch(status)
  2331 		{
  2222 		{
  2332 			case KStatusUserCancelled:
  2223 			case KStatusUserCancelled:
  2333 			{
  2224 			{
  2334 				aRet = MSmlDmAdapter::EExecUserCancelled;
  2225 				aRet = MSmlDmAdapter::EError;
  2335 				break;
  2226 				break;
  2336 			}
  2227 			}
  2337 			               
  2228 			               
  2338 			case KStatusDowloadFailedOOM:
  2229 			case KStatusDowloadFailedOOM:
  2339 			{
  2230 			{
  2340 				aRet = MSmlDmAdapter::EExecDownFailOOM;
  2231 				aRet = MSmlDmAdapter::EError;
  2341 				break;
  2232 				break;
  2342 			}
  2233 			}
  2343 
  2234 
  2344 			case KStatusAlternateDownldAuthFail:
  2235 			case KStatusAlternateDownldAuthFail:
  2345 			{
  2236 			{
  2346 			    aRet = MSmlDmAdapter::EExecAltDwnldAuthFail;
  2237 			    aRet = MSmlDmAdapter::EError;
  2347 			    break;	
  2238 			    break;	
  2348 			}
  2239 			}
  2349 
  2240 
  2350 			case KStatusDownloadFailed:
  2241 			case KStatusDownloadFailed:
  2351 			{
  2242 			{
  2352 				aRet = MSmlDmAdapter::EExecDownloadFailed;
  2243 				aRet = MSmlDmAdapter::EError;
  2353 				break;
  2244 				break;
  2354 			}
  2245 			}
  2355 
  2246 
  2356 			case KStatusPkgValidationFailed:
  2247 			case KStatusPkgValidationFailed:
  2357 			{
  2248 			{
  2358 				aRet = MSmlDmAdapter::EExecPkgValidationFail;
  2249 				aRet = MSmlDmAdapter::EError;
  2359 				break;
  2250 				break;
  2360 			}
  2251 			}
  2361 
  2252 
  2362 			case KStatusInstallFailedOOM:
  2253 			case KStatusInstallFailedOOM:
  2363 			{
  2254 			{
  2364 				aRet = MSmlDmAdapter::EExecInstallOOM;
  2255 				aRet = MSmlDmAdapter::EError;
  2365 				break;
  2256 				break;
  2366 			}
  2257 			}
  2367 
  2258 
  2368 			case KStatusInstallFailed:
  2259 			case KStatusInstallFailed:
  2369 			{
  2260 			{
  2370 				aRet = MSmlDmAdapter::EExecInstallFailed;
  2261 				aRet = MSmlDmAdapter::EError;
  2371 				break;
  2262 				break;
  2372 			}
  2263 			}
  2373 		
  2264 		
  2374 		  case KStatusUnSupportedEnvironment:
  2265 		  case KStatusUnSupportedEnvironment:
  2375 			{
  2266 			{
  2376 				aRet = MSmlDmAdapter::EExecOperationReject;
  2267 				aRet = MSmlDmAdapter::EError;
  2377 				break;
  2268 				break;
  2378 			}
  2269 			}
  2379 			
  2270 			
  2380 			case KStatusAltDowldUnavailable:
  2271 			case KStatusAltDowldUnavailable:
  2381 			{
  2272 			{
  2382 				aRet = MSmlDmAdapter::EExecAltDwnldSrvUnavailable;
  2273 				aRet = MSmlDmAdapter::EError;
  2383 				break;
  2274 				break;
  2384 			}
  2275 			}
  2385 		
  2276 		
  2386 			default:
  2277 			default:
  2387 			{
  2278 			{
  2388 			    aRet = MSmlDmAdapter::EExecSuccess;
  2279 			    aRet = MSmlDmAdapter::EOk;
  2389 				break;
  2280 				break;
  2390 			}
  2281 			}
  2391 		}                
  2282 		}                
  2392     
  2283     
  2393 
  2284 
  4470     return value;
  4361     return value;
  4471     }
  4362     }
  4472 void CSCOMOAdapter::CheckAndAddPredefinedNodeL()
  4363 void CSCOMOAdapter::CheckAndAddPredefinedNodeL()
  4473     {
  4364     {
  4474 
  4365 
       
  4366     RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): begin");
       
  4367 
  4475     // Check if SCOMODefault node addition is enabled.
  4368     // Check if SCOMODefault node addition is enabled.
  4476     TInt staticnodeenabled = 0;
  4369     TInt staticnodeenabled = 0;
  4477     CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
  4370     CRepository* cenrep = CRepository::NewLC( KCRUidPrivateApplicationManagementKeys );
  4478     cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled ); 
  4371     cenrep->Get( KAMStaticNodeEnabled, staticnodeenabled ); 
  4479     CleanupStack::PopAndDestroy(); //cenrep
  4372     CleanupStack::PopAndDestroy(); //cenrep
  4480         
  4373         
  4481     
  4374     RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step1");
       
  4375 
  4482     if(staticnodeenabled)
  4376     if(staticnodeenabled)
  4483     {
  4377     {
  4484       TBuf8<KMaxFullName> temp;
  4378       TBuf8<KMaxFullName> temp;
       
  4379 
       
  4380       RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step2");
  4485       GetPredefinedNodeL(temp);
  4381       GetPredefinedNodeL(temp);
       
  4382 
       
  4383       RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step3");
  4486       if (temp.Length())
  4384       if (temp.Length())
  4487         {
  4385         {
  4488 
  4386 
       
  4387 
       
  4388         RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step4");
  4489         TBuf8<KMaxFullName> temp1;
  4389         TBuf8<KMaxFullName> temp1;
  4490         temp1.Zero();
  4390         temp1.Zero();
  4491         temp1.Copy(KAMNodeName);
  4391         temp1.Copy(KAMNodeName);
  4492         temp1.Append(KAMSeparator8);
  4392         temp1.Append(KAMSeparator8);
  4493         temp1.Append(KAMDownloadNodeName);
  4393         temp1.Append(KAMDownloadNodeName);
  4494         temp1.Append(KAMSeparator8);
  4394         temp1.Append(KAMSeparator8);
  4495         temp1.Append(temp);
  4395         temp1.Append(temp);
       
  4396        
  4496         HBufC8* luid = DirectGetLuidAllocLC(temp1);
  4397         HBufC8* luid = DirectGetLuidAllocLC(temp1);
       
  4398 
       
  4399          RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step5");
  4497 
  4400 
  4498         if (luid->Length() > 0)
  4401         if (luid->Length() > 0)
  4499             {
  4402             {
  4500             CleanupStack::PopAndDestroy(luid);
  4403             CleanupStack::PopAndDestroy(luid);
  4501             return;
  4404             return;
  4502             }
  4405             }
  4503         else
  4406         else
  4504             {
  4407             {
       
  4408             RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step6");
  4505             // Not found, add node and mapping ... 
  4409             // Not found, add node and mapping ... 
  4506             //TError status(EError);
  4410             //TError status(EError);
  4507             TPtrC8 mapping(NSmlDmURI::LastURISeg(temp1) );
  4411             TPtrC8 mapping(NSmlDmURI::LastURISeg(temp1) );
  4508             TPtrC8 parent(NSmlDmURI::RemoveLastSeg(temp1) );
  4412             TPtrC8 parent(NSmlDmURI::RemoveLastSeg(temp1) );
  4509             TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
  4413             TPtrC8 parentMapping(NSmlDmURI::LastURISeg(parent) );
  4510             TInt cnt(NSmlDmURI::NumOfURISegs(temp1) );
  4414             TInt cnt(NSmlDmURI::NumOfURISegs(temp1) );
       
  4415              RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step7");
  4511             TUint32 newLuid(SessionL().DownloadL(mapping));
  4416             TUint32 newLuid(SessionL().DownloadL(mapping));
  4512             //Callback().SetMappingL( temp1, *IntToDes8LC( newLuid ) );
  4417             //Callback().SetMappingL( temp1, *IntToDes8LC( newLuid ) );
  4513             //CleanupStack::PopAndDestroy();
  4418             //CleanupStack::PopAndDestroy();
       
  4419             RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step8");
  4514             DirectSetMappingL(temp1, *IntToDes8LC(newLuid) );
  4420             DirectSetMappingL(temp1, *IntToDes8LC(newLuid) );
       
  4421             RDEBUG("CSCOMOAdapter::CheckAndAddPredefinedNodeL(): step9");
  4515             CleanupStack::PopAndDestroy(); // for IntToDes8LC()
  4422             CleanupStack::PopAndDestroy(); // for IntToDes8LC()
  4516             CleanupStack::PopAndDestroy(luid);
  4423             CleanupStack::PopAndDestroy(luid);
  4517             }
  4424             }
  4518         }
  4425         }
  4519     }
  4426     }
  4557 TInt CSCOMOAdapter::GetAdapterValue()
  4464 TInt CSCOMOAdapter::GetAdapterValue()
  4558     {
  4465     {
  4559     TInt adapterValue;
  4466     TInt adapterValue;
  4560     CRepository *repository = NULL;
  4467     CRepository *repository = NULL;
  4561     TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
  4468     TRAPD( err, repository = CRepository::NewL ( KCRUidPrivateApplicationManagementKeys ) );
       
  4469 
       
  4470     RDEBUG_2("error reading cenrep %d", err);
  4562     if (err == KErrNone)
  4471     if (err == KErrNone)
  4563         {
  4472         {
  4564         err = repository->Get(KAMAdapterValue, adapterValue);
  4473         err = repository->Get(KAMAdapterValue, adapterValue);
  4565         }
  4474         }
  4566     delete repository;
  4475     delete repository;
  4587         {
  4496         {
  4588         isSupportedMimeType = ETrue;
  4497         isSupportedMimeType = ETrue;
  4589         }
  4498         }
  4590     return isSupportedMimeType;
  4499     return isSupportedMimeType;
  4591     }
  4500     }
  4592 
       
  4593 HBufC8* CSCOMOAdapter::GetIdentifierIdL(const TUint32 aluid)
       
  4594     {
       
  4595     RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: const TUint32 aluid, const TDesC8& aTargetUri" );
       
  4596     
       
  4597     _LIT8(KNull, "null");
       
  4598     TDeploymentComponent comp;
       
  4599     HBufC8 *id = NULL;
       
  4600     TInt err(SessionL().DeploymentComponent(aluid, comp) );
       
  4601     RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1" );
       
  4602     
       
  4603     if(err == KErrNone)
       
  4604         {
       
  4605             RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1.1" );
       
  4606             if(comp.iState == EDCSDelivered || comp.iState ==EDCSDownload)    
       
  4607                 {
       
  4608                 RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: iState EDCSActive,EDCSInactive" );  
       
  4609                 id = (comp.iPkgID).AllocL();
       
  4610                 }
       
  4611             else if(comp.iState==EDCSActive || comp.iState ==EDCSInactive)
       
  4612                 {
       
  4613                 RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: iState EDCSDelivered,EDCSDownload" ); 
       
  4614                 id = (comp.iId).AllocL();
       
  4615                 }
       
  4616             else
       
  4617                 {
       
  4618                 id = KNull().AllocL();
       
  4619                 }
       
  4620         }
       
  4621     RDEBUG( "CSCOMOAdapter::GetIdentifierIdL: Step 1 end" );
       
  4622     return id;
       
  4623     }
       
  4624 // End of File
  4501 // End of File
  4625 
  4502