1 /*
2     Copyright (c) 2008-2009 NetAllied Systems GmbH
3 
4     This file is part of COLLADASaxFrameworkLoader.
5 
6     Licensed under the MIT Open Source License,
7     for details please see LICENSE file or the website
8     http://www.opensource.org/licenses/mit-license.php
9 */
10 
11 #include "COLLADASaxFWLStableHeaders.h"
12 #include "COLLADASaxFWLSaxFWLError.h"
13 
14 
15 #define ERRORTYPE2STRING(typename) case typename: errorMessage << #typename; break;
16 
17 namespace COLLADASaxFWL
18 {
19 
20     //------------------------------
SaxFWLError(ErrorType errorType,String errorMessage,IError::Severity severity)21 	SaxFWLError::SaxFWLError( ErrorType errorType, String errorMessage, IError::Severity severity )
22 		: mErrorType(errorType)
23 		, mSeverity(severity)
24 		, mErrorMessage(errorMessage)
25 		, mLineNumber(0)
26 		, mColumnNumber(0)
27 	{
28 	}
29 
30     //------------------------------
~SaxFWLError()31 	SaxFWLError::~SaxFWLError()
32 	{
33 	}
34 
35     //------------------------------
getFullErrorMessage() const36 	String SaxFWLError::getFullErrorMessage() const
37 	{
38 		std::stringstream errorMessage;
39 		if ( mSeverity == IError::SEVERITY_CRITICAL )
40 			errorMessage << "Critical error: ";
41 		else
42 			errorMessage << "Error: ";
43 
44 
45 		switch ( mErrorType )
46 		{
47 			ERRORTYPE2STRING(ERROR_UNRESOLVED_REFERENCE);
48 			ERRORTYPE2STRING(ERROR_UNRESOLVED_FORMULA);
49 			ERRORTYPE2STRING(ERROR_UNRESOLVED_PARAMETER);
50 			ERRORTYPE2STRING(ERROR_PARAMETER_COUNT_DOESNOT_MATCH);
51 			ERRORTYPE2STRING(ERROR_DATA_NOT_VALID);
52 		default:
53 			COLLADABU_ASSERT(false);
54 		}
55 
56 		errorMessage << ": ";
57 
58 		if ( mLineNumber > 0)
59 			errorMessage << " Line: " << mLineNumber;
60 
61 		if ( mColumnNumber > 0)
62 			errorMessage << " Column: " << mColumnNumber;
63 
64 		errorMessage << mErrorMessage ;
65 
66 		return errorMessage.str();
67 	}
68 
69 } // namespace COLLADASaxFWL
70