aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp')
-rw-r--r--src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp245
1 files changed, 245 insertions, 0 deletions
diff --git a/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp
new file mode 100644
index 00000000..1b48e8d4
--- /dev/null
+++ b/src/plugins/lipi-toolkit/3rdparty/lipi-toolkit/src/util/lib/LTKVersionCompatibilityCheck.cpp
@@ -0,0 +1,245 @@
+/*****************************************************************************************
+* Copyright (c) 2007 Hewlett-Packard Development Company, L.P.
+* Permission is hereby granted, free of charge, to any person obtaining a copy of
+* this software and associated documentation files (the "Software"), to deal in
+* the Software without restriction, including without limitation the rights to use,
+* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
+* Software, and to permit persons to whom the Software is furnished to do so,
+* subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
+* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*****************************************************************************************/
+
+/************************************************************************
+ * SVN MACROS
+ *
+ * $LastChangedDate: 2008-07-18 15:33:34 +0530 (Fri, 18 Jul 2008) $
+ * $Revision: 564 $
+ * $Author: sharmnid $
+ *
+ ************************************************************************/
+/************************************************************************
+ * FILE DESCR: Defines the function to check the version compatibility
+ *
+ * CONTENTS:
+ *
+ * AUTHOR: Nidhi Sharma
+ *
+ * DATE: May 25, 2007
+ * CHANGE HISTORY:
+ * Author Date Description of change
+ ************************************************************************/
+
+#include "LTKVersionCompatibilityCheck.h"
+#include "LTKStringUtil.h"
+#include "LTKTypes.h"
+#include "LTKLoggerUtil.h"
+
+/**********************************************************************************
+* AUTHOR : Nidhi sharma
+* DATE : 25-May-2007
+* NAME : LTKVersionCompatibilityCheck
+* DESCRIPTION : Default Constructor
+* ARGUMENTS :
+* RETURNS :
+* NOTES :
+* CHANGE HISTROY
+* Author Date Description of change
+*************************************************************************************/
+LTKVersionCompatibilityCheck::LTKVersionCompatibilityCheck():m_delimiter(".")
+{
+}
+
+/**********************************************************************************
+* AUTHOR : Nidhi sharma
+* DATE : 25-May-2007
+* NAME : ~LTKVersionCompatibilityCheck
+* DESCRIPTION : Default Destructor
+* ARGUMENTS :
+* RETURNS :
+* NOTES :
+* CHANGE HISTROY
+* Author Date Description of change
+*************************************************************************************/
+LTKVersionCompatibilityCheck::~LTKVersionCompatibilityCheck()
+{
+}
+
+/**********************************************************************************
+* AUTHOR : Nidhi sharma
+* DATE : 25-May-2007
+* NAME : checkCompatibility
+* DESCRIPTION :
+* ARGUMENTS :
+* RETURNS :
+* NOTES :
+* CHANGE HISTROY
+* Author Date Description of change
+*************************************************************************************/
+bool LTKVersionCompatibilityCheck::checkCompatibility(const string& supportedMinVersion,
+ const string& currentVersion,
+ const string& versionRead)
+ {
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Entering: LTKVersionCompatibilityCheck::checkCompatibility()" << endl;
+
+ bool returnStatus = false;
+
+
+ if (versionRead == currentVersion )
+ {
+ return true;
+ }
+
+ if (isFirstVersionHigher(versionRead, supportedMinVersion) == true &&
+ isFirstVersionHigher(currentVersion, versionRead) == true)
+ {
+ returnStatus = true;
+ }
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Exiting: LTKVersionCompatibilityCheck::checkCompatibility()" << endl;
+
+ return returnStatus;
+}
+
+bool LTKVersionCompatibilityCheck::isFirstVersionHigher(const string& firstVersion,
+ const string& secondVersion)
+{
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Entering: LTKVersionCompatibilityCheck::isFirstVersionHigher()" << endl;
+
+ if ( firstVersion == secondVersion )
+ {
+ return true;
+ }
+
+ bool returnVal = false;
+ bool equalityObtained = false;
+
+ stringVector firstVerTok;
+ stringVector secondVerTok;
+
+ LTKStringUtil::tokenizeString(firstVersion, m_delimiter, firstVerTok);
+ LTKStringUtil::tokenizeString(secondVersion, m_delimiter, secondVerTok);
+
+ int versionTokSize = firstVerTok.size();
+
+ if ( versionTokSize != secondVerTok.size())
+ {
+ return false;
+ }
+
+ // compare first tokens
+ int cmpResults = compareTokens(atoi((firstVerTok[0]).c_str()), atoi((secondVerTok[0]).c_str()));
+
+ switch (cmpResults)
+ {
+ case GREATER :
+ returnVal = true;
+ break;
+
+ case LESSER :
+ returnVal = false;
+ break;
+
+ case EQUAL :
+ equalityObtained = true;
+ break;
+ }
+
+ if (equalityObtained == false)
+ {
+ return returnVal;
+ }
+ else
+ {
+ equalityObtained = false;
+ returnVal = false;
+
+ // Compare the second tokens
+ int cmpResults2 = compareTokens(atoi((firstVerTok[1]).c_str()), atoi((secondVerTok[1]).c_str()));
+
+ switch (cmpResults2)
+ {
+ case GREATER :
+ returnVal = true;
+ break;
+
+ case LESSER :
+ returnVal = false;
+ break;
+
+ case EQUAL :
+ equalityObtained = true;
+ break;
+ }
+ }
+
+ if (equalityObtained == false)
+ {
+ return returnVal;
+ }
+ else
+ {
+ equalityObtained = false;
+ returnVal = false;
+
+ // Compare the second tokens
+ int cmpResults3 = compareTokens(atoi((firstVerTok[2]).c_str()), atoi((secondVerTok[2]).c_str()));
+
+ switch (cmpResults3)
+ {
+ case GREATER :
+ returnVal = true;
+ break;
+
+ case LESSER :
+ returnVal = false;
+ break;
+
+ case EQUAL :
+ returnVal = true;
+ break;
+ }
+ }
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Exiting: LTKVersionCompatibilityCheck::isFirstVersionHigher()" << endl;
+ return returnVal;
+
+}
+
+ELTKVersionComparison LTKVersionCompatibilityCheck::compareTokens(int firstTokenIntegerValue,
+ int secondTokenIntegerValue)
+{
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Entering: LTKVersionCompatibilityCheck::compareTokens()" << endl;
+
+ ELTKVersionComparison returnVal;
+
+ //int firstTokenIntegerValue =atoi((firstToken).c_str());
+ //int secondTokenIntegerValue =atoi((secondToken).c_str());
+
+ if (firstTokenIntegerValue > secondTokenIntegerValue )
+ {
+ returnVal = GREATER;
+ }
+ else if (firstTokenIntegerValue < secondTokenIntegerValue )
+ {
+ returnVal = LESSER;
+ }
+ else
+ {
+ returnVal = EQUAL;
+ }
+ LOG( LTKLogger::LTK_LOGLEVEL_DEBUG) <<
+ " Exiting: LTKVersionCompatibilityCheck::compareTokens()" << endl;
+
+ return returnVal;
+} \ No newline at end of file