diff -r c7c26511138f -r 360bd6b35136 imgtools/imgcheck/src/exceptionimplementation.cpp --- a/imgtools/imgcheck/src/exceptionimplementation.cpp Wed Jun 16 16:51:40 2010 +0300 +++ b/imgtools/imgcheck/src/exceptionimplementation.cpp Wed Jun 23 16:56:47 2010 +0800 @@ -1,216 +1,203 @@ -/* -* Copyright (c) 2007-2009 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" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* This class is used to log and/or display the error, warning and status -* messages. This is a sigleton class. -* -*/ - - -/** - @file - @internalComponent - @released -*/ - -#include "exceptionimplementation.h" - -enum MessageArraySize{MAX=42}; - -/** -Message objects are created and these objects holds the error, warning and status -message required by imgcheck tool. - -@internalComponent -@released -*/ -struct Messages MessageArray[MAX]= -{ - {UNKNOWNIMAGETYPE, "Error: Image Type Unknown: '%s'"}, - {UNKNOWNPREFIX,"Error: Option has Un-Known Prefix: '%s'"}, - {VALUEEXPECTED,"Error: Value expected for option: '%s'"}, - {VALUENOTEXPECTED,"Error: Value not expected for option: '%s'"}, - {UNKNOWNOPTION,"Error: Unknown option: '%s'"}, - {QUIETMODESELECTED,"Error: Quiet mode selected while not generating XML report"}, - {NOIMAGE,"Error: No images specified in the input"}, - {NOROMIMAGE,"Warning: ROM image not passed"}, - {XMLOPTION,"Warning: XML file name specified while not generating XML report"}, - {NOMEMORY,"Error:%s:%d: Insuffient program memory"}, - {FILENAMETOOBIG,"Error:'%s':%d: Improper File Name Size"}, - {XMLNAMENOTVALID,"Error: Not a valid Xml File name"}, - {REPORTTYPEINVALID,"Error: Not a valid report type"}, - {FILEOPENFAIL,"Error:%s:%d: Cannot Open file: '%s'"}, - {XSLCREATIONFAILED,"Warning:%s:%d: Unable to Create XSL file: '%s'"}, - {UNEXPECTEDNUMBEROFVALUE, "Error: Unexpected number of values received for option: '%s'"}, - {INVALIDVIDVALUE, "Error: Invalid VID value: '%s'"}, - {UNKNOWNSUPPRESSVAL, "Error: Unknown suppress value: '%s'"}, - {ALLCHECKSSUPPRESSED, "Error: All Validations suppressed"}, - {SUPPRESSCOMBINEDWITHVIDVAL, "Warning: VID values received but VID validation suppressed"}, - {SIDALLCOMBINEDWITHSID, "Warning: --sidall option received but SID validation suppressed"}, - {DATAOVERFLOW, "Overflow: Input value '%s'"}, - {VALIDIMAGE, "Success: Image(s) are valid"}, - {IMAGENAMEALREADYRECEIVED, "Warning: Image '%s' passed in multiple times, first one is considered and rest are ignored."}, - {UNKNOWNDBGVALUE , "Error: Invalid value is passed to --dbg, expected values are TRUE or FALSE."}, - {ONLYSINGLEDIRECTORYEXPECTED , "Error: Only single directory should be passed as input when E32Input is enabled."}, - {INVALIDDIRECTORY , "Error: Invalid directory or E32 file received as E32Input."}, - {INCORRECTVALUES , "Warning: The status reported for Dependency and SID check may not be correct in E32 input mode."}, - {NOVALIDATIONSENABLED , "Error: No validations are enabled."}, - {NOEXEPRESENT, "Error: No valid executables are present"}, - {E32INPUTNOTEXIST, "Error: Invalid E32 input '%s'"}, - {VALIDE32INPUT, "Success: E32 executable(s) are validated"}, - // Add the New Error and warning messages above this line - {GATHERINGDEPENDENCIES,"Gathering dependencies for '%s'"}, - {WRITINGINTOREPORTER,"'%s' Checker writing data into Reporter"}, - {COLLECTDEPDATA,"Collecting dependency data for '%s'"}, - {NOOFEXECUTABLES,"No of executables in '%s': %d"}, - {NOOFHEXECUTABLES,"No of hidden executables in '%s': %d"}, - {READINGIMAGE,"Reading image: '%s'"}, - {GATHERINGIDDATA,"Gathering %s data for '%s'"}, - {GENERATINGREPORT,"Generating '%s' Report"}, - {REPORTGENERATION,"Report generation %s"}, - //Add the new status informations below this line - {NODISKSPACE,"Error: No enough disk space for %s"} -}; - -/** -Static variables used to construct singleton class are initialized - -@internalComponent -@released -*/ -unsigned int ExceptionImplementation::iCmdFlag = 0; -ExceptionImplementation* ExceptionImplementation::iInstance = KNull; - -/** -Static function provides the way to get the instance of ExceptionImplementation -class. It takes aCmdFlag as argument, this argument contains the specified -commandline options and this flag is used to display the status information to -standard output upon receiving verbose mode flag. - -@internalComponent -@released - -@param aCmdFlag - has all the options received in commandline. - -@return - returns the instance -*/ -ExceptionImplementation* ExceptionImplementation::Instance(unsigned int aCmdFlag) -{ - if(iInstance == KNull) - { - iCmdFlag = aCmdFlag; - iInstance = new ExceptionImplementation(); - } - return iInstance; -} - -/** -Static function to delete the instance. - -@internalComponent -@released -*/ -void ExceptionImplementation::DeleteInstance() -{ - DELETE(iInstance); -} - -/** -Constructor opens the output stream and traverses through MessageArray objects to -initialize iMessage map. This map is used later to log the messages. - -@internalComponent -@released -*/ -ExceptionImplementation::ExceptionImplementation() -:iMsgIndex(0) -{ - iLogStream.open(gLogFileName.c_str(),Ios::out); - int i; - for(i = 0; i < MAX; i++) - { - iMessage.insert(std::make_pair(MessageArray[i].iIndex,MessageArray[i].iMessage)); - } -} - -/** -Destructor closes the output stream opened during construction. - -@internalComponent -@released -*/ -ExceptionImplementation::~ExceptionImplementation() -{ - iLogStream.close(); -} - -/** -Function returns the message equivalent to the recived enum value. - -@internalComponent -@released - -@param aMsgIndex - enum value -*/ -String& ExceptionImplementation::Message(const int aMsgIndex) -{ - iMsgIndex = aMsgIndex; - return iMessage[aMsgIndex]; -} - -/** -Function to log the error, warning and status information. -Irrespective of the messgae type all the messages are logged into the imgcheck -logfile. The warning and error messages are needed to be displayed on the command -prompt always. But the status information is displayed at standard output only if -the verbose mode is selected by the user. - -@internalComponent -@released - -@param aMsgIndex - enum value -*/ -void ExceptionImplementation::Log(const String aMsg) -{ - iLogStream << aMsg.c_str() << "\n"; - - if(iCmdFlag & KVerbose) - { - cout << aMsg.c_str() << endl; - } -} - -/** -Function to report the error and warning information. -Irrespective of the messgae type all the messages are logged into the imgcheck -logfile. The warning and error messages are needed to be displayed on the command -prompt always. - -@internalComponent -@released - -@param aMsgIndex - enum value -*/ -void ExceptionImplementation::Report(const String aMsg) -{ - iLogStream << aMsg.c_str() << "\n"; - if(aMsg.find("Success") != String::npos) - { - cout << aMsg.c_str() << endl; - } - else - { - cerr << aMsg.c_str() << endl; - } -} +/* +* Copyright (c) 2007-2009 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" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* This class is used to log and/or display the error, warning and status +* messages. This is a sigleton class. +* +*/ + + +/** +@file +@internalComponent +@released +*/ + +#include "exceptionimplementation.h" + +enum MessageArraySize{MAX=42}; + +/** +Message objects are created and these objects holds the error, warning and status +message required by imgcheck tool. + +@internalComponent +@released +*/ +struct Messages MessageArray[MAX]= { + {UNKNOWNIMAGETYPE, "Error: Image Type Unknown: '%s'"}, + {UNKNOWNPREFIX,"Error: Option has Un-Known Prefix: '%s'"}, + {VALUEEXPECTED,"Error: Value expected for option: '%s'"}, + {VALUENOTEXPECTED,"Error: Value not expected for option: '%s'"}, + {UNKNOWNOPTION,"Error: Unknown option: '%s'"}, + {QUIETMODESELECTED,"Error: Quiet mode selected while not generating XML report"}, + {NOIMAGE,"Error: No images specified in the input"}, + {NOROMIMAGE,"Warning: ROM image not passed"}, + {XMLOPTION,"Warning: XML file name specified while not generating XML report"}, + {NOMEMORY,"Error:%s:%d: Insuffient program memory"}, + {FILENAMETOOBIG,"Error:'%s':%d: Improper File Name Size"}, + {XMLNAMENOTVALID,"Error: Not a valid Xml File name"}, + {REPORTTYPEINVALID,"Error: Not a valid report type"}, + {FILEOPENFAIL,"Error:%s:%d: Cannot Open file: '%s'"}, + {XSLCREATIONFAILED,"Warning:%s:%d: Unable to Create XSL file: '%s'"}, + {UNEXPECTEDNUMBEROFVALUE, "Error: Unexpected number of values received for option: '%s'"}, + {INVALIDVIDVALUE, "Error: Invalid VID value: '%s'"}, + {UNKNOWNSUPPRESSVAL, "Error: Unknown suppress value: '%s'"}, + {ALLCHECKSSUPPRESSED, "Error: All Validations suppressed"}, + {SUPPRESSCOMBINEDWITHVIDVAL, "Warning: VID values received but VID validation suppressed"}, + {SIDALLCOMBINEDWITHSID, "Warning: --sidall option received but SID validation suppressed"}, + {DATAOVERFLOW, "Overflow: Input value '%s'"}, + {VALIDIMAGE, "Success: Image(s) are valid"}, + {IMAGENAMEALREADYRECEIVED, "Warning: Image '%s' passed in multiple times, first one is considered and rest are ignored."}, + {UNKNOWNDBGVALUE , "Error: Invalid value is passed to --dbg, expected values are TRUE or FALSE."}, + {ONLYSINGLEDIRECTORYEXPECTED , "Error: Only single directory should be passed as input when E32Input is enabled."}, + {INVALIDDIRECTORY , "Error: Invalid directory or E32 file received as E32Input."}, + {INCORRECTVALUES , "Warning: The status reported for Dependency and SID check may not be correct in E32 input mode."}, + {NOVALIDATIONSENABLED , "Error: No validations are enabled."}, + {NOEXEPRESENT, "Error: No valid executables are present"}, + {E32INPUTNOTEXIST, "Error: Invalid E32 input '%s'"}, + {VALIDE32INPUT, "Success: E32 executable(s) are validated"}, + // Add the New Error and warning messages above this line + {GATHERINGDEPENDENCIES,"Gathering dependencies for '%s'"}, + {WRITINGINTOREPORTER,"'%s' Checker writing data into Reporter"}, + {COLLECTDEPDATA,"Collecting dependency data for '%s'"}, + {NOOFEXECUTABLES,"No of executables in '%s': %d"}, + {NOOFHEXECUTABLES,"No of hidden executables in '%s': %d"}, + {READINGIMAGE,"Reading image: '%s'"}, + {GATHERINGIDDATA,"Gathering %s data for '%s'"}, + {GENERATINGREPORT,"Generating '%s' Report"}, + {REPORTGENERATION,"Report generation %s"}, + //Add the new status informations below this line + {NODISKSPACE,"Error: No enough disk space for %s"} +}; + +/** +Static variables used to construct singleton class are initialized + +@internalComponent +@released +*/ +unsigned int ExceptionImplementation::iCmdFlag = 0; +ExceptionImplementation* ExceptionImplementation::iInstance = KNull; + +/** +Static function provides the way to get the instance of ExceptionImplementation +class. It takes aCmdFlag as argument, this argument contains the specified +commandline options and this flag is used to display the status information to +standard output upon receiving verbose mode flag. + +@internalComponent +@released + +@param aCmdFlag - has all the options received in commandline. + +@return - returns the instance +*/ +ExceptionImplementation* ExceptionImplementation::Instance(unsigned int aCmdFlag) { + if(iInstance == KNull) { + iCmdFlag = aCmdFlag; + iInstance = new ExceptionImplementation(); + } + return iInstance; +} + +/** +Static function to delete the instance. + +@internalComponent +@released +*/ +void ExceptionImplementation::DeleteInstance() { + DELETE(iInstance); +} + +/** +Constructor opens the output stream and traverses through MessageArray objects to +initialize iMessage map. This map is used later to log the messages. + +@internalComponent +@released +*/ +ExceptionImplementation::ExceptionImplementation() +:iMsgIndex(0) { + iLogStream.open(gLogFileName.c_str(),ios_base::out); + int i; + for(i = 0; i < MAX; i++) { + iMessage.insert(make_pair(MessageArray[i].iIndex,MessageArray[i].iMessage)); + } +} + +/** +Destructor closes the output stream opened during construction. + +@internalComponent +@released +*/ +ExceptionImplementation::~ExceptionImplementation() { + iLogStream.close(); +} + +/** +Function returns the message equivalent to the recived enum value. + +@internalComponent +@released + +@param aMsgIndex - enum value +*/ +string& ExceptionImplementation::Message(const int aMsgIndex) { + iMsgIndex = aMsgIndex; + return iMessage[aMsgIndex]; +} + +/** +Function to log the error, warning and status information. +Irrespective of the messgae type all the messages are logged into the imgcheck +logfile. The warning and error messages are needed to be displayed on the command +prompt always. But the status information is displayed at standard output only if +the verbose mode is selected by the user. + +@internalComponent +@released + +@param aMsgIndex - enum value +*/ +void ExceptionImplementation::Log(const string aMsg) { + iLogStream << aMsg.c_str() << "\n"; + + if(iCmdFlag & KVerbose) { + cout << aMsg.c_str() << endl; + } +} + +/** +Function to report the error and warning information. +Irrespective of the messgae type all the messages are logged into the imgcheck +logfile. The warning and error messages are needed to be displayed on the command +prompt always. + +@internalComponent +@released + +@param aMsgIndex - enum value +*/ +void ExceptionImplementation::Report(const string aMsg) { + iLogStream << aMsg.c_str() << "\n"; + if(aMsg.find("Success") != string::npos) { + cout << aMsg.c_str() << endl; + } + else { + cerr << aMsg.c_str() << endl; + } +}