public SimpleMetadataViewModel GetMetadataModel(string uuid) { SimpleMetadata metadata = new SimpleMetadata(_geoNorge.GetRecordByUuid(uuid)); var model = new SimpleMetadataViewModel() { Uuid = metadata.Uuid, Title = metadata.Title, HierarchyLevel = metadata.HierarchyLevel, ParentIdentifier = metadata.ParentIdentifier, MetadataStandard = metadata.MetadataStandard, Abstract = metadata.Abstract != null?metadata.Abstract.Replace("...", "") : "", ContactMetadata = new Contact(metadata.ContactMetadata, "pointOfContact"), ContactPublisher = new Contact(metadata.ContactPublisher, "publisher"), ContactOwner = new Contact(metadata.ContactOwner, "owner"), SupplementalDescription = metadata.SupplementalDescription, SpecificUsage = metadata.SpecificUsage, ProcessHistory = metadata.ProcessHistory, ProductPageUrl = metadata.ProductPageUrl, DistributionUrl = metadata.DistributionDetails != null ? metadata.DistributionDetails.URL : null, DistributionProtocol = metadata.DistributionDetails != null ? metadata.DistributionDetails.Protocol : null, MaintenanceFrequency = metadata.MaintenanceFrequency, DateUpdated = metadata.DateUpdated, DateMetadataUpdated = metadata.DateMetadataUpdated, KeywordsPlace = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, SimpleKeyword.TYPE_PLACE, null)), KeywordsNationalInitiative = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, null, SimpleKeyword.THESAURUS_NATIONAL_INITIATIVE)), KeywordsNationalTheme = CreateListOfKeywords(SimpleKeyword.Filter(metadata.Keywords, null, SimpleKeyword.THESAURUS_NATIONAL_THEME)), KeywordsEnglish = CreateDictionaryOfEnglishKeywords(metadata.Keywords), UseConstraints = metadata.Constraints != null ? metadata.Constraints.UseConstraints : null, OtherConstraintsLink = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsLink : null, OtherConstraintsLinkText = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsLinkText : null, OtherConstraintsAccess = metadata.Constraints != null ? metadata.Constraints.OtherConstraintsAccess : null, EnglishTitle = metadata.EnglishTitle, EnglishAbstract = metadata.EnglishAbstract, EnglishContactMetadataOrganization = metadata.ContactMetadata != null ? metadata.ContactMetadata.OrganizationEnglish : null, EnglishContactPublisherOrganization = metadata.ContactPublisher != null ? metadata.ContactPublisher.OrganizationEnglish : null, EnglishContactOwnerOrganization = metadata.ContactOwner != null ? metadata.ContactOwner.OrganizationEnglish : null }; if (metadata.BoundingBox != null) { model.BoundingBoxEast = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.EastBoundLongitude); model.BoundingBoxWest = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.WestBoundLongitude); model.BoundingBoxNorth = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.NorthBoundLatitude); model.BoundingBoxSouth = ConvertCoordinateWithCommaToPoint(metadata.BoundingBox.SouthBoundLatitude); } // Translations model.TitleFromSelectedLanguage = model.TitleTranslated(); return(model); }
public static SimpleMetadata FetchMetadata(string uuid) { try { GeoNorge g = new GeoNorge("", "", WebConfigurationManager.AppSettings["GeoNetworkUrl"]); MD_Metadata_Type metadata = g.GetRecordByUuid(uuid); return(metadata != null ? new SimpleMetadata(metadata) : null); } catch (Exception e) { return(null); } }
private void CheckDatasets() { for (int d = 0; d < metadataSets.Items.Length; d++) { string uuid = ((www.opengis.net.DCMIRecordType)(metadataSets.Items[d])).Items[0].Text[0]; MD_Metadata_Type md = geoNorge.GetRecordByUuid(uuid); var data = new SimpleMetadata(md); if (data.DistributionDetails != null && !string.IsNullOrEmpty(data.DistributionDetails.Protocol) && data.DistributionDetails.Protocol == "GEONORGE:DOWNLOAD") { if (string.IsNullOrEmpty(data.DistributionDetails.URL)) { downloadProblems.Add(new MetadataEntry { Uuid = uuid, Title = data.Title, Problem = "Distribusjons url er tom" }); } else { GetDistribution(uuid, data.Title, data.DistributionDetails.URL); } } } }
public ProductSheet UpdateProductSheetFromMetadata(string uuid, ProductSheet productSheet) { register = new RegisterFetcher(); MD_Metadata_Type metadata = _geonorge.GetRecordByUuid(uuid); if (metadata == null) { throw new InvalidOperationException("Metadata not found for uuid: " + uuid); } var simpleMetadata = new SimpleMetadata(metadata); dynamic metedataExtended = register.GetMetadataExtended(simpleMetadata.Uuid); productSheet.Uuid = simpleMetadata.Uuid; productSheet.Title = simpleMetadata.Title; productSheet.Description = simpleMetadata.Abstract; productSheet.SupplementalDescription = simpleMetadata.SupplementalDescription; productSheet.Purpose = simpleMetadata.Purpose; productSheet.SpecificUsage = simpleMetadata.SpecificUsage; productSheet.UseLimitations = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseLimitations : null; productSheet.UseConstraintsLicenseLink = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseConstraintsLicenseLink : null; productSheet.UseConstraintsLicenseLinkText = simpleMetadata.Constraints != null ? simpleMetadata.Constraints.UseConstraintsLicenseLinkText : null; productSheet.ContactMetadata = simpleMetadata.ContactMetadata != null?CreateContact(simpleMetadata.ContactMetadata) : new Contact(); productSheet.ContactPublisher = simpleMetadata.ContactPublisher != null?CreateContact(simpleMetadata.ContactPublisher) : new Contact(); productSheet.ContactOwner = simpleMetadata.ContactOwner != null?CreateContact(simpleMetadata.ContactOwner) : new Contact(); productSheet.ResolutionScale = simpleMetadata.ResolutionScale; productSheet.KeywordsPlace = CreateKeywords(SimpleKeyword.Filter(simpleMetadata.Keywords, SimpleKeyword.TYPE_PLACE, null)); productSheet.ProcessHistory = simpleMetadata.ProcessHistory; productSheet.MaintenanceFrequency = simpleMetadata.MaintenanceFrequency; productSheet.Status = simpleMetadata.Status; productSheet.DistributionFormatName = simpleMetadata.DistributionFormat != null ? simpleMetadata.DistributionFormat.Name : null; productSheet.DistributionFormatVersion = simpleMetadata.DistributionFormat != null ? simpleMetadata.DistributionFormat.Version : null; productSheet.DistributionFormats = GetDistributionFormats(simpleMetadata.DistributionFormats); productSheet.AccessConstraints = simpleMetadata.Constraints != null?register.GetRestriction(simpleMetadata.Constraints.AccessConstraints, simpleMetadata.Constraints.OtherConstraintsAccess) : null; productSheet.LegendDescriptionUrl = simpleMetadata.LegendDescriptionUrl; productSheet.ProductPageUrl = simpleMetadata.ProductPageUrl; productSheet.ProductSpecificationUrl = simpleMetadata.ProductSpecificationUrl; foreach (var thumbnail in simpleMetadata.Thumbnails) { productSheet.Thumbnail = thumbnail.URL; if (!thumbnail.URL.StartsWith("http")) { productSheet.Thumbnail = "https://www.geonorge.no/geonetwork/srv/nor/resources.get?uuid=" + simpleMetadata.Uuid + "&access=public&fname=" + thumbnail.URL; } if (thumbnail.Type == "large_thumbnail") { break; } } //productSheet.CoverageArea = !string.IsNullOrWhiteSpace(simpleMetadata.CoverageUrl) ? GetCoverageLink(simpleMetadata.CoverageUrl, uuid) : ""; productSheet.CoverageArea = metedataExtended.CoverageUrl; productSheet.Projections = simpleMetadata.ReferenceSystems != null?getProjections(simpleMetadata.ReferenceSystems) : ""; return(productSheet); }
public void ShouldReturnSingleIsoRecord() { MD_Metadata_Type record = _geonorge.GetRecordByUuid("63c672fa-e180-4601-a176-6bf163e0929d"); // Matrikkelen WMS Assert.NotNull(record, "Record does not exist."); }
public Task UpdateMetadata() { var datasetList = GetDatasets(); var datasets = datasetList.OrderBy(x => x.Uuid) .GroupBy(x => x.Uuid) .Select(g => new { Uuid = g.Key, Datasets = g.Select(dataset => new { dataset.Url, dataset.Organization, dataset.LastUpdated, dataset.DistributionsFormats, dataset.ReferenceSystems }) }).ToList(); foreach (var dataset in datasets) { try { var metadataInfo = new UpdateMetadataInformation(); metadataInfo.Uuid = dataset.Uuid.Trim(); metadataInfo.Distributions = new List <SimpleDistribution>(); foreach (var item in dataset.Datasets) { try { metadataInfo.DatasetDateUpdated = DateTime.Parse(item.LastUpdated, System.Globalization.CultureInfo.InvariantCulture); } catch (Exception e) { Log.Error("Error with LastUpdated: " + item.LastUpdated, e); } foreach (var distribution in item.DistributionsFormats) { SimpleDistribution simpleDistribution = new SimpleDistribution(); simpleDistribution.Organization = distribution.Organization; simpleDistribution.Protocol = "W3C:AtomFeed"; simpleDistribution.URL = item.Url; simpleDistribution.FormatName = distribution.FormatName; metadataInfo.Distributions.Add(simpleDistribution); } metadataInfo.Projections = new List <SimpleReferenceSystem>(); foreach (var projection in item.ReferenceSystems) { SimpleReferenceSystem simpleReferenceSystem = new SimpleReferenceSystem(); simpleReferenceSystem.CoordinateSystem = projection.CoordinateSystem; metadataInfo.Projections.Add(simpleReferenceSystem); } } System.Collections.Specialized.NameValueCollection settings = System.Web.Configuration.WebConfigurationManager.AppSettings; string server = settings["GeoNetworkUrl"]; string usernameGeonetwork = settings["GeoNetworkUsername"]; string password = settings["GeoNetworkPassword"]; string geonorgeUsername = settings["GeonorgeUsername"]; GeoNorge api = new GeoNorge(usernameGeonetwork, password, server); api.OnLogEventDebug += new GeoNorgeAPI.LogEventHandlerDebug(LogEventsDebug); api.OnLogEventError += new GeoNorgeAPI.LogEventHandlerError(LogEventsError); var metadata = api.GetRecordByUuid(metadataInfo.Uuid); SimpleMetadata simpleMetadata = new SimpleMetadata(metadata); List <SimpleDistribution> distributionFormats = simpleMetadata.DistributionsFormats; List <SimpleDistribution> distributionFormatsUpdated = new List <SimpleDistribution>(); if (HasAtomFeed(metadataInfo.Distributions)) { foreach (var distribution in distributionFormats) { if (distribution.Protocol != "W3C:AtomFeed") { distributionFormatsUpdated.Add(distribution); } } } else { distributionFormatsUpdated = distributionFormats; } distributionFormatsUpdated.AddRange(metadataInfo.Distributions); simpleMetadata.DistributionsFormats = distributionFormatsUpdated; simpleMetadata.DistributionDetails = new SimpleDistributionDetails { URL = distributionFormatsUpdated[0].URL, Protocol = distributionFormatsUpdated[0].Protocol, UnitsOfDistribution = distributionFormatsUpdated[0].UnitsOfDistribution }; List <SimpleReferenceSystem> simpleReferenceSystems = new List <SimpleReferenceSystem>(); foreach (var projection in metadataInfo.Projections) { SimpleReferenceSystem refsys = new SimpleReferenceSystem(); refsys.CoordinateSystem = projection.CoordinateSystem; simpleReferenceSystems.Add(refsys); } if (simpleMetadata.ReferenceSystems == null || (simpleMetadata.ReferenceSystems != null && simpleMetadata.ReferenceSystems.Count == 0)) { simpleMetadata.ReferenceSystems = simpleReferenceSystems; } simpleMetadata.DateMetadataUpdated = DateTime.Now; if (metadataInfo.DatasetDateUpdated.HasValue) { simpleMetadata.DateUpdated = metadataInfo.DatasetDateUpdated; } api.MetadataUpdate(simpleMetadata.GetMetadata(), CreateAdditionalHeadersWithUsername(geonorgeUsername, "true")); Log.Info($"Metadata updated for uuid: {metadataInfo.Uuid}"); } catch (Exception ex) { Log.Error("Error updating metadata uuid: " + dataset.Uuid + ", error: " + ex); } } return(Task.CompletedTask); }