private void PrepareMigrationOfEntity(IDTableEntry entry, Func <int, Guid, string> sqlBuilder) { int id = GetIdFromKey(entry.Key); string sql = sqlBuilder(id, entry.ID.Guid); StoreSqlCommandForLaterExecution(sql); }
public override void Add(IDTableEntry entry) { if (this.IsLocalProviderSet()) { this.LocalProvider.Value.Add(entry); } }
public FakeIDTableProviderTest() { this.behavior = Substitute.For<IDTableProvider>(); this.provider = new FakeIDTableProvider(); this.provider.LocalProvider.Value = this.behavior; var fixture = new Fixture(); this.entry = fixture.Create<IDTableEntry>(); }
internal static ID GetItemIdFromIDTableEntry(string prefix, string key) { IDTableEntry idTableEntry = IDTable.GetID(prefix, key); if (idTableEntry == null) { return(ID.Null); } return(idTableEntry.ID); }
public FakeIDTableProviderTest() { this.behavior = Substitute.For <IDTableProvider>(); this.provider = new FakeIDTableProvider(); this.provider.LocalProvider.Value = this.behavior; var fixture = new Fixture(); this.entry = fixture.Create <IDTableEntry>(); }
public override Stream GetBlobStream(Guid blobId, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, new ID(blobId)); if (idList.Length > 0) { IDTableEntry mappedID = idList[0]; context.Abort(); return(GetThumbnailStream(mappedID.Key)); } return(null); }
private Guid FindIdTableGuid(string value, string idTableKey) { IDTableEntry idTableEntry = InMemoryIdTable.GetID(idTableKey, value); if (idTableEntry == null) { return(Guid.Empty); } return(idTableEntry.ID.Guid); }
public static IDTableEntry Add(string prefix, string key, ID id, ID parentID, string customData) { Error.AssertString(prefix, "prefix", false); Error.AssertString(key, "key", false); Error.AssertObject(id, "id"); Error.AssertObject(parentID, "parentID"); Error.AssertString(customData, "customData", true); IDTableProvider provider = GetProvider(); var entry = new IDTableEntry(prefix, key, id, parentID, customData); provider.Add(entry); return entry; }
public override Sitecore.Data.FieldList GetItemFields(ItemDefinition itemDefinition, VersionUri versionUri, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID); if (idList.Length > 0) { IDTableEntry mappedID = idList[0]; context.Abort(); XmlNode video = VideoData.SelectSingleNode("/response/videos/video[@key='" + mappedID.Key + "']"); FieldList list = new FieldList(); list.Add(ID.Parse(DISPLAY_NAME_FIELD), video[BOTR_TITLE].InnerText); list.Add(ID.Parse(VIDEO_KEY_FIELD), mappedID.Key); list.Add(ID.Parse(STATUS_FIELD), video[BOTR_STATUS].InnerText); list.Add(ID.Parse(BLOB_FIELD), itemDefinition.ID.ToString()); list.Add(ID.Parse(TITLE_FIELD), video[BOTR_TITLE].InnerText); list.Add(ID.Parse(DESCRIPTION_FIELD), video[BOTR_DESCRIPTION].InnerText); list.Add(ID.Parse(KEYWORDS_FIELD), video[BOTR_TAGS].InnerText); list.Add(ID.Parse(ALT_FIELD), video[BOTR_TITLE].InnerText); list.Add(ID.Parse(EXTENSION_FIELD), EXTENSION); list.Add(ID.Parse(MIME_TYPE_FIELD), MIME_TYPE); list.Add(ID.Parse(VIDEO_URL_FIELD), video[BOTR_LINK].InnerText); XmlNode custom = video[BOTR_CUSTOM]; if (custom != null && custom[BOTR_CUSTOM_LINK] != null) { list.Add(ID.Parse(VIDEO_CUSTOM_URL_FIELD), custom[BOTR_CUSTOM_LINK].InnerText); } double videoTimestamp = Double.Parse(video[BOTR_DATE].InnerText); string videoDate = Sitecore.DateUtil.ToIsoDate(UnixDateTime.FromUnixTimestamp(videoTimestamp)); list.Add(ID.Parse(CREATED_FIELD), videoDate); list.Add(ID.Parse(UPDATED_FIELD), videoDate); //BotR puts width/height data with conversion data. just need the aspect ratio, so grab the first one in the doc XmlDocument conversionData = GetVideoConversionData(mappedID.Key); XmlNode videoConversion = conversionData.SelectSingleNode("/response/conversions/conversion"); if (videoConversion != null) { string heightStr = videoConversion[BOTR_HEIGHT].InnerText; string widthStr = videoConversion[BOTR_WIDTH].InnerText; double height = 0; double width = 0; Double.TryParse(heightStr, out height); Double.TryParse(widthStr, out width); if (height != 0 && width != 0) { int thumbHeight = (int)(THUMBNAIL_SIZE * (height / width)); list.Add(ID.Parse(WIDTH_FIELD), THUMBNAIL_SIZE.ToString()); list.Add(ID.Parse(HEIGHT_FIELD), thumbHeight.ToString()); } } return(list); } return(base.GetItemFields(itemDefinition, versionUri, context)); }
public static IDTableEntry Add(string prefix, string key, ID id, ID parentID, string customData) { Error.AssertString(prefix, "prefix", false); Error.AssertString(key, "key", false); Error.AssertObject(id, "id"); Error.AssertObject(parentID, "parentID"); Error.AssertString(customData, "customData", true); IDTableProvider provider = GetProvider(); var entry = new IDTableEntry(prefix, key, id, parentID, customData); provider.Add(entry); return(entry); }
public static Item GetItemByShortUrl(string filePath) { Assert.ArgumentNotNullOrEmpty(filePath, "filePath"); IDTableEntry id = ShortUrlTable.GetID(Prefix, filePath); if (id != null && !ID.IsNullOrEmpty(id.ID)) { return(Context.Database.GetItem(id.ID)); } return(null); }
private static string GetEncryptionKey([NotNull] Item targetIntegrationItem) { Assert.ArgumentNotNull(targetIntegrationItem, "targetIntegrationItem"); IDTableEntry encryptionKeyEntry = IDTable.GetID(EncryptionKeyIDTableEntryPrefix, targetIntegrationItem.ID.ToShortID().ToString()); if (encryptionKeyEntry == null) { return(null); } return(encryptionKeyEntry.CustomData); }
public override void Execute(CommandContext context) { IEnumerable <Type> allGlassBasedModels = null; allGlassBasedModels = ReflectionHelper.GetAllTypesThatImplement <GlassBase>( new List <string> { "Projects.Common.Models", "Projects.Reboot.Models" } ); Database database = Factory.GetDatabase("master"); Item modelFolder = database.GetItem(RebootConstants.ModelRootId); foreach (var glassModel in allGlassBasedModels.Where(t => !t.IsAbstract)) { Log.Info(string.Format("Adding model {0} to Sitecore", glassModel.FullName), context); string displayName = glassModel.Name; string name = ItemUtil.ProposeValidItemName(glassModel.FullName.Replace(".", "_")); string prefix = RebootConstants.ModelTemplateId.ToString(); string key = name; IDTableEntry idTableEntry = IDTable.GetID(prefix, key); if (idTableEntry != null) { continue; } Item model = modelFolder.Add(name, new TemplateID(RebootConstants.ModelTemplateId)); if (model == null) { continue; } using (new SecurityDisabler()) { model.Editing.BeginEdit(); try { model.Appearance.DisplayName = displayName; model["Model Type"] = glassModel.AssemblyQualifiedName; } catch (Exception ex) { Log.Error("An error occured while editing Model " + displayName, context); model.Editing.CancelEdit(); } finally { model.Editing.EndEdit(); } } } }
internal static ID GetItemIdFromIDTableEntry <T>(this T obj, string key) where T : class, IHasExternalId { if (obj == null) { return(ID.Null); } string prefix = obj.GetType().ToString(); IDTableEntry idTableEntry = IDTable.GetID(prefix, key); if (idTableEntry == null) { return(ID.Null); } return(idTableEntry.ID); }
public override void Add(IDTableEntry entry) { var idTableStringKey = new IdTableStringKey(entry.Prefix, entry.Key); if (!_idByKey.ContainsKey(idTableStringKey)) { _idByKey[idTableStringKey] = entry; } var key = new IdTableIdKey(entry.Prefix, entry.ID.Guid); if (!_idById.ContainsKey(key)) { _idById.Add(key, new List<IDTableEntry> {entry}); } }
private void FillTheCacheInitially() { using (DataProviderReader reader = Api.CreateReader("SELECT {0}ID{1}, {0}Prefix{1}, {0}Key{1}, {0}ParentID{1}, {0}CustomData{1} FROM {0}IDTable{1}")) { while (reader.Read()) { ID id = Api.GetId(0, reader); string prefix = Api.GetString(1, reader); string key = Api.GetString(2, reader); ID parentId = Api.GetId(3, reader); string customData = Api.GetString(4, reader); var entry = new IDTableEntry(prefix, key, id, parentId, customData); Cache.Add(GetCacheKey(prefix, key), entry); DataCounters.PhysicalReads.Increment(); } } }
public override ItemDefinition GetItemDefinition(ID itemId, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemId); if (idList.Length > 0) { IDTableEntry mappedID = idList[0]; context.Abort(); XmlNode video = VideoData.SelectSingleNode("/response/videos/video[@key='" + mappedID.Key + "']"); if (video == null) { IDTable.RemoveID(ID_TABLE_PREFIX, mappedID.ID); return(null); } ItemDefinition videoItem = new ItemDefinition(itemId, mappedID.Key, ID.Parse(TEMPLATE), ID.Null); return(videoItem); } return(base.GetItemDefinition(itemId, context)); }
public override void Add(IDTableEntry entry) { var idTableStringKey = new IdTableStringKey(entry.Prefix, entry.Key); if (!_idByKey.ContainsKey(idTableStringKey)) { _idByKey[idTableStringKey] = entry; } var key = new IdTableIdKey(entry.Prefix, entry.ID.Guid); if (!_idById.ContainsKey(key)) { _idById.Add(key, new List <IDTableEntry> { entry }); } }
public override bool DeleteItem(ItemDefinition itemDefinition, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID); if (idList.Length > 0) { IDTableEntry mappedID = idList[0]; context.Abort(); XmlDocument response = CallApi("/videos/delete", new Dictionary <string, string> { { BOTR_VIDEO_KEY, mappedID.Key } }); XmlNode status = response.SelectSingleNode("/response/status"); if (status != null && status.InnerText.ToLower() == "ok") { Cache.Clear(); return(true); } return(false); } return(false); }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (itemDefinition.ID == ID.Parse(_parentItem)) { context.Abort(); XmlNodeList videos = VideoData.SelectNodes("/response/videos/video"); IDList videoIDs = new IDList(); foreach (XmlNode video in videos) { string videoKey = video.Attributes["key"].Value; IDTableEntry mappedID = IDTable.GetID(ID_TABLE_PREFIX, videoKey); if (mappedID == null) { mappedID = IDTable.GetNewID(ID_TABLE_PREFIX, videoKey, ID.Parse(_parentItem)); } videoIDs.Add(mappedID.ID); } return(videoIDs); } return(base.GetChildIDs(itemDefinition, context)); }
public static string ReadShortUrl(this Item item) { if (item != null && item.Parent != null && item.Parent.IsABucketFolder()) { try { IDTableEntry entry = ShortUrlTable.GetKeys(Prefix, item.ID).FirstOrDefault(); return(entry == null ? null : entry.Key); } catch (Exception exception) { Log.Fatal( string.Format("Short Url Manager: cannot read short url for item {0} {1} {2}", item.Uri, exception.Message, exception.StackTrace), new object()); return(null); } } return(null); }
internal IDTableEntry Add(string prefix, string key, ID id, ID parentId) { var idTableIdKey = new IdTableIdKey(prefix, id.Guid); var tableEntry = new IDTableEntry(prefix, key, id, parentId, ""); if (!_idById.ContainsKey(idTableIdKey)) { _idById.Add(idTableIdKey, new List <IDTableEntry> { tableEntry }); } var idTableStringKey = new IdTableStringKey(prefix, key); if (!_idByKey.ContainsKey(idTableStringKey)) { _idByKey[idTableStringKey] = tableEntry; } return(IDTable.Add(prefix, key, id, parentId)); }
public override IDList GetChildIDs(ItemDefinition parentItem, CallContext context) { if (CanProcessParent(parentItem.ID)) { context.Abort(); var itemIdList = new IDList(); foreach ( var externalItem in LoadChildren(parentItem).Where(a => a != null && !String.IsNullOrEmpty(a.Id))) { var externalItemId = externalItem.Id; IDTableEntry mappedId = InMemoryIdTable.GetID(IdTablePrefix, externalItemId); if (mappedId == null) { Guid generatedGuid = GenerateId(externalItem); if (generatedGuid == Guid.Empty) { mappedId = InMemoryIdTable.GetNewID(IdTablePrefix, externalItemId, parentItem.ID); } else { mappedId = InMemoryIdTable.Add(IdTablePrefix, externalItemId, new ID(generatedGuid), parentItem.ID); } } itemIdList.Add(mappedId.ID); } context.DataManager.Database.Caches.DataCache.Clear(); return(itemIdList); } return(base.GetChildIDs(parentItem, context)); }
protected void OnItemSaved(object sender, System.EventArgs args) { if ((args != null)) { Item item = Event.ExtractParameter(args, 0) as Item; Assert.IsNotNull(item, "No item in parameters"); if (!item.TemplateID.Equals(RebootConstants.ModelTemplateId)) { return; } ID parentID = item.ParentID; if (BucketManager.IsItemContainedWithinBucket(item)) { parentID = item.GetParentBucketItemOrParent().ParentID; } string prefix = item.TemplateID.ToString(); string key = item.Name; IDTableEntry idTableEntry = IDTable.GetID(prefix, key); if (idTableEntry == null) { IDTable.Add(prefix, key, item.ID, parentID); } } }
public override IDTableEntry GetID(string prefix, string key) { var entry1 = Cache[GetCacheKey(prefix, key)] as IDTableEntry; if (entry1 != null) { return(entry1); } using (DataProviderReader reader = Api.CreateReader("SELECT {0}ID{1}, {0}ParentID{1}, {0}CustomData{1} FROM {0}IDTable{1} WHERE {0}Prefix{1} = {2}prefix{3} AND {0}Key{1} = {2}key{3}", (object)"prefix", (object)prefix, (object)"key", (object)key)) { if (reader.Read()) { ID id1 = Api.GetId(0, reader); ID id2 = Api.GetId(1, reader); string @string = Api.GetString(2, reader); var entry2 = new IDTableEntry(prefix, key, id1, id2, @string); Cache.Add(GetCacheKey(prefix, key), entry2); DataCounters.PhysicalReads.Increment(); return(entry2); } } return(null); }
public static bool MoveItem(this IFileSystemRepository repo, IDTableEntry item, IDTableEntry parent) { return(repo.MoveItem(item.ID.ToString(), parent.ToString())); }
public override bool SaveItem(ItemDefinition itemDefinition, Sitecore.Data.Items.ItemChanges changes, CallContext context) { IDTableEntry[] idList = IDTable.GetKeys(ID_TABLE_PREFIX, itemDefinition.ID); if (idList.Length > 0 && changes.HasFieldsChanged) { IDTableEntry mappedID = idList[0]; context.Abort(); var values = new Dictionary <string, string>(); values.Add(BOTR_VIDEO_KEY, mappedID.Key); FieldChangeList fieldChanges = changes.FieldChanges; lock (fieldChanges.SyncRoot) { foreach (FieldChange change in fieldChanges) { if (change.FieldID == ID.Parse(DISPLAY_NAME_FIELD) || change.FieldID == ID.Parse(TITLE_FIELD) || change.FieldID == ID.Parse(ALT_FIELD)) { values[BOTR_TITLE] = change.Value; } else if (change.FieldID == ID.Parse(DESCRIPTION_FIELD)) { values[BOTR_DESCRIPTION] = change.Value; } else if (change.FieldID == ID.Parse(KEYWORDS_FIELD)) { values[BOTR_TAGS] = change.Value; } else if (change.FieldID == ID.Parse(VIDEO_CUSTOM_URL_FIELD)) { Sitecore.Links.UrlOptions options = Sitecore.Links.UrlOptions.DefaultOptions; options.Site = Sitecore.Sites.SiteContextFactory.GetSiteContext(_vodeoLinkSite); options.AlwaysIncludeServerUrl = false; values[BOTR_CUSTOM + "." + BOTR_CUSTOM_LINK] = change.Value; if (change.RemoveField || string.IsNullOrEmpty(change.Value)) { values[BOTR_LINK] = string.Empty; } else { values[BOTR_LINK] = "http://" + Sitecore.StringUtil.RemovePostfix('/', this._videoLinkHost) + Sitecore.Links.LinkManager.GetItemUrl(context.DataManager.Database.GetItem(ID.Parse(change.Value)), options); } } else if (change.FieldID == ID.Parse(CREATED_FIELD)) { values[BOTR_DATE] = Sitecore.DateUtil.IsoDateToDateTime(change.Value).ToUnixTimestamp().ToString(); } } XmlDocument response = CallApi("/videos/update", values); XmlNode status = response.SelectSingleNode("/response/status"); if (status != null && status.InnerText.ToLower() == "ok") { Cache.Clear(); return(true); } } return(false); } return(false); }
/// <summary> /// Read a file with decryption constants using an id table entry /// </summary> /// <param name="file"></param> /// <param name="game"></param> /// <param name="entry"></param> /// <param name="truth"></param> /// <param name="multiplier"></param> /// <param name="divisor"></param> /// <returns></returns> public static Span <byte> Read(Span <byte> file, string game, IDTableEntry entry, byte[] truth, ulong multiplier, ulong divisor) => Read(file, game, entry.CompressedSize, entry.DecompressedSize, entry.Flags, truth, multiplier, divisor);
internal IDTableEntry Add(string prefix, string key, ID id, ID parentId) { var idTableIdKey = new IdTableIdKey(prefix, id.Guid); var tableEntry = new IDTableEntry(prefix, key, id, parentId, ""); if (!_idById.ContainsKey(idTableIdKey)) { _idById.Add(idTableIdKey, new List<IDTableEntry> { tableEntry }); } var idTableStringKey = new IdTableStringKey(prefix, key); if (!_idByKey.ContainsKey(idTableStringKey)) { _idByKey[idTableStringKey] = tableEntry; } return IDTable.Add(prefix, key, id, parentId); }
private void PrepareMigrationOfEntry(IDTableEntry entry) { if (entry.Key.StartsWith("{")) { PrepareMigrationOfStandardValuesItem(entry); _entriesToBeDeleted.Add(entry); return; } var nodetype = GetNodeTypeFromKey(entry.Key); switch (nodetype) { case "product": case "productVariant": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeProduct); break; case "productCategory": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeCategory); break; case "productCatalog": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeCatalog); break; case "productCatalogGroup": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeStore); break; case "currency": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeCurrency); break; case "productDefinitionTemplate": _dictionaryOfTemplateIds.Add(GetIdFromKey(entry.Key), entry.ID.Guid); PrepareMigrationOfEntity(entry, BuildSqlToUpgradeProductDefinition); break; case "productDefinitionTemplateVariant": _dictionaryOfVariantTemplateIds.Add(GetIdFromKey(entry.Key), entry.ID.Guid); _entriesToBeDeleted.Add(entry); break; case "definitionTemplate": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeCategoryDefinition); break; case "ProductDefinitionFieldTemplateField": case "ProductDefinitionFieldTemplateFieldForVariant": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeProductDefinitionField); break; case "CategoryDefinitionDynamicFieldsField": PrepareMigrationOfEntity(entry, BuildSqlToUpgradeCategoryDefinitionField); break; default: _log.Log <MigrateIdTableValues>(string.Format("Skipping migration of entry with key: {0}", entry.Key)); break; } }
internal static bool HasIDTableEntry(string prefix, string key) { IDTableEntry idTableEntry = IDTable.GetID(prefix, key); return(idTableEntry != null); }
private void PrepareMigrationOfStandardValuesItem(IDTableEntry entry) { _dictionaryTemplateIdToStandardValueItemId.Add(entry.ParentID.Guid, entry.ID.Guid); }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (this.CanProcessParent(itemDefinition.ID, context)) { context.Abort(); var idList = new IDList(); ID parentId = itemDefinition.ID; var database = context.DataManager.Database; var actualItem = database.GetItem(parentId); var values = this.DataProviderDamHelper.ProcessingParentFieldNames.ToDictionary(fieldName => fieldName, fieldName => actualItem[fieldName]); var keyList = this.DataProviderDamHelper.GetChildKeys(values); var keys = keyList as string[] ?? keyList.ToArray(); if (!keys.Any()) { return(new IDList()); } foreach (var key in keys) { if (string.IsNullOrEmpty(key)) { continue; } var keyString = key + "|" + parentId.ToShortID(); IDTableEntry idEntry = IDTable.GetID(this.IdTablePrefix, keyString); ID newID; if (idEntry == null) { var itemName = this.DataProviderDamHelper.GetItemName(key); if (itemName == "Undefined") { continue; } newID = ID.NewID; IDTable.Add(this.IdTablePrefix, keyString, newID, parentId, ItemUtil.ProposeValidItemName(Path.GetFileNameWithoutExtension(itemName))); } else { newID = idEntry.ID; } idList.Add(newID); } context.DataManager.Database.Caches.DataCache.Clear(); return(idList); } return(base.GetChildIDs(itemDefinition, context)); }
public IDTableEntry GetNewID(string prefix, string key, ID parentId) { IDTableEntry newId = IDTable.GetNewID(prefix, key, parentId); return(newId); }