Skip to content

Commit

Permalink
Fix Cluster Layers Filter Translation (#5205)
Browse files Browse the repository at this point in the history
  • Loading branch information
szekerest committed May 13, 2016
1 parent 1058774 commit cc03cee
Showing 1 changed file with 55 additions and 2 deletions.
57 changes: 55 additions & 2 deletions mapcluster.c
Original file line number Diff line number Diff line change
Expand Up @@ -1497,6 +1497,52 @@ int msClusterLayerOpen(layerObj *layer)
return MS_SUCCESS;
}

int msClusterLayerTranslateFilter(layerObj *layer, expressionObj *filter, char *filteritem)
{
msClusterLayerInfo* layerinfo = layer->layerinfo;

if (!layerinfo) {
msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerTranslateFilter()", layer->name);
return MS_FAILURE;
}

return layerinfo->srcLayer.vtable->LayerTranslateFilter(&layerinfo->srcLayer, filter, filteritem);
}

int msClusterLayerEscapeSQLParam(layerObj *layer, const char* pszString)
{
msClusterLayerInfo* layerinfo = layer->layerinfo;

if (!layerinfo) {
msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerEscapeSQLParam()", layer->name);
return MS_FAILURE;
}

return layerinfo->srcLayer.vtable->LayerEscapeSQLParam(&layerinfo->srcLayer, pszString);
}

int msClusterLayerGetAutoProjection(layerObj *layer, projectionObj* projection)
{
msClusterLayerInfo* layerinfo = layer->layerinfo;

if (!layerinfo) {
msSetError(MS_MISCERR, "Layer is not open: %s", "msClusterLayerGetAutoProjection()", layer->name);
return MS_FAILURE;
}

return layerinfo->srcLayer.vtable->LayerGetAutoProjection(&layerinfo->srcLayer, projection);
}

int msClusterLayerGetPaging(layerObj *layer)
{
return MS_FALSE;
}

void msClusterLayerEnablePaging(layerObj *layer, int value)
{
return;
}

void msClusterLayerCopyVirtualTable(layerVTableObj* vtable)
{
vtable->LayerInitItemInfo = msClusterLayerInitItemInfo;
Expand All @@ -1514,6 +1560,14 @@ void msClusterLayerCopyVirtualTable(layerVTableObj* vtable)

vtable->LayerGetNumFeatures = msClusterLayerGetNumFeatures;
vtable->LayerGetAutoStyle = msClusterLayerGetAutoStyle;
vtable->LayerTranslateFilter = msClusterLayerTranslateFilter;
/* vtable->LayerSupportsCommonFilters, use driver implementation */
vtable->LayerEscapeSQLParam = msClusterLayerEscapeSQLParam;
/* vtable->LayerEscapePropertyName, use driver implementation */

vtable->LayerEnablePaging = msClusterLayerEnablePaging;
vtable->LayerGetPaging = msClusterLayerGetPaging;
vtable->LayerGetAutoProjection = msClusterLayerGetAutoProjection;
}

#ifdef USE_CLUSTER_PLUGIN
Expand All @@ -1531,8 +1585,7 @@ PluginInitializeVirtualTable(layerVTableObj* vtable, layerObj *layer)

#endif

int
msClusterLayerInitializeVirtualTable(layerObj *layer)
int msClusterLayerInitializeVirtualTable(layerObj *layer)
{
assert(layer != NULL);
assert(layer->vtable != NULL);
Expand Down

0 comments on commit cc03cee

Please sign in to comment.