@@ -376,30 +376,41 @@ func (wmsService *WMSService) GetAnnotatedLayers() []AnnotatedLayer {
376376}
377377
378378func (wmsService * WMSService ) GetAllLayers () (layers []Layer ) {
379- return wmsService .Layer .GetAllLayers ()
379+ return wmsService .Layer .FlattenLayers ()
380380}
381381
382- func (layer * Layer ) GetAllLayers () (layers []Layer ) {
383- layers = append (layers , * layer )
382+ // FlattenLayers - flattens the layer and its sublayers into one array
383+ func (layer * Layer ) FlattenLayers () []Layer {
384+ layers := []Layer {* layer }
384385 for _ , childLayer := range layer .Layers {
385- layers = append (layers , childLayer .GetAllLayers ()... )
386+ layers = append (layers , childLayer .FlattenLayers ()... )
386387 }
387- return
388+ return layers
389+ }
390+
391+ // GetAllSublayers - get all sublayers of a layer, the result does not include the layer itself
392+ func (layer * Layer ) GetAllSublayers () []Layer {
393+ layers := layer .Layers
394+ for _ , childLayer := range layer .Layers {
395+ layers = append (layers , childLayer .GetAllSublayers ()... )
396+ }
397+ return layers
388398}
389399
390- func (layer * Layer ) GetParent ( candidateLayer * Layer ) * Layer {
391- if candidateLayer .Layers == nil {
400+ func (wmsService * WMSService ) GetParentLayer ( layer Layer ) * Layer {
401+ if wmsService . Layer .Layers == nil {
392402 return nil
393403 }
394404
395- for _ , childLayer := range candidateLayer .Layers {
396- if childLayer .Name == layer .Name {
397- return candidateLayer
405+ for _ , middleLayer := range wmsService . Layer .Layers {
406+ if middleLayer .Name == layer .Name {
407+ return & wmsService . Layer
398408 }
399409
400- parent := layer .GetParent (& childLayer )
401- if parent != nil {
402- return parent
410+ for _ , bottomLayer := range middleLayer .Layers {
411+ if bottomLayer .Name == layer .Name {
412+ return & middleLayer
413+ }
403414 }
404415 }
405416 return nil
@@ -489,7 +500,7 @@ func (layer *Layer) setInheritedBoundingBoxes() {
489500}
490501
491502func (wms * WMS ) GetAllLayersWithLegend () (layers []Layer ) {
492- for _ , layer := range wms .Spec .Service .Layer . GetAllLayers () {
503+ for _ , layer := range wms .Spec .Service .GetAllLayers () {
493504 if ! layer .hasData () || len (layer .Styles ) == 0 {
494505 continue
495506 }
@@ -505,7 +516,7 @@ func (wms *WMS) GetAllLayersWithLegend() (layers []Layer) {
505516
506517func (wms * WMS ) GetUniqueTiffBlobKeys () []string {
507518 blobKeys := map [string ]bool {}
508- for _ , layer := range wms .Spec .Service .Layer . GetAllLayers () {
519+ for _ , layer := range wms .Spec .Service .GetAllLayers () {
509520 if layer .hasTIFData () {
510521 blobKeys [layer .Data .TIF .BlobKey ] = true
511522 }
@@ -536,7 +547,7 @@ func (wms *WMS) GetAuthority() *Authority {
536547}
537548
538549func (wms * WMS ) HasPostgisData () bool {
539- for _ , layer := range wms .Spec .Service .Layer . GetAllLayers () {
550+ for _ , layer := range wms .Spec .Service .GetAllLayers () {
540551 if layer .Data != nil && layer .Data .Postgis != nil {
541552 return true
542553 }
0 commit comments