Exemplo n.º 1
0
        /// <summary>
        /// Create a new Wikidata item for the given entity and fills the basic properties.
        /// </summary>
        /// <param name="entity">Entity to need new item.</param>
        public void CreateItem(Entity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }
            if (entity.wiki != null && !String.IsNullOrWhiteSpace(entity.wiki.wikidata))
            {
                throw new ArgumentException("Entity already has a Wikidata item");
            }

            var item = new Item(_helper.Api);

            item.setLabel("en", entity.english);
            item.setLabel("de", entity.english);
            item.setLabel("th", entity.FullName);
            item.setDescription("en", entity.GetWikiDataDescription(Language.English));
            item.setDescription("de", entity.GetWikiDataDescription(Language.German));
            item.setDescription("th", entity.GetWikiDataDescription(Language.Thai));
            item.save(_helper.GetItemCreateSaveSummary(item));
            if (entity.wiki == null)
            {
                entity.wiki = new WikiLocation();
            }
            entity.wiki.wikidata = item.id.PrefixedId.ToUpperInvariant();
            var items = new List <Entity>();

            items.Add(entity);
            var dummy = new StringBuilder();

            SetThaiAbbreviation(items, dummy, false);
            SetCountry(items, dummy, false);
            SetIsInAdministrativeUnit(items, dummy, false);
            SetTypeOfAdministrativeUnit(items, dummy, false);
            if (!entity.type.IsCompatibleEntityType(EntityType.Muban) && !entity.type.IsLocalGovernment())
            {
                SetGeocode(items, dummy, false);
            }
            SetPostalCode(items, dummy, false);
            SetLocation(items, dummy, false);
            SetNativeLabel(items, dummy, false);
        }