@@ -66,120 +66,126 @@ void QgsWFSProjectParser::featureTypeList( QDomElement& parentElement, QDomDocum
66
66
QString type = elem.attribute ( " type" );
67
67
if ( type == " vector" )
68
68
{
69
+ QString layerId = mProjectParser ->layerId ( elem );
70
+ if ( !wfsLayersId.contains ( layerId ) )
71
+ {
72
+ continue ;
73
+ }
69
74
QgsMapLayer *layer = mProjectParser ->createLayerFromElement ( elem );
70
- if ( layer && wfsLayersId. contains ( layer-> id () ) )
75
+ if ( ! layer )
71
76
{
72
- QgsDebugMsg ( QString ( " add layer %1 to map" ).arg ( layer->id () ) );
73
- layerMap.insert ( layer->id (), layer );
74
-
75
- QDomElement layerElem = doc.createElement ( " FeatureType" );
76
- QDomElement nameElem = doc.createElement ( " Name" );
77
- // We use the layer name even though it might not be unique.
78
- // Because the id sometimes contains user/pw information and the name is more descriptive
79
- QString typeName = layer->name ();
80
- typeName = typeName.replace ( " " , " _" );
81
- QDomText nameText = doc.createTextNode ( typeName );
82
- nameElem.appendChild ( nameText );
83
- layerElem.appendChild ( nameElem );
84
-
85
- QDomElement titleElem = doc.createElement ( " Title" );
86
- QString titleName = layer->title ();
87
- if ( titleName.isEmpty () )
88
- {
89
- titleName = layer->name ();
90
- }
91
- QDomText titleText = doc.createTextNode ( titleName );
92
- titleElem.appendChild ( titleText );
93
- layerElem.appendChild ( titleElem );
77
+ continue ;
78
+ }
79
+ QgsDebugMsg ( QString ( " add layer %1 to map" ).arg ( layer->id () ) );
80
+ layerMap.insert ( layer->id (), layer );
94
81
95
- QDomElement abstractElem = doc.createElement ( " Abstract " );
96
- QString abstractName = layer-> abstract ( );
97
- if ( abstractName. isEmpty () )
98
- {
99
- abstractName = " " ;
100
- }
101
- QDomText abstractText = doc.createTextNode ( abstractName );
102
- abstractElem .appendChild ( abstractText );
103
- layerElem.appendChild ( abstractElem );
82
+ QDomElement layerElem = doc.createElement ( " FeatureType " );
83
+ QDomElement nameElem = doc. createElement ( " Name " );
84
+ // We use the layer name even though it might not be unique.
85
+ // Because the id sometimes contains user/pw information and the name is more descriptive
86
+ QString typeName = layer-> name () ;
87
+ typeName = typeName. replace ( " " , " _ " );
88
+ QDomText nameText = doc.createTextNode ( typeName );
89
+ nameElem .appendChild ( nameText );
90
+ layerElem.appendChild ( nameElem );
104
91
105
- // keyword list
106
- if ( !layer->keywordList ().isEmpty () )
107
- {
108
- QDomElement keywordsElem = doc.createElement ( " Keywords" );
109
- QDomText keywordsText = doc.createTextNode ( layer->keywordList () );
110
- keywordsElem.appendChild ( keywordsText );
111
- layerElem.appendChild ( keywordsElem );
112
- }
92
+ QDomElement titleElem = doc.createElement ( " Title" );
93
+ QString titleName = layer->title ();
94
+ if ( titleName.isEmpty () )
95
+ {
96
+ titleName = layer->name ();
97
+ }
98
+ QDomText titleText = doc.createTextNode ( titleName );
99
+ titleElem.appendChild ( titleText );
100
+ layerElem.appendChild ( titleElem );
113
101
114
- // appendExGeographicBoundingBox( layerElem, doc, layer->extent(), layer->crs() );
102
+ QDomElement abstractElem = doc.createElement ( " Abstract" );
103
+ QString abstractName = layer->abstract ();
104
+ if ( abstractName.isEmpty () )
105
+ {
106
+ abstractName = " " ;
107
+ }
108
+ QDomText abstractText = doc.createTextNode ( abstractName );
109
+ abstractElem.appendChild ( abstractText );
110
+ layerElem.appendChild ( abstractElem );
115
111
116
- QDomElement srsElem = doc.createElement ( " SRS" );
117
- QDomText srsText = doc.createTextNode ( layer->crs ().authid () );
118
- srsElem.appendChild ( srsText );
119
- layerElem.appendChild ( srsElem );
112
+ // keyword list
113
+ if ( !layer->keywordList ().isEmpty () )
114
+ {
115
+ QDomElement keywordsElem = doc.createElement ( " Keywords" );
116
+ QDomText keywordsText = doc.createTextNode ( layer->keywordList () );
117
+ keywordsElem.appendChild ( keywordsText );
118
+ layerElem.appendChild ( keywordsElem );
119
+ }
120
120
121
- // wfs:Operations element
122
- QDomElement operationsElement = doc.createElement ( " Operations" /* wfs:Operations*/ );
123
- // wfs:Query element
124
- QDomElement queryElement = doc.createElement ( " Query" /* wfs:Query*/ );
125
- operationsElement.appendChild ( queryElement );
121
+ // appendExGeographicBoundingBox( layerElem, doc, layer->extent(), layer->crs() );
126
122
127
- QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer*>( layer );
128
- QgsVectorDataProvider* provider = vlayer->dataProvider ();
129
- if (( provider->capabilities () & QgsVectorDataProvider::AddFeatures ) && wfstInsertLayersId.contains ( layer->id () ) )
130
- {
131
- // wfs:Insert element
132
- QDomElement insertElement = doc.createElement ( " Insert" /* wfs:Insert*/ );
133
- operationsElement.appendChild ( insertElement );
134
- }
135
- if (( provider->capabilities () & QgsVectorDataProvider::ChangeAttributeValues ) &&
136
- ( provider->capabilities () & QgsVectorDataProvider::ChangeGeometries ) &&
137
- wfstUpdateLayersId.contains ( layer->id () ) )
138
- {
139
- // wfs:Update element
140
- QDomElement updateElement = doc.createElement ( " Update" /* wfs:Update*/ );
141
- operationsElement.appendChild ( updateElement );
142
- }
143
- if (( provider->capabilities () & QgsVectorDataProvider::DeleteFeatures ) && wfstDeleteLayersId.contains ( layer->id () ) )
144
- {
145
- // wfs:Delete element
146
- QDomElement deleteElement = doc.createElement ( " Delete" /* wfs:Delete*/ );
147
- operationsElement.appendChild ( deleteElement );
148
- }
123
+ QDomElement srsElem = doc.createElement ( " SRS" );
124
+ QDomText srsText = doc.createTextNode ( layer->crs ().authid () );
125
+ srsElem.appendChild ( srsText );
126
+ layerElem.appendChild ( srsElem );
127
+
128
+ // wfs:Operations element
129
+ QDomElement operationsElement = doc.createElement ( " Operations" /* wfs:Operations*/ );
130
+ // wfs:Query element
131
+ QDomElement queryElement = doc.createElement ( " Query" /* wfs:Query*/ );
132
+ operationsElement.appendChild ( queryElement );
133
+
134
+ QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer*>( layer );
135
+ QgsVectorDataProvider* provider = vlayer->dataProvider ();
136
+ if (( provider->capabilities () & QgsVectorDataProvider::AddFeatures ) && wfstInsertLayersId.contains ( layer->id () ) )
137
+ {
138
+ // wfs:Insert element
139
+ QDomElement insertElement = doc.createElement ( " Insert" /* wfs:Insert*/ );
140
+ operationsElement.appendChild ( insertElement );
141
+ }
142
+ if (( provider->capabilities () & QgsVectorDataProvider::ChangeAttributeValues ) &&
143
+ ( provider->capabilities () & QgsVectorDataProvider::ChangeGeometries ) &&
144
+ wfstUpdateLayersId.contains ( layer->id () ) )
145
+ {
146
+ // wfs:Update element
147
+ QDomElement updateElement = doc.createElement ( " Update" /* wfs:Update*/ );
148
+ operationsElement.appendChild ( updateElement );
149
+ }
150
+ if (( provider->capabilities () & QgsVectorDataProvider::DeleteFeatures ) && wfstDeleteLayersId.contains ( layer->id () ) )
151
+ {
152
+ // wfs:Delete element
153
+ QDomElement deleteElement = doc.createElement ( " Delete" /* wfs:Delete*/ );
154
+ operationsElement.appendChild ( deleteElement );
155
+ }
149
156
150
- layerElem.appendChild ( operationsElement );
157
+ layerElem.appendChild ( operationsElement );
151
158
152
- QgsRectangle layerExtent = layer->extent ();
153
- QDomElement bBoxElement = doc.createElement ( " LatLongBoundingBox" );
154
- bBoxElement.setAttribute ( " minx" , QString::number ( layerExtent.xMinimum () ) );
155
- bBoxElement.setAttribute ( " miny" , QString::number ( layerExtent.yMinimum () ) );
156
- bBoxElement.setAttribute ( " maxx" , QString::number ( layerExtent.xMaximum () ) );
157
- bBoxElement.setAttribute ( " maxy" , QString::number ( layerExtent.yMaximum () ) );
158
- layerElem.appendChild ( bBoxElement );
159
+ QgsRectangle layerExtent = layer->extent ();
160
+ QDomElement bBoxElement = doc.createElement ( " LatLongBoundingBox" );
161
+ bBoxElement.setAttribute ( " minx" , QString::number ( layerExtent.xMinimum () ) );
162
+ bBoxElement.setAttribute ( " miny" , QString::number ( layerExtent.yMinimum () ) );
163
+ bBoxElement.setAttribute ( " maxx" , QString::number ( layerExtent.xMaximum () ) );
164
+ bBoxElement.setAttribute ( " maxy" , QString::number ( layerExtent.yMaximum () ) );
165
+ layerElem.appendChild ( bBoxElement );
159
166
160
- // layer metadata URL
161
- QString metadataUrl = layer->metadataUrl ();
162
- if ( !metadataUrl.isEmpty () )
167
+ // layer metadata URL
168
+ QString metadataUrl = layer->metadataUrl ();
169
+ if ( !metadataUrl.isEmpty () )
170
+ {
171
+ QDomElement metaUrlElem = doc.createElement ( " MetadataURL" );
172
+ QString metadataUrlType = layer->metadataUrlType ();
173
+ metaUrlElem.setAttribute ( " type" , metadataUrlType );
174
+ QString metadataUrlFormat = layer->metadataUrlFormat ();
175
+ if ( metadataUrlFormat == " text/xml" )
163
176
{
164
- QDomElement metaUrlElem = doc.createElement ( " MetadataURL" );
165
- QString metadataUrlType = layer->metadataUrlType ();
166
- metaUrlElem.setAttribute ( " type" , metadataUrlType );
167
- QString metadataUrlFormat = layer->metadataUrlFormat ();
168
- if ( metadataUrlFormat == " text/xml" )
169
- {
170
- metaUrlElem.setAttribute ( " format" , " XML" );
171
- }
172
- else
173
- {
174
- metaUrlElem.setAttribute ( " format" , " TXT" );
175
- }
176
- QDomText metaUrlText = doc.createTextNode ( metadataUrl );
177
- metaUrlElem.appendChild ( metaUrlText );
178
- layerElem.appendChild ( metaUrlElem );
177
+ metaUrlElem.setAttribute ( " format" , " XML" );
179
178
}
180
-
181
- parentElement.appendChild ( layerElem );
179
+ else
180
+ {
181
+ metaUrlElem.setAttribute ( " format" , " TXT" );
182
+ }
183
+ QDomText metaUrlText = doc.createTextNode ( metadataUrl );
184
+ metaUrlElem.appendChild ( metaUrlText );
185
+ layerElem.appendChild ( metaUrlElem );
182
186
}
187
+
188
+ parentElement.appendChild ( layerElem );
183
189
}
184
190
}
185
191
return ;
0 commit comments