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