3 // Open Service Platform
4 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
5 // All rights reserved.
7 // This software contains confidential and proprietary information
8 // of Samsung Electronics Co., Ltd.
9 // The user of this software agrees not to disclose, disseminate or copy such
10 // Confidential Information and shall use the software only in accordance with
11 // the terms of the license agreement the user entered into with Samsung.
14 #include "FeatureSetGenerator.h"
17 #include <FSysSystemTime.h>
19 FeatureSetGenThread::FeatureSetGenThread(void)
21 , __pImageFeatureManager(0)
25 FeatureSetGenThread::~FeatureSetGenThread(void)
30 FeatureSetGenThread::Construct(void)
32 return Thread::Construct();
36 FeatureSetGenThread::Run(void)
38 __resultInfo.appendTime = 0;
39 __resultInfo.totalObjectsNumber = 0;
40 __resultInfo.appendedObjectsNumber = 0;
41 __resultInfo.rejectedObjectsNumber = 0;
43 Generate(__imagePath, __resultInfo);
47 __pListener->OnFinish();
54 FeatureSetGenThread::SetListener(IFeatureSetGeneratorListener* pListener)
56 if (__pListener == pListener)
60 __pListener = pListener;
64 FeatureSetGenThread::Generate(Tizen::Base::String imPath, ResultInfo& resInfo)
69 if(!__pImageFeatureManager)
74 Tizen::Base::TimeSpan start(0, 0, 1), finish(0, 0, 1);
75 Tizen::System::SystemTime::GetUptime(start);
76 Tizen::Io::Directory dir;
78 result r = dir.Construct(imPath);
82 Tizen::Base::String folder(imPath);
83 if (folder[folder.GetLength() - 1] != '/')
88 Tizen::Io::DirEnumerator* pDirEnum = dir.ReadN();
94 while(pDirEnum->MoveNext() == E_SUCCESS)
96 Tizen::Io::DirEntry dirEntry = pDirEnum->GetCurrentDirEntry();
97 if (!dirEntry.IsDirectory())
99 if(Tizen::Io::File::IsFileExist(imPath + "/" + dirEntry.GetName()))
101 __files.Add(imPath + "/" + dirEntry.GetName());
111 if(CheckExt(imPath) && Tizen::Io::File::IsFileExist(imPath))
121 StrComparer* pStrComparer = new StrComparer();
122 __files.Sort(*pStrComparer);
125 // Uses an enumerator to access elements in the list
126 Tizen::Base::Collection::IEnumeratorT<Tizen::Base::String>* pEnum = __files.GetEnumeratorN();
127 Tizen::Base::String name;
129 while (pEnum->MoveNext() == E_SUCCESS)
131 pEnum->GetCurrent(name);
134 AppLog("AddFeature %ls %i", name.GetPointer(), currObject);
138 __pListener->OnImageProcessed(currObject, __files.GetCount());
141 if ( __pImageFeatureManager->AddFeature(name) >= 0)
143 AppLog("AddFeature appended %ls %i", name.GetPointer(), currObject);
144 ++resInfo.appendedObjectsNumber;
148 ++resInfo.rejectedObjectsNumber;
154 Tizen::System::SystemTime::GetUptime(finish);
155 resInfo.appendTime = 60000 * (finish - start).GetMinutes() + 1000 * (finish - start).GetSeconds()
156 + (finish - start).GetMilliseconds();
158 resInfo.totalObjectsNumber = __pImageFeatureManager->GetTotalNumberOfFeatures();
160 //Causing UI frees after exit
167 FeatureSetGenThread::SetImagePath(const Tizen::Base::String& imPath)
169 __imagePath = imPath;
173 FeatureSetGenThread::GetResults(ResultInfo& resInfo)
175 resInfo = __resultInfo;
179 FeatureSetGenThread::CheckExt(Tizen::Base::String fileName)
182 const Tizen::Base::String period_symbol = ".";
183 if (E_SUCCESS != fileName.LastIndexOf(period_symbol, fileName.GetLength()-1, period))
187 Tizen::Base::String extension;
188 if(E_SUCCESS != fileName.SubString(period + 1, extension))
193 if ( (extension.Equals(L"jpg",true)) ||
194 (extension.Equals(L"bmp",true)) ||
195 (extension.Equals(L"png",true)) ||
196 (extension.Equals(L"jpeg",true)))
206 FeatureSetGenThread::SetFeatureManager(Tizen::Uix::Vision::ImageFeatureManager* pImageFeatureManager)
208 __pImageFeatureManager = pImageFeatureManager;