secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp
changeset 25 98b66e4fb0be
parent 0 ba25891c3a9e
child 50 c6e8afe0ba85
child 60 245df5276b97
--- a/secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp	Fri Mar 19 09:33:35 2010 +0200
+++ b/secureswitools/swisistools/source/interpretsislib/xmlgenerator.cpp	Fri Apr 16 15:05:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of the License "Eclipse Public License v1.0"
@@ -67,7 +67,10 @@
 	{}
 
 
-void CXmlGenerator::WritePreProvisionDetails(const std::wstring aXmlFileName, const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail)
+void CXmlGenerator::WritePreProvisionDetails(const std::wstring aXmlFileName, 
+												const XmlDetails::TScrPreProvisionDetail& aPreProvisionDetail,
+												int& aRomApplication
+												)
 	{
 	try 
 		{
@@ -112,7 +115,7 @@
 			DOMElement*  component = domDocument->createElement(L"Component");
 			rootElement->appendChild(component);
 
-			WriteComponent(component,domDocument.get(), *compIter);
+			WriteComponent(component,domDocument.get(), *compIter, aRomApplication);
 			}
 		
 		// do the serialization through DOMWriter::writeNode();
@@ -163,8 +166,19 @@
 	aDomWriter->setEncoding(L"UTF-16");
 	}
 
-void CXmlGenerator::WriteComponent( DOMElement* aRootElement, DOMDocument* aDocument, const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent)
+void CXmlGenerator::WriteComponent( DOMElement* aRootElement, DOMDocument* aDocument, 
+										const XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+										int& aRomApplication
+										)
 	{
+
+	if (aRomApplication) 
+	{
+		int isRomApplication = 1;
+		std::wstring isRomApp = Utils::IntegerToWideString(isRomApplication);
+		AddChildElement(aRootElement, aDocument, L"RomApplication", isRomApp.c_str());
+	}
+	
 	std::wstring isRemovable = Utils::IntegerToWideString(aComponent.iComponentDetails.iIsRemovable);
 	AddChildElement(aRootElement, aDocument, L"Removable", isRemovable.c_str() );
 	
@@ -191,6 +205,9 @@
 	WriteComponentFiles(aRootElement, aDocument, aComponent.iComponentFiles);
 
 	WriteComponentDependencies(aRootElement, aDocument, aComponent.iComponentDependency);
+
+	WriteAppRegInfo(aRootElement, aDocument, aComponent.iApplicationRegistrationInfo);
+
 	}
 
 void CXmlGenerator::WriteComponentVersion
@@ -260,6 +277,261 @@
 		}
 	}
 
