internal List <WfsLayerViewModel> CreateMetadataForFeature(string uuid, List <WfsLayerViewModel> layers, string[] keywords, string username) { SimpleMetadata parentMetadata = new SimpleMetadata(_geoNorge.GetRecordByUuid(uuid)); List <SimpleKeyword> selectedKeywordsFromParent = CreateListOfKeywords(keywords); List <string> layerIdentifiers = new List <string>(); foreach (WfsLayerViewModel layer in layers) { try { SimpleMetadata simpleLayer = createMetadataForFeature(parentMetadata, selectedKeywordsFromParent, layer); MetadataTransaction transaction = _geoNorge.MetadataInsert(simpleLayer.GetMetadata(), CreateAdditionalHeadersWithUsername(username)); if (transaction.Identifiers != null && transaction.Identifiers.Count > 0) { layer.Uuid = transaction.Identifiers[0]; layerIdentifiers.Add(layer.Uuid); } } catch (Exception e) { layer.ErrorMessage = e.Message; Log.Error("Error while creating metadata for layer: " + layer.Title, e); } } parentMetadata.OperatesOn = layerIdentifiers; _geoNorge.MetadataUpdate(parentMetadata.GetMetadata()); return(layers); }
public void ShouldParseCswTransactionAfterUpdateWithoutNullReferenceOnMissingIdentifiers() { MetadataTransaction transaction = RequestRunner.ParseCswTransactionResponse("<csw:TransactionResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"><csw:TransactionSummary><csw:totalInserted>0</csw:totalInserted><csw:totalUpdated>1</csw:totalUpdated><csw:totalDeleted>0</csw:totalDeleted></csw:TransactionSummary></csw:TransactionResponse>"); Assert.AreEqual("1", transaction.TotalUpdated); }