[mapguide-commits] r6197 - in trunk/MgDev: Common/MdfModel
Common/MdfParser Common/Schema Server/src/Services/Mapping
Server/src/Services/Rendering
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Nov 3 01:45:10 EDT 2011
Author: liuar
Date: 2011-11-02 22:45:10 -0700 (Wed, 02 Nov 2011)
New Revision: 6197
Modified:
trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp
trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h
trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp
trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h
trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp
trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h
trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp
trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h
trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp
trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp
trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp
trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp
trunk/MgDev/Common/Schema/ProfileResult-2.4.0.xsd
trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp
trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
Log:
RFC 110 Supplemental -
Error handling in Profiling API.
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -61,6 +61,26 @@
}
//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Error property.
+// RETURNS: The error message which describes labels rendering failure.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLabelsResult::GetError() const
+{
+ return this->m_strError;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Error property.
+// PARAMETERS:
+// Input:
+// pstrError - The error message which describes labels rendering failure.
+//-------------------------------------------------------------------------
+void ProfileRenderLabelsResult::SetError(const MdfString& pstrError)
+{
+ this->m_strError = pstrError;
+}
+
+//-------------------------------------------------------------------------
// PURPOSE: For memory leak testing.
//-------------------------------------------------------------------------
#ifdef _WIN32
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLabelsResult.h 2011-11-03 05:45:10 UTC (rev 6197)
@@ -42,6 +42,11 @@
const double GetRenderTime() const;
void SetRenderTime(const double& dRenderTime);
+ // Property: Error
+ // Error message if rendering labels failed.
+ const MdfString& GetError() const;
+ void SetError(const MdfString& pstrError);
+
//#ifdef _WIN32
#if _DEBUG
// for memory leak testing
@@ -57,6 +62,7 @@
// Data members
// See corresponding properties for descriptions
double m_dRenderTime;
+ MdfString m_strError;
};
END_NAMESPACE_MDFMODEL
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -228,6 +228,26 @@
}
//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Error property.
+// RETURNS: The error message which describes layer rendering failure.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderLayerResult::GetError() const
+{
+ return this->m_strError;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Error property.
+// PARAMETERS:
+// Input:
+// pstrError - The error message which describes layer rendering failure.
+//-------------------------------------------------------------------------
+void ProfileRenderLayerResult::SetError(const MdfString& pstrError)
+{
+ this->m_strError = pstrError;
+}
+
+//-------------------------------------------------------------------------
// PURPOSE: For memory leak testing.
//-------------------------------------------------------------------------
#ifdef _WIN32
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderLayerResult.h 2011-11-03 05:45:10 UTC (rev 6197)
@@ -81,6 +81,11 @@
const double GetRenderTime() const;
void SetRenderTime(const double& dRenderTime);
+ // Property: Error
+ // Error message if render layer failed.
+ const MdfString& GetError() const;
+ void SetError(const MdfString& pstrError);
+
//#ifdef _WIN32
#if _DEBUG
// for memory leak testing
@@ -103,6 +108,7 @@
ScaleRange* m_scaleRange;
MdfString m_strFilter;
double m_dRenderTime;
+ MdfString m_strError;
};
typedef MdfOwnerCollection<ProfileRenderLayerResult> ProfileRenderLayerResultCollection;
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -416,6 +416,26 @@
}
//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Error property.
+// RETURNS: The error message which describes map rendering failure.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderMapResult::GetError() const
+{
+ return this->m_strError;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Error property.
+// PARAMETERS:
+// Input:
+// pstrError - The error message which describes map rendering failure.
+//-------------------------------------------------------------------------
+void ProfileRenderMapResult::SetError(const MdfString& pstrError)
+{
+ this->m_strError = pstrError;
+}
+
+//-------------------------------------------------------------------------
// PURPOSE: For memory leak testing.
//-------------------------------------------------------------------------
#ifdef _WIN32
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderMapResult.h 2011-11-03 05:45:10 UTC (rev 6197)
@@ -118,6 +118,11 @@
const double GetCreateImageTime() const;
void SetCreateImageTime(const double& dCreateImageTime);
+ // Property: Error
+ // Error message if rendering map failed.
+ const MdfString& GetError() const;
+ void SetError(const MdfString& pstrError);
+
//#ifdef _WIN32
#if _DEBUG
// for memory leak testing
@@ -145,6 +150,7 @@
ProfileRenderWatermarksResult* m_profileRenderWatermarksResult;
ProfileRenderLabelsResult* m_profileRenderLabelsResult;
double m_dCreateImageTime;
+ MdfString m_strError;
};
END_NAMESPACE_MDFMODEL
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -101,6 +101,26 @@
}
//-------------------------------------------------------------------------
+// PURPOSE: Accessor method for the Error property.
+// RETURNS: The error message which describes watermark rendering failure.
+//-------------------------------------------------------------------------
+const MdfString& ProfileRenderWatermarkResult::GetError() const
+{
+ return this->m_strError;
+}
+
+//-------------------------------------------------------------------------
+// PURPOSE: Accessor method to the Error property.
+// PARAMETERS:
+// Input:
+// pstrError - The error message which describes watermark rendering failure.
+//-------------------------------------------------------------------------
+void ProfileRenderWatermarkResult::SetError(const MdfString& pstrError)
+{
+ this->m_strError = pstrError;
+}
+
+//-------------------------------------------------------------------------
// PURPOSE: For memory leak testing.
//-------------------------------------------------------------------------
#ifdef _WIN32
Modified: trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h
===================================================================
--- trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfModel/ProfileRenderWatermarkResult.h 2011-11-03 05:45:10 UTC (rev 6197)
@@ -54,6 +54,11 @@
const double GetRenderTime() const;
void SetRenderTime(const double& dRenderTime);
+ // Property: Error
+ // Error message if rendering watermark failed.
+ const MdfString& GetError() const;
+ void SetError(const MdfString& pstrError);
+
//#ifdef _WIN32
#if _DEBUG
// for memory leak testing
@@ -71,6 +76,7 @@
MdfString m_strResourceId;
MdfString m_strPositionType;
double m_dRenderTime;
+ MdfString m_strError;
};
typedef MdfOwnerCollection<ProfileRenderWatermarkResult> ProfileRenderWatermarkResultCollection;
Modified: trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLabelsResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -26,7 +26,8 @@
CREATE_ELEMENT_MAP;
ELEM_MAP_ENTRY(1, ProfileRenderLabelsResult);
ELEM_MAP_ENTRY(2, RenderTime);
-ELEM_MAP_ENTRY(3, ExtendedData1);
+ELEM_MAP_ENTRY(3, Error);
+ELEM_MAP_ENTRY(4, ExtendedData1);
IOProfileRenderLabelsResult::IOProfileRenderLabelsResult(Version& version) : SAX2ElementHandler(version)
@@ -74,6 +75,14 @@
fd << DoubleToStr(profileRenderLabelsResult->GetRenderTime());
fd << endStr(sRenderTime) << std::endl;
+ // Property: Error
+ if(!profileRenderLabelsResult->GetError().empty())
+ {
+ fd << tab.tab() << startStr(sError);
+ fd << EncodeString(profileRenderLabelsResult->GetError());
+ fd << endStr(sError) << std::endl;
+ }
+
// Write any unknown XML / extended data
IOUnknown::Write(fd, profileRenderLabelsResult->GetUnknownXml(), version, tab);
Modified: trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderLayerResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -34,7 +34,8 @@
ELEM_MAP_ENTRY(7, ScaleRange);
ELEM_MAP_ENTRY(8, Filter);
ELEM_MAP_ENTRY(9, RenderTime);
-ELEM_MAP_ENTRY(10, ExtendedData1);
+ELEM_MAP_ENTRY(10, Error);
+ELEM_MAP_ENTRY(11, ExtendedData1);
IOProfileRenderLayerResult::IOProfileRenderLayerResult(Version& version) : SAX2ElementHandler(version)
@@ -117,6 +118,14 @@
fd << DoubleToStr(profileRenderLayerResult->GetRenderTime());
fd << endStr(sRenderTime) << std::endl;
+ // Property: Error
+ if(!profileRenderLayerResult->GetError().empty())
+ {
+ fd << tab.tab() << startStr(sError);
+ fd << EncodeString(profileRenderLayerResult->GetError());
+ fd << endStr(sError) << std::endl;
+ }
+
// Write any unknown XML / extended data
IOUnknown::Write(fd, profileRenderLayerResult->GetUnknownXml(), version, tab);
Modified: trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderMapResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -44,7 +44,8 @@
ELEM_MAP_ENTRY(13, ProfileRenderWatermarksResult);
ELEM_MAP_ENTRY(14, ProfileRenderLabelsResult);
ELEM_MAP_ENTRY(15, CreateImageTime);
-ELEM_MAP_ENTRY(16, ExtendedData1);
+ELEM_MAP_ENTRY(16, Error);
+ELEM_MAP_ENTRY(17, ExtendedData1);
IOProfileRenderMapResult::IOProfileRenderMapResult(Version& version) : SAX2ElementHandler(version)
@@ -154,6 +155,14 @@
fd << DoubleToStr(profileRenderMapResult->GetCreateImageTime());
fd << endStr(sCreateImageTime) << std::endl;
+ // Property: Error
+ if(!profileRenderMapResult->GetError().empty())
+ {
+ fd << tab.tab() << startStr(sError);
+ fd << EncodeString(profileRenderMapResult->GetError());
+ fd << endStr(sError) << std::endl;
+ }
+
// Write any unknown XML / extended data
IOUnknown::Write(fd, profileRenderMapResult->GetUnknownXml(), version, tab);
Modified: trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp
===================================================================
--- trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/MdfParser/IOProfileRenderWatermarkResult.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -28,7 +28,8 @@
ELEM_MAP_ENTRY(2, ResourceId);
ELEM_MAP_ENTRY(3, PositionType);
ELEM_MAP_ENTRY(4, RenderTime);
-ELEM_MAP_ENTRY(5, ExtendedData1);
+ELEM_MAP_ENTRY(5, Error);
+ELEM_MAP_ENTRY(6, ExtendedData1);
IOProfileRenderWatermarkResult::IOProfileRenderWatermarkResult(Version& version) : SAX2ElementHandler(version)
@@ -86,6 +87,14 @@
fd << DoubleToStr(profileRenderWatermarkResult->GetRenderTime());
fd << endStr(sRenderTime) << std::endl;
+ // Property: Error
+ if(!profileRenderWatermarkResult->GetError().empty())
+ {
+ fd << tab.tab() << startStr(sError);
+ fd << EncodeString(profileRenderWatermarkResult->GetError());
+ fd << endStr(sError) << std::endl;
+ }
+
// Write any unknown XML / extended data
IOUnknown::Write(fd, profileRenderWatermarkResult->GetUnknownXml(), version, tab);
Modified: trunk/MgDev/Common/Schema/ProfileResult-2.4.0.xsd
===================================================================
--- trunk/MgDev/Common/Schema/ProfileResult-2.4.0.xsd 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Common/Schema/ProfileResult-2.4.0.xsd 2011-11-03 05:45:10 UTC (rev 6197)
@@ -98,6 +98,11 @@
<xs:documentation>The time of rendering stylized map to an image.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="Error" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Error message if rendering map failed.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@@ -165,6 +170,11 @@
<xs:documentation>The time of stylizing labels in the map.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="Error" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Error message if rendering labels failed.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@@ -213,6 +223,11 @@
<xs:documentation>The time of stylizing a paricular layer in the map.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="Error" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Error message if rendering layer failed.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
@@ -236,6 +251,11 @@
<xs:documentation>The time of stylizing a paricular watermark in the map.</xs:documentation>
</xs:annotation>
</xs:element>
+ <xs:element name="Error" type="xs:string" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Error message if rendering watermark failed.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="ExtendedData1" type="ExtendedDataType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Modified: trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Server/src/Services/Mapping/MappingUtil.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -897,6 +897,25 @@
#endif
// TODO could throw here depending on a serverconfig setting (RFC64)
// throw exception;
+
+
+ if(NULL != pPRLsResult)
+ {
+ ProfileRenderLayerResultCollection* pPRLResultColl = pPRLsResult->GetProfileRenderLayerResults();
+
+ // Get current ProfileRenderLayerResult
+ ProfileRenderLayerResult* pPRLResult = pPRLResultColl->GetAt(pPRLResultColl->GetCount()-1); //TODO: check index
+
+ // Calculate the time spent on stylizing layer
+ double stylizeLayerTime = MgTimerUtil::GetTime() - pPRLResult->GetRenderTime();
+ pPRLResult->SetRenderTime(stylizeLayerTime);
+
+ Ptr<MgResourceIdentifier> layerid = mapLayer->GetLayerDefinition();
+ pPRLResult->SetResourceId(layerid->ToString());
+ pPRLResult->SetLayerName(mapLayer->GetName());
+
+ pPRLResult->SetError(message);
+ }
} // if exception
} // for all layers
Modified: trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp
===================================================================
--- trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp 2011-11-01 07:05:25 UTC (rev 6196)
+++ trunk/MgDev/Server/src/Services/Rendering/ServerRenderingService.cpp 2011-11-03 05:45:10 UTC (rev 6197)
@@ -404,8 +404,24 @@
// call the internal helper API to do all the stylization overhead work
ret = RenderMapInternal(map, selection, roLayers, dr.get(), width, height, width, height, scale, extent, false, options, true, pPRMResult);
- MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderDynamicOverlay")
+ MG_CATCH(L"MgServerRenderingService.RenderDynamicOverlay")
+ if (mgException.p)
+ {
+ if(NULL != pPRMResult)
+ {
+ MgServerManager* serverManager = MgServerManager::GetInstance();
+ STRING locale = (NULL == serverManager)? MgResources::DefaultMessageLocale : serverManager->GetDefaultMessageLocale();
+ Ptr<MgResourceIdentifier> mapResId = map->GetMapDefinition();
+ pPRMResult->SetResourceId(mapResId ? mapResId->ToString() : L"");
+
+ STRING message = mgException->GetExceptionMessage(locale);
+ pPRMResult->SetError(message);
+ }
+
+ MG_THROW()
+ }
+
return ret.Detach();
}
@@ -713,8 +729,23 @@
// call the internal helper API to do all the stylization overhead work
ret = RenderMapInternal(map, selection, NULL, dr.get(), width, height, width, height, format, scale, b, false, bKeepSelection, true, pPRMResult);
- MG_CATCH_AND_THROW(L"MgServerRenderingService.RenderMap")
+ MG_CATCH(L"MgServerRenderingService.RenderMap")
+ if (mgException.p)
+ {
+ if(NULL != pPRMResult)
+ {
+ MgServerManager* serverManager = MgServerManager::GetInstance();
+ STRING locale = (NULL == serverManager)? MgResources::DefaultMessageLocale : serverManager->GetDefaultMessageLocale();
+ Ptr<MgResourceIdentifier> mapResId = map->GetMapDefinition();
+ pPRMResult->SetResourceId(mapResId ? mapResId->ToString() : L"");
+
+ STRING message = mgException->GetExceptionMessage(locale);
+ pPRMResult->SetError(message);
+ }
+
+ MG_THROW()
+ }
return ret.Detach();
}
@@ -1285,7 +1316,7 @@
{
//if we have a valid transform, get the request geom in layer's space
queryGeom = SAFE_ADDREF(geometry);
-
+ STRING geomTextSource = queryGeom->ToAwkt(true);
if (trans)
{
//get selection geometry in layer space
@@ -1870,6 +1901,21 @@
{
failLoadedIds.Add(resourceId);
}
+
+ if(NULL != pPRWsResult)
+ {
+ ProfileRenderWatermarkResultCollection* pPRWResultColl = pPRWsResult->GetProfileRenderWatermarkResults();
+ ProfileRenderWatermarkResult* pPRWResult = pPRWResultColl->GetAt(pPRWResultColl->GetCount()-1); // TODO: check index
+
+ // Calculate the time spent on stylizing watermark
+ double stylizeWatermarkTime = MgTimerUtil::GetTime() - pPRWResult->GetRenderTime();
+ pPRWResult->SetRenderTime(stylizeWatermarkTime);
+
+ pPRWResult->SetResourceId(resourceId);
+
+ STRING message = mgException->GetExceptionMessage(locale);
+ pPRWResult->SetError(message);
+ }
}
}
}
More information about the mapguide-commits
mailing list