+
+/**
+ * Writes Class TAppRegistrationInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppRegInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppRegistrationInfo>& aAppRegInfo 
+					)
+{
+	std::vector<AppRegistrationInfo>::const_iterator compFileIter;
+	for( compFileIter = aAppRegInfo.begin() ; compFileIter != aAppRegInfo.end() ; ++compFileIter)
+	{
+		DOMElement* compFileRoot = AddTag(aRootElement, aDocument, L"ApplicationRegistrationInfo");
+
+		WriteAppAttributes(compFileRoot, aDocument, compFileIter->iApplicationAttribute);
+
+		const std::vector<AppOpaqueDataType>& aAppOpaqueDataType = compFileIter->iOpaqueDataType;
+		std::vector<AppOpaqueDataType>::const_iterator fileAppOpaqueDataType;
+
+		for( fileAppOpaqueDataType = aAppOpaqueDataType.begin() ; fileAppOpaqueDataType != aAppOpaqueDataType.end() ; ++fileAppOpaqueDataType)
+		{
+			if(0 == fileAppOpaqueDataType->iServiceUid)
+			{
+				DOMElement* filePropValueRoot = AddTag(compFileRoot, aDocument, L"OpaqueData");
+				AddChildElement(filePropValueRoot,aDocument, L"Data", fileAppOpaqueDataType->iOpaqueData.c_str());
+				std::wstring iLocale = Utils::IntegerToWideString(fileAppOpaqueDataType->iLocale);
+				AddChildElement(filePropValueRoot,aDocument, L"OpaqueLocale", iLocale.c_str());
+			}
+		}
+
+		for(vector<std::wstring>::iterator mimeiter = compFileIter->iFileOwnershipInfo.begin() ; mimeiter != compFileIter->iFileOwnershipInfo.end() ; ++mimeiter )
+		{
+			DOMElement* filePropRoot = AddTag(compFileRoot, aDocument, L"FileOwnershipinfo");
+
+			AddChildElement(filePropRoot,aDocument, L"FileName",  mimeiter->c_str());
+		}
+
+		WriteAppServiceInfo(compFileRoot, aDocument, compFileIter->iApplicationServiceInfo, compFileIter->iOpaqueDataType);
+		WriteAppLocalizableInfo(compFileRoot, aDocument, compFileIter->iApplicationLocalizableInfo);
+	}
+}
+
+/**
+ * Writes Class TAppLocalizableInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppLocalizableInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppLocalizableInfo>& aAppLocalizableInfo
+					)
+{
+	std::vector<AppLocalizableInfo>::const_iterator filePropIter;
+	for( filePropIter = aAppLocalizableInfo.begin() ; filePropIter != aAppLocalizableInfo.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationLocalizableInfo");
+
+		WriteAppLocalizableAttribute(filePropRoot, aDocument, filePropIter->iLocalizableAttribute);
+		WriteAppLocalizableViewData(filePropRoot, aDocument, filePropIter->iViewData);
+	}
+}
+
+/**
+ * Writes Class TAppLocalizableAttribute Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppLocalizableAttribute	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppLocalizableAttribute>& aAppLocalizableAttribute 
+					)
+{
+	std::vector<AppLocalizableAttribute>::const_iterator filePropIter;
+	for( filePropIter = aAppLocalizableAttribute.begin() ; filePropIter != aAppLocalizableAttribute.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"LocalizableAttribute");
+		DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"LocalizableAttribute_Value");
+
+		if(filePropIter->iIsIntValue)
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"LocalizableAttribute_IntValue", filePropIter->iValue.c_str());
+		}
+		else
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"LocalizableAttribute_StrValue", filePropIter->iValue.c_str());
+		}
+		filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	}
+}
+
+/**
+ * Writes Class TAppViewData Info in XML. 
+ */
+
+ void CXmlGenerator::WriteAppLocalizableViewData 
+					 ( 
+						 DOMElement* aRootElement, DOMDocument* aDocument, 
+						 const std::vector<AppViewData>& aAppViewData 
+					 )
+ {
+	 std::vector<AppViewData>::const_iterator filePropIter;
+	 for( filePropIter = aAppViewData.begin() ; filePropIter != aAppViewData.end() ; ++filePropIter)
+	 {
+		 DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ViewData");
+		 WriteAppLocalizableViewDataAttributes(filePropRoot, aDocument, filePropIter->iViewDataAttributes);
+	 }
+ }
+
+ void CXmlGenerator::WriteAppLocalizableViewDataAttributes 
+					 ( 
+						 DOMElement* aRootElement, DOMDocument* aDocument, 
+						 const std::vector<AppViewDataAttributes>& aAppViewDataAttributes 
+					 )
+ {
+	 std::vector<AppViewDataAttributes>::const_iterator filePropIter;
+	 for( filePropIter = aAppViewDataAttributes.begin() ; filePropIter != aAppViewDataAttributes.end() ; ++filePropIter)
+	 {
+		 DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ViewDataAttribute");
+		 DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ViewData_Value");
+ 
+		 if(filePropIter->iIsIntValue)
+		 {
+			 AddChildElement(filePropValueRoot, aDocument, L"ViewData_IntValue", filePropIter->iValue.c_str());
+		 }
+		 else
+		 {
+			 AddChildElement(filePropValueRoot, aDocument, L"ViewData_StrValue", filePropIter->iValue.c_str());
+		 }
+		 filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	 }
+ }
+
+/**
+ * Writes Class TAppServiceInfo Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppServiceInfo	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppServiceInfo>& aAppServiceInfo,
+						const std::vector<AppOpaqueDataType>& aAppOpaqueData 
+					)
+{
+	std::vector<AppServiceInfo>::const_iterator filePropIter;
+	std::vector<AppOpaqueDataType>::const_iterator fileAppPropIter;
+	for( filePropIter = aAppServiceInfo.begin() ; filePropIter != aAppServiceInfo.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationServiceInfo");
+	
+		std::wstring iUid = Utils::IntegerToWideString(filePropIter->iUid);
+		AddChildElement(filePropRoot,aDocument, L"Uid", iUid.c_str());
+
+		for( fileAppPropIter = aAppOpaqueData.begin() ; fileAppPropIter != aAppOpaqueData.end() ; ++fileAppPropIter)
+		{
+			if(filePropIter->iUid == fileAppPropIter->iServiceUid)
+			{
+				if(!fileAppPropIter->iOpaqueData.empty())
+				{
+					DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ServiceOpaqueData");
+					AddChildElement(filePropValueRoot,aDocument, L"ServiceData", fileAppPropIter->iOpaqueData.c_str());
+					std::wstring iLocale = Utils::IntegerToWideString(fileAppPropIter->iLocale);
+					AddChildElement(filePropValueRoot,aDocument, L"ServiceOpaqueLocale", iLocale.c_str());
+				}
+			}
+		}
+
+		WriteAppDataType(filePropRoot, aDocument, filePropIter->iDataType);
+	}
+}
+
+/**
+ * Writes Class TDataType Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppDataType	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppDataType>& aAppDataType 
+					)
+{
+	std::vector<AppDataType>::const_iterator filePropIter;
+	for( filePropIter = aAppDataType.begin() ; filePropIter != aAppDataType.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationDataType");
+
+		std::wstring iPriority = Utils::IntegerToWideString(filePropIter->iPriority);
+		AddChildElement(filePropRoot,aDocument, L"Priority", iPriority.c_str());
+		AddChildElement(filePropRoot, aDocument, L"Type", filePropIter->iType.c_str());
+	}
+}
+
+/**
+ * Writes Class TApplicationAttribute Info in XML. 
+ */
+
+void CXmlGenerator::WriteAppAttributes	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<ApplicationAttribute>& aAppAttributes 
+					)
+{
+	std::vector<ApplicationAttribute>::const_iterator filePropIter;
+	for( filePropIter = aAppAttributes.begin() ; filePropIter != aAppAttributes.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationAttribute");
+		DOMElement* filePropValueRoot = AddTag(filePropRoot, aDocument, L"ApplicationAttribute_Value");
+
+		if(filePropIter->iIsIntValue)
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"ApplicationAttribute_IntValue", filePropIter->iValue.c_str());
+		}
+		else
+		{
+			AddChildElement(filePropValueRoot, aDocument, L"ApplicationAttribute_StrValue", filePropIter->iValue.c_str());
+		}
+		filePropRoot->setAttribute(L"Name", filePropIter->iName.c_str());
+	}
+}
+
+/**
+ * Writes Class TApplicationProperty Info in XML. 
+ */
+void CXmlGenerator::WriteAppProperty	
+					( 
+						DOMElement* aRootElement, DOMDocument* aDocument, 
+						const std::vector<AppProperty>& aAppProperty 
+					)
+{
+	std::vector<AppProperty>::const_iterator filePropIter;
+	for( filePropIter = aAppProperty.begin() ; filePropIter != aAppProperty.end() ; ++filePropIter)
+	{
+		DOMElement* filePropRoot = AddTag(aRootElement, aDocument, L"ApplicationProperty");
+
+
+		std::wstring iLocale = Utils::IntegerToWideString(filePropIter->iLocale);
+		AddChildElement(filePropRoot,aDocument, L"Locale", iLocale.c_str());
+
+		AddChildElement(filePropRoot,aDocument, L"Name", filePropIter->iName.c_str());
+
+		std::wstring iServiceUid = Utils::IntegerToWideString(filePropIter->iServiceUid);
+		AddChildElement(filePropRoot,aDocument, L"ServiceUid", iServiceUid.c_str());
+
+		std::wstring iIntValue = Utils::IntegerToWideString(filePropIter->iIntValue);
+		AddChildElement(filePropRoot,aDocument, L"IntValue", iIntValue.c_str());
+
+		AddChildElement(filePropRoot, aDocument, L"StrValue", filePropIter->iStrValue.c_str());
+
+		std::wstring iIsStr8Bit = Utils::IntegerToWideString(filePropIter->iIsStr8Bit);
+		AddChildElement(filePropRoot,aDocument, L"IsStr8Bit", iIsStr8Bit.c_str());
+
+	}
+}
+
 void CXmlGenerator::WriteComponentFiles	
 					( 
 						DOMElement* aRootElement, DOMDocument* aDocument,