upload tizen1.0 source
[profile/ivi/wrt-plugins-tizen.git] / src / platform / API / Messaging / StorageChangesFolderGenerator.cpp
index 799c68a..e6c8078 100755 (executable)
@@ -25,7 +25,7 @@
 
 #include "IMessagingTypes.h"
 
-#include <emf-types.h>
+#include <email-types.h>
 
 #include <dpl/log/log.h>
 
@@ -37,12 +37,6 @@ namespace TizenApis {
                namespace Messaging {
 
 
-               const std::string StorageChangesFolderGenerator::STRING_MATCH_EXACTLY         = "EXACTLY";
-               const std::string StorageChangesFolderGenerator::STRING_MATCH_CONTAINS        = "CONTAINS";
-               const std::string StorageChangesFolderGenerator::STRING_MATCH_STARTSWITH      = "STARTSWITH";
-               const std::string StorageChangesFolderGenerator::STRING_MATCH_ENDSWITH        = "ENDSWITH";
-//             const std::string StorageChangesFolderGenerator::STRING_MATCH_CASESENSITIVE   = "CASESENSITIVE";
-
                const int StorageChangesFolderGenerator::MESSAGE_TYPE_NOT_INITIALIZED = -1;
 
                StorageChangesFolderGenerator::StorageChangesFolderGenerator(Api::Messaging::IMessageFolderPtr folder):m_messageType(MESSAGE_TYPE_NOT_INITIALIZED) {
@@ -145,16 +139,56 @@ namespace TizenApis {
                                LogDebug("<<< getMatchExactlyClause DIFF >>>");
                                return FALSE;                                                           
                        }
+               }
+
+               bool StorageChangesFolderGenerator::getMatchFullstringClause(std::string& attrName, Api::Tizen::AnyPtr& value)
+               {
+                       std::string tempString1;
+                       std::string tempString2;
+                       
+                       std::string valueString = value->toString();
+                       LogDebug("<<< attrName : " << attrName);
+                       LogDebug("<<< valueString : " << valueString);
+                       
+                       tempString1.assign(attrName);
+                       tempString2.assign(valueString);
+
+                       StrLowChange(tempString1);
+                       StrLowChange(tempString2);
+
+                       LogDebug("<<< attrName : " << tempString1);
+                       LogDebug("<<< valueString : " << tempString2);
+                       
+                       if(tempString1.compare(tempString2) == 0)
+                       {
+                               LogDebug("<<< getMatchFullstringClause SAME >>>");
+                               return TRUE;                            
+                       }
+                       else{
+                               LogDebug("<<< getMatchFullstringClause DIFF >>>");
+                               return FALSE;                                                           
                        }
+               }               
 
                bool StorageChangesFolderGenerator::getMatchContainsClause(std::string& attrName, Api::Tizen::AnyPtr& value)
                {
+                       std::string tempString1;
+                       std::string tempString2;
+                       
                        std::string valueString = value->toString();
                        LogDebug("<<< attrName : " << attrName);
                        LogDebug("<<< valueString : " << valueString);
-                       LogDebug("<<< attrName.find(valueString) : " << attrName.find(valueString));
+                       
+                       tempString1.assign(attrName);
+                       tempString2.assign(valueString);
+
+                       StrLowChange(tempString1);
+                       StrLowChange(tempString2);
+
+                       LogDebug("<<< attrName : " << tempString1);
+                       LogDebug("<<< valueString : " << tempString2);
 
-                       if(attrName.find(valueString) != std::string::npos)
+                       if(tempString1.find(tempString2) != std::string::npos)
                        {
                                LogDebug("<<< getMatchContainsClause CONTAINS >>>");
                                return TRUE;                            
@@ -166,16 +200,26 @@ namespace TizenApis {
 
                bool StorageChangesFolderGenerator::getMatchStartwithClause(std::string& attrName, Api::Tizen::AnyPtr& value)
                {
+                       std::string tempString1;
+                       std::string tempString2;
+                       
                        std::string valueString = value->toString();
                        LogDebug("<<< attrName : " << attrName);
                        LogDebug("<<< valueString : " << valueString);
-                       LogDebug("<<< attrName.compare(0,valueString.size(), valueString) : " << attrName.compare(0,valueString.size(), valueString));
+                       
+                       tempString1.assign(attrName);
+                       tempString2.assign(valueString);
+
+                       StrLowChange(tempString1);
+                       StrLowChange(tempString2);
 
+                       LogDebug("<<< attrName : " << tempString1);
+                       LogDebug("<<< valueString : " << tempString2);
 
-                       if(attrName.size()-valueString.size() < 0)
+                       if(tempString1.size()-tempString2.size() < 0)
                                return FALSE;
 
-                       if(attrName.compare(0,valueString.size(), valueString) == 0)
+                       if(tempString1.compare(0,tempString2.size(), tempString2) == 0)
                {
                                LogDebug("<<< getMatchStartwithClause START WITH >>>");
                                return TRUE;
@@ -188,17 +232,26 @@ namespace TizenApis {
 
                bool StorageChangesFolderGenerator::getMatchEndwithClause(std::string& attrName, Api::Tizen::AnyPtr& value)
                {
+                       std::string tempString1;
+                       std::string tempString2;
+                       
                        std::string valueString = value->toString();
-
                        LogDebug("<<< attrName : " << attrName);
                        LogDebug("<<< valueString : " << valueString);
-                       LogDebug("<<< attrName.compare(attrName.size()-valueString.size(),valueString.size(), valueString) : " << attrName.compare(attrName.size()-valueString.size(),valueString.size(), valueString));
+                       
+                       tempString1.assign(attrName);
+                       tempString2.assign(valueString);
 
+                       StrLowChange(tempString1);
+                       StrLowChange(tempString2);
 
-                       if(attrName.size()-valueString.size() < 0)
+                       LogDebug("<<< attrName : " << tempString1);
+                       LogDebug("<<< valueString : " << tempString2);
+
+                       if(tempString1.size()-tempString2.size() < 0)
                                return FALSE;
 
-                       if(attrName.compare(attrName.size()-valueString.size(),valueString.size(), valueString) == 0 )
+                       if(tempString1.compare(tempString1.size()-tempString2.size(),tempString2.size(), tempString2) == 0 )
                        {
                                LogDebug("<<< getMatchEndwithClause END WITH >>>");
                                return TRUE;                            
@@ -209,12 +262,25 @@ namespace TizenApis {
                        }
                        }
 
+
+               bool StorageChangesFolderGenerator::getMatchExistClause(std::string& attrName)
+               {
+                       LogDebug("<<< attrName : " << attrName);
+                       if(attrName.size()> 0)
+                               return TRUE;
+                       else
+                               return FALSE;
+               }
+
                void StorageChangesFolderGenerator::visitAttribute(std::string& attrName,
                                Api::Tizen::MatchFlag& matchFlag, Api::Tizen::AnyPtr& matchValue, int depth){
                        LogDebug("<<< attrName:[" << attrName << "], matchFlag:[" << matchFlag << "]");
 
-                       if(matchValue == NULL)
+                       if(matchFlag != Api::Tizen::MATCH_EXISTS){
+                               if(matchValue == NULL)  {
                                return;
+                               }
+                       }
 
                        LogDebug("matchValue:" << matchValue->toString());
 
@@ -226,7 +292,7 @@ namespace TizenApis {
                        std::string valueString;
 
 //  Check Folder_type and filter_type
-                       if(attrName.compare("serviceId")==0){
+                       if(attrName.compare( StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_ACCOUNT_ID)==0){
                                LogDebug("<<< value:[" << value << "]");
                                int nType = atoi(value->toString().c_str());
                                if((int)m_accountid == nType)
@@ -241,7 +307,7 @@ namespace TizenApis {
                                }
                                return;
                        }
-                       if(attrName.compare("contestType")==0){
+                       if(attrName.compare(StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_CONTENT_TYPE)==0){
                        LogDebug("<<< value:[" << value << "]");
                                std::string convertType = value->toString();
                                int nType = convertMessageType(convertType);
@@ -257,7 +323,7 @@ namespace TizenApis {
                                }
                                return;
                        }
-                       if(attrName.compare("type")==0){
+                       if(attrName.compare(StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_TYPE )==0){
                                LogDebug("<<< value:[" << value << "]");
                                std::string convertType = value->toString();
                                int nType = convertFolderType(convertType);
@@ -273,10 +339,13 @@ namespace TizenApis {
                                }
                                return;
                        }
-                       if(attrName.compare("synchronizable")==0){
+                       if(attrName.compare(StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_SYNCHRONIZABLE)==0){
                                LogDebug("<<< value:[" << value << "]");
-                               int nType = value->toString().compare("true");
-                               if((int)m_synchronizable == nType)
+                               std::string lowerString;
+                               lowerString.assign(value->toString());
+                               StrLowChange(lowerString);                              
+                               int nType = lowerString.compare("true");
+                               if((int)m_synchronizable != nType)
                                {
                                        m_result.push_back(TRUE);
                                        LogDebug("<<< synchronizable is same");
@@ -289,7 +358,7 @@ namespace TizenApis {
                                return;
                        }
 
-                       if(attrName.compare("name")==0){
+                       if(attrName.compare(StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_NAME)==0){
                                LogDebug("<<< value:[" << value << "]");
                                LogDebug("<<< value->toString():[" << value->toString() << "]");
                                LogDebug("<<< m_name:[" << m_name << "]");
@@ -308,7 +377,7 @@ namespace TizenApis {
                                return;
                        }
 
-                       if(attrName.compare("path")==0){
+                       if(attrName.compare(StorageChangesFolderFilterValidatorFactory::ATTRIBUTE_PATH)==0){
                                LogDebug("<<< value:[" << value << "]");
                                LogDebug("<<< value->toString():[" << value->toString() << "]");
                                LogDebug("<<< m_path:[" << m_path << "]");
@@ -386,6 +455,9 @@ namespace TizenApis {
                        if(matchFlag == Api::Tizen::MATCH_EXACTLY){
                                LogDebug("STRING_MATCH_EXACTLY");
                                result = result || getMatchExactlyClause(valueString, value);
+                       }else if(matchFlag == Api::Tizen::MATCH_FULLSTRING){
+                               LogDebug("STRING_MATCH_FULLSTRING");
+                               result = result || getMatchFullstringClause(valueString, value);                                                
                        }else if(matchFlag == Api::Tizen::MATCH_CONTAINS){
                                LogDebug("STRING_MATCH_CONTAINS");
                                result = result || getMatchContainsClause(valueString, value);                                          
@@ -395,6 +467,9 @@ namespace TizenApis {
                        }else if(matchFlag == Api::Tizen::MATCH_ENDSWITH){
                                LogDebug("STRING_MATCH_ENDSWITH");
                                result = result || getMatchEndwithClause(valueString, value);                           
+                       }else if(matchFlag == Api::Tizen::MATCH_EXISTS){
+                               LogDebug("STRING_MATCH_EXIST");
+                               result = result || getMatchExistClause(valueString);
                        }else{
                                LogDebug("[ERROR]invalid match flag : iter:" << *iter);
                        }
@@ -410,6 +485,14 @@ namespace TizenApis {
                        LogDebug("result = " << result);        
                        return result;
                }
+
+
+               void StorageChangesFolderGenerator::StrLowChange(std::string& tempString)
+               {       
+                       std::transform(tempString.begin(), tempString.end(), tempString.begin(), ::tolower);
+                       return;
+               }
+               
 }
        }               //namespace Platform
 }              //namespace WrtPlugins