private void UpdateMetadataFromModel(MetadataViewModel model, SimpleMetadata metadata) { metadata.Title = model.Title; metadata.Abstract = model.Abstract; if (!string.IsNullOrEmpty(model.ParentIdentifier)) metadata.ParentIdentifier = model.ParentIdentifier; metadata.Purpose = !string.IsNullOrWhiteSpace(model.Purpose) ? model.Purpose : " "; if (!string.IsNullOrWhiteSpace(model.TopicCategory)) metadata.TopicCategory = model.TopicCategory; if(!string.IsNullOrWhiteSpace(model.SupplementalDescription)) metadata.SupplementalDescription = model.SupplementalDescription; metadata.SpecificUsage = !string.IsNullOrWhiteSpace(model.SpecificUsage) ? model.SpecificUsage : " "; var contactMetadata = model.ContactMetadata.ToSimpleContact(); if (!string.IsNullOrWhiteSpace(model.EnglishContactMetadataOrganization)) { contactMetadata.OrganizationEnglish = model.EnglishContactMetadataOrganization; } metadata.ContactMetadata = contactMetadata; var contactPublisher = model.ContactPublisher.ToSimpleContact(); if (!string.IsNullOrWhiteSpace(model.EnglishContactPublisherOrganization)) { contactPublisher.OrganizationEnglish = model.EnglishContactPublisherOrganization; } metadata.ContactPublisher = contactPublisher; var contactOwner = model.ContactOwner.ToSimpleContact(); if (!string.IsNullOrWhiteSpace(model.EnglishContactOwnerOrganization)) { contactOwner.OrganizationEnglish = model.EnglishContactOwnerOrganization; } metadata.ContactOwner = contactOwner; // documents metadata.ProductSpecificationUrl = model.ProductSpecificationUrl; metadata.ApplicationSchema = model.ApplicationSchema; if (metadata.IsDataset()) { metadata.ProductSpecificationOther = new SimpleOnlineResource { Name = model.ProductSpecificationOther.Name, URL = model.ProductSpecificationOther.URL }; } metadata.ProductSheetUrl = model.ProductSheetUrl; metadata.ProductPageUrl = model.ProductPageUrl; metadata.LegendDescriptionUrl = model.LegendDescriptionUrl; metadata.CoverageUrl = model.CoverageUrl; metadata.Thumbnails = Thumbnail.ToSimpleThumbnailList(model.Thumbnails); // distribution //if (!string.IsNullOrWhiteSpace(model.SpatialRepresentation)) metadata.SpatialRepresentation = model.SpatialRepresentation; //if (!string.IsNullOrWhiteSpace(model.ReferenceSystemCoordinateSystem)) //{ // metadata.ReferenceSystem = new SimpleReferenceSystem // { // CoordinateSystem = model.ReferenceSystemCoordinateSystem, // Namespace = model.ReferenceSystemNamespace // }; //} var refsys = model.GetReferenceSystems(); if (refsys != null) metadata.ReferenceSystems = refsys; //Upgraded to multiple distribution formats //if (!string.IsNullOrWhiteSpace(model.DistributionFormatName) || // !string.IsNullOrWhiteSpace(model.DistributionFormatVersion)) //{ // metadata.DistributionFormat = new SimpleDistributionFormat // { // Name = model.DistributionFormatName, // Version = model.DistributionFormatVersion // }; //} metadata.DistributionFormats = model.GetDistributionFormats(); metadata.DistributionDetails = new SimpleDistributionDetails { URL = model.DistributionUrl, Protocol = model.DistributionProtocol, Name = model.DistributionName, UnitsOfDistribution = model.UnitsOfDistribution }; // quality List<SimpleQualitySpecification> qualityList = new List<SimpleQualitySpecification>(); if (!string.IsNullOrWhiteSpace(model.QualitySpecificationTitleInspire)) { qualityList.Add(new SimpleQualitySpecification { Title = model.QualitySpecificationTitleInspire, Date = string.Format("{0:yyyy-MM-dd}", model.QualitySpecificationDateInspire), DateType = model.QualitySpecificationDateTypeInspire, Explanation = model.QualitySpecificationExplanationInspire, Result = model.QualitySpecificationResultInspire, Responsible = "inspire" }); } if (!string.IsNullOrWhiteSpace(model.QualitySpecificationTitleSosi)) { qualityList.Add(new SimpleQualitySpecification { Title = model.QualitySpecificationTitleSosi, Date = string.Format("{0:yyyy-MM-dd}", model.QualitySpecificationDateSosi), DateType = model.QualitySpecificationDateTypeSosi, Explanation = model.QualitySpecificationExplanationSosi, Result = model.QualitySpecificationResultSosi, Responsible = "sosi" }); } if (model.QualitySpecificationResultSosiConformApplicationSchema) { qualityList.Add(new SimpleQualitySpecification { Title = "Sosi applikasjonsskjema", Date = string.Format("{0:yyyy-MM-dd}", model.QualitySpecificationDateSosi), DateType = model.QualitySpecificationDateTypeSosi, Explanation = "SOSI-filer er i henhold til applikasjonsskjema", Result = true, Responsible = "uml-sosi" }); } if (model.QualitySpecificationResultSosiConformGmlApplicationSchema) { qualityList.Add(new SimpleQualitySpecification { Title = "Sosi applikasjonsskjema", Date = string.Format("{0:yyyy-MM-dd}", model.QualitySpecificationDateSosi), DateType = model.QualitySpecificationDateTypeSosi, Explanation = "GML-filer er i henhold til applikasjonsskjema", Result = true, Responsible = "uml-gml" }); } if (!string.IsNullOrWhiteSpace(model.QualitySpecificationTitle)) { qualityList.Add(new SimpleQualitySpecification { Title = model.QualitySpecificationTitle, Date = string.Format("{0:yyyy-MM-dd}", model.QualitySpecificationDate), DateType = model.QualitySpecificationDateType, Explanation = model.QualitySpecificationExplanation, Result = model.QualitySpecificationResult, Responsible = "other" }); } metadata.QualitySpecifications = qualityList; metadata.ProcessHistory = !string.IsNullOrWhiteSpace(model.ProcessHistory) ? model.ProcessHistory : " "; if (!string.IsNullOrWhiteSpace(model.MaintenanceFrequency)) metadata.MaintenanceFrequency = model.MaintenanceFrequency; if (!model.IsService()) metadata.ResolutionScale = !string.IsNullOrWhiteSpace(model.ResolutionScale) ? model.ResolutionScale : " "; if (!string.IsNullOrWhiteSpace(model.Status)) metadata.Status = model.Status; metadata.DateCreated = model.DateCreated; metadata.DatePublished = model.DatePublished; metadata.DateUpdated = model.DateUpdated; DateTime? DateMetadataValidFrom = model.DateMetadataValidFrom; DateTime? DateMetadataValidTo = model.DateMetadataValidTo; metadata.ValidTimePeriod = new SimpleValidTimePeriod() { ValidFrom = DateMetadataValidFrom != null ? String.Format("{0:yyyy-MM-dd}", DateMetadataValidFrom) : "", ValidTo = DateMetadataValidTo != null ? String.Format("{0:yyyy-MM-dd}", DateMetadataValidTo) : "" }; if (!string.IsNullOrWhiteSpace(model.BoundingBoxEast)) { metadata.BoundingBox = new SimpleBoundingBox { EastBoundLongitude = model.BoundingBoxEast, WestBoundLongitude = model.BoundingBoxWest, NorthBoundLatitude = model.BoundingBoxNorth, SouthBoundLatitude = model.BoundingBoxSouth }; } var accessConstraintsSelected = model.AccessConstraints; string otherConstraintsAccess = model.OtherConstraintsAccess; if (!string.IsNullOrEmpty(accessConstraintsSelected)) { if (accessConstraintsSelected.ToLower() == "no restrictions" || accessConstraintsSelected.ToLower() == "norway digital restricted") { otherConstraintsAccess = accessConstraintsSelected; accessConstraintsSelected = "otherRestrictions"; } } metadata.Constraints = new SimpleConstraints { AccessConstraints = !string.IsNullOrWhiteSpace(accessConstraintsSelected) ? accessConstraintsSelected : "", OtherConstraints = !string.IsNullOrWhiteSpace(model.OtherConstraints) ? model.OtherConstraints : "", EnglishOtherConstraints = !string.IsNullOrWhiteSpace(model.EnglishOtherConstraints) ? model.EnglishOtherConstraints : "", OtherConstraintsLink = !string.IsNullOrWhiteSpace(model.OtherConstraintsLink) ? model.OtherConstraintsLink : null, OtherConstraintsLinkText = !string.IsNullOrWhiteSpace(model.OtherConstraintsLinkText) ? model.OtherConstraintsLinkText : null, SecurityConstraints = !string.IsNullOrWhiteSpace(model.SecurityConstraints) ? model.SecurityConstraints : "", SecurityConstraintsNote = !string.IsNullOrWhiteSpace(model.SecurityConstraintsNote) ? model.SecurityConstraintsNote : "", UseConstraints = !string.IsNullOrWhiteSpace(model.UseConstraints) ? model.UseConstraints : "", UseLimitations = !string.IsNullOrWhiteSpace(model.UseLimitations) ? model.UseLimitations : "", EnglishUseLimitations = !string.IsNullOrWhiteSpace(model.EnglishUseLimitations) ? model.EnglishUseLimitations : "", OtherConstraintsAccess = !string.IsNullOrWhiteSpace(otherConstraintsAccess) ? otherConstraintsAccess : "", }; if(model.IsService() && !string.IsNullOrEmpty(model.DistributionProtocol)) { model.KeywordsOther = AddKeywordForService(model.DistributionProtocol, model.KeywordsOther); metadata.ServiceType = GetServiceType(model.DistributionProtocol); } metadata.Keywords = model.GetAllKeywords(); bool hasEnglishFields = false; // don't create PT_FreeText fields if it isn't necessary if (!string.IsNullOrWhiteSpace(model.EnglishTitle)) { metadata.EnglishTitle = model.EnglishTitle; hasEnglishFields = true; } if (!string.IsNullOrWhiteSpace(model.EnglishAbstract)) { metadata.EnglishAbstract = model.EnglishAbstract; hasEnglishFields = true; } if (!string.IsNullOrWhiteSpace(model.EnglishPurpose)) { metadata.EnglishPurpose = model.EnglishPurpose; hasEnglishFields = true; } if (!string.IsNullOrWhiteSpace(model.EnglishSupplementalDescription)) { metadata.EnglishSupplementalDescription = model.EnglishSupplementalDescription; hasEnglishFields = true; } if (!string.IsNullOrWhiteSpace(model.EnglishSpecificUsage)) { metadata.EnglishSpecificUsage = model.EnglishSpecificUsage; hasEnglishFields = true; } if (!string.IsNullOrWhiteSpace(model.EnglishProcessHistory)) { metadata.EnglishProcessHistory = model.EnglishProcessHistory; hasEnglishFields = true; } if (hasEnglishFields) metadata.SetLocale(SimpleMetadata.LOCALE_ENG); if (model.OperatesOn != null) metadata.OperatesOn = model.OperatesOn; if (!string.IsNullOrWhiteSpace(model.ResourceReferenceCode) || !string.IsNullOrWhiteSpace(model.ResourceReferenceCodespace)) { metadata.ResourceReference = new SimpleResourceReference { Code = model.ResourceReferenceCode != null ? model.ResourceReferenceCode : null, Codespace = model.ResourceReferenceCodespace != null ? model.ResourceReferenceCodespace : null }; } if (model.IsService()) metadata.AccessProperties = new SimpleAccessProperties { OrderingInstructions = model.OrderingInstructions } ; SetDefaultValuesOnMetadata(metadata); }