@@ -66,120 +66,126 @@ void QgsWFSProjectParser::featureTypeList( QDomElement& parentElement, QDomDocum
6666 QString type = elem.attribute ( " type" );
6767 if ( type == " vector" )
6868 {
69+ QString layerId = mProjectParser ->layerId ( elem );
70+ if ( !wfsLayersId.contains ( layerId ) )
71+ {
72+ continue ;
73+ }
6974 QgsMapLayer *layer = mProjectParser ->createLayerFromElement ( elem );
70- if ( layer && wfsLayersId. contains ( layer-> id () ) )
75+ if ( ! layer )
7176 {
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 );
9481
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 );
10491
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 );
113101
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 );
115111
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+ }
120120
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() );
126122
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+ }
149156
150- layerElem.appendChild ( operationsElement );
157+ layerElem.appendChild ( operationsElement );
151158
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 );
159166
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" )
163176 {
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" );
179178 }
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 );
182186 }
187+
188+ parentElement.appendChild ( layerElem );
183189 }
184190 }
185191 return ;
0 commit comments