protected virtual void AddChildIDsForContactFacetItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var facetName = IDTableHelper.GetFacetName(itemDefinition.ID); var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName); foreach (string memberName in FacetReflectionUtil.NonFacetMemberNames(contractType)) { var id = IDTableHelper.GenerateIdForFacetMember(memberName, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate); ids.Add(id); } foreach (string memberName in FacetReflectionUtil.FacetMemberNames(contractType)) { foreach ( string subMemberName in FacetReflectionUtil.NonFacetMemberNames(contractType.GetProperty(memberName).PropertyType)) { string key = $"{memberName}{NestedFacets.Delimeter}{subMemberName}"; var id = IDTableHelper.GenerateIdForFacetMember(key, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate); ids.Add(id); } } }
public override Collections.IDList GetChildIDs(Data.ItemDefinition itemDefinition, CallContext context) { IDList currentChildIDs = context.CurrentResult as IDList; IDList idList = new IDList(); XPathNavigator element = (XPathNavigator)courseCache[itemDefinition.ID];// CourseData.SelectSingleNode(string.Format("//course[@id='{0}']", itemDefinition.ID.ToString())); if (element != null) { context.Abort(); XPathNodeIterator childCourses = element.Select("./courses/course"); foreach (XPathNavigator childCourse in childCourses) { ID id = ID.Parse(childCourse.GetAttribute("id", string.Empty)); idList.Add(id); } } else if (itemDefinition.ID.ToString() == ParentItemID) { context.Abort(); XPathNodeIterator childCourses = CourseData.Select("/courses/course"); foreach (XPathNavigator childCourse in childCourses) { ID id = ID.Parse(childCourse.GetAttribute("id", string.Empty)); idList.Add(id); } } return idList; }
protected virtual void AddChildIDsForContactFacetsRootItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var facetNames = ContactFacetHelper.GetFacetNames(); foreach (var name in facetNames) { var id = IDTableHelper.GenerateIdForFacet(name, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetTemplate); ids.Add(id); } }
protected virtual void AddChildIDsForContactFacetsRootItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var facetNames = ContactFacetHelper.GetFacetNames(); foreach (var name in facetNames) { var id = IDTableHelper.GenerateIdForFacet(name, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetTemplate); ids.Add(id); } }
void AddAllActions(IDList list, ControllerType controllerType, IDList existingList) { foreach (var action in ControllerAction.GetAllActions(controllerType.Id)) { if (!existingList.Contains(new ID(action.Id))) { list.Add(new ID(action.Id)); } } }
void AddAllNamespaces(IDList list, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var nspace in ControllerType.GetAllNamespaces().Where(s => { return(GetSqlVersion(new ID(s.Key), context, sqlProvider) == null); })) { list.Add(new ID(nspace.Key)); } }
public static IDList <NameableObject> getSqlObjectsFromDataTable(Type clazz, DataTable dataTable) { IDList <NameableObject> list = new IDList <NameableObject>(); foreach (DataRow row in dataTable.Rows) { NameableObject sqlObject = (NameableObject)Activator.CreateInstance(clazz); sqlObject.loadFormDataRow(row); list.Add(sqlObject); } return(list); }
public ProductsDataProvider(ILoggingService log, ProductNodeSitecoreItemFactory itemFactory, IList <ITemplateFieldValueProvider> valueProviders) { _log = log; _itemFactory = itemFactory; _firstLevelIds.Add(FieldIds.Product.ProductsRootFolderId); _sitecoreItems = new ConcurrentDictionary <ID, ISitecoreItem>(); _productValueProvider = valueProviders.OfType <ProductTemplatesBuilder>().First(); _variantValueProvider = valueProviders.OfType <ProductVariantTemplatesBuilder>().First(); WeAreReady = false; }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (itemDefinition != null && itemDefinition.ID == JoinParentId) { IDList childIDs = new IDList(); foreach (ID id in Items.Keys) { childIDs.Add(id); } return(childIDs); } return(null); }
private void AddItemsToDictionary(ISitecoreItem sitecoreItem) { _sitecoreItems[sitecoreItem.Id] = sitecoreItem; if (sitecoreItem.IsTemplate()) { _idList.Add(sitecoreItem.Id); } foreach (var child in sitecoreItem.Children) { AddItemsToDictionary(child); } }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context, DataProvider sqlProvider) { var cls = TypeConfigurations.First(x => x.Value.TemplateId == section.TemplateId).Value; var fields = cls.Properties.OfType <SitecoreFieldConfiguration>(); var fieldIds = new IDList(); foreach (var field in fields) { if (field.PropertyInfo.DeclaringType != cls.Type) { continue; } if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = sqlProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) sqlProvider.DeleteItem(existing, context); } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.CustomFieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return(fieldIds); }
void AddAllActions(IDList list, ControllerType controllerType, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var action in ControllerAction.GetAllActions(controllerType.Id).Where(a => { return(GetSqlVersion(new ID(a.Id), context, sqlProvider) == null); })) { if (!list.Contains(new ID(action.Id))) { list.Add(new ID(action.Id)); } } }
private IDList GetChildIDsTemplate(SitecoreClassConfig template, ItemDefinition itemDefinition, CallContext context) { IDList fields = new IDList(); List <string> processed = new List <string>(); var sections = template.Properties .Where(x => x.Property.DeclaringType == template.Type) .Select(x => x.Attribute).OfType <SitecoreFieldAttribute>() .Select(x => new { x.SectionName, x.SectionSortOrder }); var providers = Database.GetDataProviders(); var otherProvider = providers.FirstOrDefault(x => !(x is GlassDataProvider)); //If sitecore contains a section with the same name in the database, use that one instead of creating a new one var existing = otherProvider.GetChildIDs(itemDefinition, context).OfType <ID>().Select(id => otherProvider.GetItemDefinition(id, context)).ToList(); foreach (var section in sections) { if (processed.Contains(section.SectionName) || section.SectionName.IsNullOrEmpty()) { continue; } var record = SectionTable.FirstOrDefault(x => x.TemplateId == itemDefinition.ID && x.Name == section.SectionName); if (record == null) { var exists = existing.FirstOrDefault(def => def.Name.Equals(section)); if (exists != null) { record = new SectionInfo(section.SectionName, exists.ID, itemDefinition.ID, section.SectionSortOrder) { Existing = true }; } else { record = new SectionInfo(section.SectionName, new ID(Guid.NewGuid()), itemDefinition.ID, section.SectionSortOrder); } SectionTable.Add(record); } processed.Add(section.SectionName); if (!record.Existing) { fields.Add(record.SectionId); } } return(fields); }
void AddControllers(IDList list, Guid parentId, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var controller in ControllerType.GetAllControllers().Values.Where(c => { if (c.ParentId != parentId) { return(false); } return(GetSqlVersion(new ID(c.Id), context, sqlProvider) == null); })) { list.Add(new ID(controller.Id)); } }
protected virtual void AddChildIDsForContactFacetMemberItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var itemId = itemDefinition.ID; var facetName = IDTableHelper.GetFacetMemberFacetName(itemId); var memberName = IDTableHelper.GetFacetMemberName(itemId); var args = new GetFacetMemberValuesArgs(facetName, memberName); CorePipeline.Run("getFacetMemberValues", args); if (!args.Values.Any()) { return; } foreach (var pair in args.Values) { var id = IDTableHelper.GenerateIdForFacetMemberValue(pair.Key, pair.Value, itemId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberValueTemplate); ids.Add(id); } }
protected internal override string GenerateValue() { if (_IDRef) { _IDRef = false; return(IDList[IDList.Count - 1]); } else { string id = base.GenerateValue(); IDList.Add(id); // Add so that you can retrieve it from there for IDREF return(id); } }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { #if DEBUG var timer = Stopwatch.StartNew(); #endif var list = new IDList(); DoGetChildIDs(itemDefinition, context) .ForEach(x => list.Add(ID.Parse(x))); #if DEBUG this.Trace(list, timer, itemDefinition, context); #endif return(list); }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { var database = GetDatabase(context); var children = database.GetChildren(itemDefinition.ID.ToString()); var ids = new IDList(); if (children == null) { return(ids); } foreach (var syncItem in children) { ids.Add(ID.Parse(syncItem.ID)); } return(ids); }
protected virtual void AddChildIDsForContactFacetItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var facetName = IDTableHelper.GetFacetName(itemDefinition.ID); var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName); if (contractType == null) { return; } var members = contractType.GetMembers(); foreach (var member in members) { if (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property) { var id = IDTableHelper.GenerateIdForFacetMember(member, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate); ids.Add(id); } } }
protected virtual void AddChildIDsForContactFacetMemberItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var itemId = itemDefinition.ID; var facetName = IDTableHelper.GetFacetMemberFacetName(itemId); var memberName = IDTableHelper.GetFacetMemberName(itemId); var args = new GetFacetMemberValuesArgs(facetName, memberName); CorePipeline.Run("getFacetMemberValues", args); if (!args.Values.Any()) { return; } foreach (var pair in args.Values) { var id = IDTableHelper.GenerateIdForFacetMemberValue(pair.Key, pair.Value, itemId, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberValueTemplate); ids.Add(id); } }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { Assert.ArgumentNotNull(itemDefinition, "itemDefinition"); if (itemDefinition == ItemDefinition.Empty) return null; var children = SerializedDatabase.GetChildren(itemDefinition.ID); if (children == null) return null; var ids = new IDList(); foreach (var syncItem in children) { ids.Add(syncItem.GetSitecoreId()); } return ids; }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { var database = GetDatabase(context); var children = database.GetChildren(itemDefinition.ID.ToString()); var ids = new IDList(); if (children == null) { return ids; } foreach (var syncItem in children) { ids.Add(ID.Parse(syncItem.ID)); } return ids; }
// Here we check if the item implements our container template. If it does, // we create an association between what Sitecore will store the item as // and what our repository is storing the item as (SitecoreID<->EntityID). // This is the purpose of the IDTable. public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (this.canProcessParent(itemDefinition.ID)) { Trace.WriteLine(String.Format("GetChildIDs({0}, {1})", itemDefinition, context), "ProductDataProvider"); context.Abort(); var idList = new IDList(); var products = this.productRepository.GetAll(); foreach (var product in products) { var tableEntry = this.getSitecoreId(product.Id, itemDefinition.ID, true); idList.Add(tableEntry); } context.DataManager.Database.Caches.DataCache.Clear(); return idList; } return base.GetChildIDs(itemDefinition, context); }
private void ButtonAddBook_Click(object sender, EventArgs e) { if (inputAddBook.Text.Length == 0) { Messaging.showInputMissingMessage("Mã sách"); return; } int id = Convert.ToInt32(inputAddBook.Text); if (!main.bookManager.isBookExist(id)) { Messaging.showWarning("Sách không tồn tại"); return; } if (newBooks.getByID(id) != null) { Messaging.showWarning("Bạn đã thêm sách này"); return; } if (!isAdd) { if (!isOldBook(id)) { if (!main.bookManager.isBookAvailable(id)) { Messaging.showWarning("Sách không khả dụng"); return; } } } else { if (!main.bookManager.isBookAvailable(id)) { Messaging.showWarning("Sách không khả dụng"); return; } } BookPhieuMuon book = main.bookManager.getBookByID(id); newBooks.Add(book); bookBinding.ResetBindings(true); }
// Here we check if the item implements our container template. If it does, // we create an association between what Sitecore will store the item as // and what our repository is storing the item as (SitecoreID<->EntityID). // This is the purpose of the IDTable. public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (this.canProcessParent(itemDefinition.ID)) { Trace.WriteLine(String.Format("GetChildIDs({0}, {1})", itemDefinition, context), "ProductDataProvider"); context.Abort(); var idList = new IDList(); var products = this.productRepository.GetAll(); foreach (var product in products) { var tableEntry = this.getSitecoreId(product.Id, itemDefinition.ID, true); idList.Add(tableEntry); } context.DataManager.Database.Caches.DataCache.Clear(); return(idList); } return(base.GetChildIDs(itemDefinition, context)); }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { Assert.ArgumentNotNull(itemDefinition, "itemDefinition"); var childIds = new IDList(); var item = this.DataStorage.GetFakeItem(itemDefinition.ID); if (item == null) { return(childIds); } foreach (var child in item.Children) { childIds.Add(child.ID); } return(childIds); }
protected virtual void AddChildIDsForContactFacetItem(IDList ids, ItemDefinition itemDefinition, CallContext context) { var facetName = IDTableHelper.GetFacetName(itemDefinition.ID); var contractType = ContactFacetHelper.GetContractTypeForFacet(facetName); if (contractType == null) { return; } var members = contractType.GetMembers(); foreach (var member in members) { if (member.MemberType == MemberTypes.Field || member.MemberType == MemberTypes.Property) { var id = IDTableHelper.GenerateIdForFacetMember(member, itemDefinition.ID, Sitecore.Strategy.Contacts.DataProviders.TemplateIDs.ContactFacetMemberTemplate); ids.Add(id); } } }
public ActionResult Delete(IDList idlist) { Result result = new Result(); result.message = "删除角色失败"; if (idlist == null || idlist.Count == 0) { result.message = "您提交的数据为空,请重新选择!"; return(Json(result)); } IDList ids = new IDList(); idlist.Where(f => !string.IsNullOrEmpty(f)).ToList().ForEach(s => { Guid temp = Guid.Empty; s.Split(',').ToList().ForEach(g => { if (Guid.TryParse(g, out temp)) { ids.Add(g); } } ); }); using (ServiceProxy <IUserService> proxy = new ServiceProxy <IUserService>()) { try { proxy.Channel.DeleteRole(ids); result.success = true; result.message = "删除成功"; } catch (Exception ex) { result.message = ex.Message; } } return(Json(result)); }
/// <summary> /// Basically call the standard data provider. /// Queries the fast. /// </summary> /// <param name="query">The query.</param> /// <param name="context">The context.</param> /// <returns>A list of IDs.</returns> protected override IDList QueryFast(string query, CallContext context) { var baseIdList = this.SelectIDs(query, context); if (baseIdList != null && baseIdList.Count > 0) { return(baseIdList); } if (!this.IsTraceEnabled(query)) { return(base.QueryFast(query, context)); } var parameters = new ParametersList(); var sql = this.Translator.TranslateQuery(query, context, parameters); Log.Debug(string.Format("FastQuery: {0}", query), this); Log.Debug(string.Format("SQL Query: {0}", this.FormatSqlQuery(sql, parameters)), this); if (sql == null) { return(null); } var stopwatch = Stopwatch.StartNew(); using (var reader = this.Api.CreateReader(sql, parameters.ToArray())) { var idList = new IDList(); while (reader.Read()) { idList.Add(this.Api.GetId(0, reader)); } context.CurrentResult = idList; } Log.Debug(string.Format("Query Time: {0}ms", stopwatch.ElapsedMilliseconds), this); return(null); }
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 override IDList SelectIDs(string query, CallContext context) { #if DEBUG var timer = Stopwatch.StartNew(); #endif var list = new IDList(); ReadOnlyProviders .SelectMany(x => x .SelectIDs(query)? .Select(ID.Parse) ?? EmptyIds) .GroupBy(x => x).Select(x => x.First()) // .Distinct() .ForEach(x => list.Add(x)); #if DEBUG this.Trace(list, timer, query, context); #endif return(list); }
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)); }
private IDList GetChildIDsSection(ItemDefinition itemDefinition, SectionInfo section) { var cls = Classes.First(x => x.Value.TemplateId == section.TemplateId.Guid).Value; var fields = cls.Properties.Where(x => x.Attribute is SitecoreFieldAttribute); IDList fieldIds = new IDList(); foreach (var field in fields) { if (field.Property.DeclaringType != cls.Type) { continue; } var attr = field.Attribute as SitecoreFieldAttribute; if (attr != null && attr.CodeFirst && attr.SectionName == itemDefinition.Name) { Guid guidId; if (Guid.TryParse(attr.FieldId, out guidId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId.Guid == guidId); if (record == null) { string fieldName = attr.FieldName.IsNullOrEmpty() ? field.Property.Name : attr.FieldName; record = new FieldInfo(new ID(guidId), itemDefinition.ID, fieldName, attr.FieldType, attr.FieldSource, attr.FieldTitle, attr.IsShared, attr.IsUnversioned); } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } } return(fieldIds); }
public DataProviderAggregator(Guid entryPoint, IEnumerable <ISitecoreDataProvider> providers, ContentNodeSitecoreItemFactory factory) { _factory = factory; _entryPoint = new ID(entryPoint); _providers = providers.ToList(); _root = CreateRoot(); _firstLevelIds = new IDList { _root.Id }; _secondLevelIds = new IDList(); foreach (var provider in _providers) { provider.SetEntryIdInSitecoreTree(_root.Id); var ids = provider.GetFirstLevelIds(); foreach (ID id in ids) { _secondLevelIds.Add(id); } } }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { Assert.ArgumentNotNull(itemDefinition, "itemDefinition"); Assert.ArgumentNotNull(context, "context"); if (!ShouldExecuteProvider(itemDefinition.ID)) return null; context.Abort(); var childIds = base.GetChildIDs(itemDefinition, context); var filteredChildren = new IDList(); foreach (ID child in childIds) { if (ShouldExecuteProvider(child)) filteredChildren.Add(child); } // invoke the other data providers, if any, and *unique* the child IDs // this allows us to merge serialized items on top of an existing database item // (without this uniquing we'd get two identical children for items that were both // serialized AND in the other providers) var providers = Database.GetDataProviders(); for (int i = context.Index + 1; i < context.ProviderCount; i++) { var otherChildIds = providers[i].GetChildIDs(itemDefinition, context); if (otherChildIds == null) continue; foreach (ID child in otherChildIds) { if (!filteredChildren.Contains(child)) filteredChildren.Add(child); } } return filteredChildren; }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { ControllerType controllerType; var list = new IDList(); var existingList = context.CurrentResult as IDList ?? new IDList(); if (itemDefinition.ID == ParentId) { if (!existingList.Contains(FolderId)) { list.Add(FolderId); } } else if (itemDefinition.ID == FolderId) { AddAllNamespaces(list, existingList); } else if (ControllerType.GetAllNamespaces().ContainsKey(itemDefinition.ID.ToGuid())) { AddControllers(list, itemDefinition.ID.ToGuid(), existingList); } else if ((controllerType = ControllerType.GetControllerType(itemDefinition.ID)) != null) { AddAllActions(list, controllerType, existingList); } else { return(null); } if (list.Count == 0) { return(null); } return(list); }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context, DataProvider sqlProvider) { var config = TypeConfigurations.First(x => x.Value.TemplateId == section.TemplateId); var cls = config.Value; var fields = cls.Properties.OfType <SitecoreFieldConfiguration>(); IDList fieldIds = new IDList(); var interfaces = cls.Type.GetInterfaces(); foreach (var field in fields) { //fix: added check on interfaces, if field resides on interface then skip here var propertyFromInterface = interfaces.FirstOrDefault(inter => inter.GetProperty(field.PropertyInfo.Name) != null && inter.GetProperty(field.PropertyInfo.Name).GetCustomAttributes(typeof(SitecoreFieldAttribute), false).Any()); if (field.PropertyInfo.DeclaringType != cls.Type || propertyFromInterface != null) { continue; } if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = sqlProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) { if (DisableItemHandlerWhenDeletingFields) { using (new DisableItemHandler()) sqlProvider.DeleteItem(existing, context); } else { sqlProvider.DeleteItem(existing, context); } } } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.CustomFieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return(fieldIds); }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (itemDefinition != null && itemDefinition.ID == JoinParentId) { IDList childIDs = new IDList(); foreach (ID id in Items.Keys) { childIDs.Add(id); } return childIDs; } return null; }
private IDList GetChildIDsSection(SectionInfo section, CallContext context) { var cls = Classes.First(x => x.Value.TemplateId == section.TemplateId.Guid).Value; var fields = cls.Properties.Where(x=>x.Attribute is SitecoreFieldAttribute); IDList fieldIds = new IDList(); var providers = Database.GetDataProviders(); var otherProvider = providers.FirstOrDefault(x => !(x is GlassDataProvider)); foreach (var field in fields) { if (field.Property.DeclaringType != cls.Type) continue; var attr = field.Attribute as SitecoreFieldAttribute; if (attr != null && attr.CodeFirst && attr.SectionName == section.Name) { Guid guidId = Guid.Empty; if (Utility.GuidTryParse(attr.FieldId, out guidId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId.Guid == guidId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = otherProvider.GetItemDefinition(new ID(guidId), context); if (existing != null) { ID nullId = null; //hmm, there is a bug in sitecore ID's equality operator //ONLY delete fields belonging directly to this template!!! if the parent is not in the database OR if it is a codefirst class/section, we can safely delete it to prevent duplicates var existingParent = otherProvider.GetParentID(existing, context); if (existingParent == nullId || existingParent == ID.Null || this.SectionTable.Any(s => s.SectionId == existing.ID) || this.Classes.Any(c => c.Value.TemplateId == existing.ID.ToGuid())) { using (new SecurityDisabler()) otherProvider.DeleteItem(existing, context); } } if (record == null) { string fieldName = attr.FieldName.IsNullOrEmpty() ? field.Property.Name : attr.FieldName; record = new FieldInfo(new ID(guidId), section.SectionId, fieldName, attr.FieldType, attr.FieldSource, attr.FieldTitle, attr.IsShared, attr.IsUnversioned, attr.FieldSortOrder, attr.ValidationRegularExpression, attr.ValidationErrorText, attr.IsRequired); var fieldfieldInfoAttributes = field.Property.GetCustomAttributes(typeof (SitecoreFieldFieldValueAttribute), true); if (fieldfieldInfoAttributes != null && fieldfieldInfoAttributes.Any()) { foreach (var ffv in fieldfieldInfoAttributes.Cast<SitecoreFieldFieldValueAttribute>()) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } } return fieldIds; }
private IDList GetChildIDsTemplate(SitecoreClassConfig template, ItemDefinition itemDefinition, CallContext context) { IDList fields = new IDList(); List<string> processed = new List<string>(); var sections = template.Properties .Where(x=>x.Property.DeclaringType == template.Type) .Select(x=>x.Attribute).OfType<SitecoreFieldAttribute>() .Select(x => new { x.SectionName, x.SectionSortOrder }); var providers = Database.GetDataProviders(); var otherProvider = providers.FirstOrDefault(x => !(x is GlassDataProvider)); //If sitecore contains a section with the same name in the database, use that one instead of creating a new one var otherChildIds = otherProvider.GetChildIDs(itemDefinition, context); var existing = (otherChildIds ?? new IDList()).OfType<ID>().Select(id => otherProvider.GetItemDefinition(id, context)).ToList(); foreach (var section in sections) { if (processed.Contains(section.SectionName) || section.SectionName.IsNullOrEmpty()) continue; var record = SectionTable.FirstOrDefault(x => x.TemplateId == itemDefinition.ID && x.Name == section.SectionName); if (record == null) { var exists = existing.FirstOrDefault(def => def.Name.Equals(section)); if (exists != null) { record = new SectionInfo(section.SectionName, exists.ID, itemDefinition.ID, section.SectionSortOrder) { Existing = true }; } else { record = new SectionInfo(section.SectionName, new ID(Guid.NewGuid()), itemDefinition.ID, section.SectionSortOrder); } SectionTable.Add(record); } processed.Add(section.SectionName); if (!record.Existing) fields.Add(record.SectionId); } return fields; }
/// <summary> /// Basically call the standard data provider. /// Queries the fast. /// </summary> /// <param name="query">The query.</param> /// <param name="context">The context.</param> /// <returns>A list of IDs.</returns> protected override IDList QueryFast(string query, CallContext context) { var baseIdList = this.SelectIDs(query, context); if (baseIdList != null && baseIdList.Count > 0) return baseIdList; if (!this.IsTraceEnabled(query)) return base.QueryFast(query, context); var parameters = new ParametersList(); var sql = this.Translator.TranslateQuery(query, context, parameters); Log.Debug(string.Format("FastQuery: {0}", query), this); Log.Debug(string.Format("SQL Query: {0}", this.FormatSqlQuery(sql, parameters)), this); if (sql == null) return null; var stopwatch = Stopwatch.StartNew(); using (var reader = this.Api.CreateReader(sql, parameters.ToArray())) { var idList = new IDList(); while (reader.Read()) { idList.Add(this.Api.GetId(0, reader)); } context.CurrentResult = idList; } Log.Debug(string.Format("Query Time: {0}ms", stopwatch.ElapsedMilliseconds), this); return null; }
void AddAllActions(IDList list, ControllerType controllerType) { foreach (var action in ControllerAction.GetAllActions(ParentId.ToGuid()).Where(a => a.ControllerType.Type == controllerType.Type)) { list.Add(new ID(action.Id)); } }
void AddAllControllers(IDList list) { foreach (var controller in ControllerType.GetControllerIds(ParentId.ToGuid())) { list.Add(new ID(controller.Key)); } }
void AddAllNamespaces(IDList list, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var nspace in ControllerType.GetAllNamespaces().Where(s => { return GetSqlVersion(new ID(s.Key), context, sqlProvider) == null; })) { list.Add(new ID(nspace.Key)); } }
void AddControllers(IDList list, Guid parentId, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var controller in ControllerType.GetAllControllers().Values.Where(c => { if (c.ParentId != parentId) return false; return GetSqlVersion(new ID(c.Id), context, sqlProvider) == null; })) { list.Add(new ID(controller.Id)); } }
public override IDList GetChildIDs([NotNull] ItemDefinition itemDefinition, [NotNull] CallContext context) { Assert.ArgumentNotNull(itemDefinition, "itemDefinition"); Assert.ArgumentNotNull(context, "context"); var itemId = itemDefinition.ID; Assert.IsNotNull(itemId, "itemId"); var childIDs = new IDList(); // several segments can point to same root so let's collect items from all of them foreach (var segment in this.Segments) { Assert.IsNotNull(segment, "segment"); var segmentChildIDs = segment.GetChildIDs(itemId); if (segmentChildIDs == null) { continue; } foreach (var childID in segmentChildIDs) { Assert.IsNotNull(childID, "childID"); childIDs.Add(childID); } } // check if SQL has items too var sqlChildIDs = base.GetChildIDs(itemDefinition, context); if (sqlChildIDs == null) { return childIDs; } // merge segments' items with ones from SQL foreach (var id in sqlChildIDs.Cast<ID>()) { childIDs.Add(id); } return childIDs; }
void AddAllActions(IDList list, ControllerType controllerType, CallContext context) { var sqlProvider = GetSqlProvider(Database); foreach (var action in ControllerAction.GetAllActions(controllerType.Id).Where(a => { return GetSqlVersion(new ID(a.Id), context, sqlProvider) == null; })) { if (!list.Contains(new ID(action.Id))) list.Add(new ID(action.Id)); } }
// Gets YouTube items for publishing. It happens all the time. public override IDList GetPublishQueue(DateTime from, DateTime to, CallContext context) { IDList list = new IDList(); foreach (DictionaryEntry item in _items) { YTItemInfo ytItemInfo = (YTItemInfo) item.Value; list.Add(ytItemInfo.ItemID); } return list; }
public override IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { ControllerType controllerType; var list = new IDList(); if (itemDefinition.ID == ParentId) { if (GetSqlVersion(FolderId, context, GetSqlProvider(Database)) == null) list.Add(FolderId); } else if (itemDefinition.ID == FolderId) { AddAllNamespaces(list, context); } else if (ControllerType.GetAllNamespaces().ContainsKey(itemDefinition.ID.ToGuid())) { AddControllers(list, itemDefinition.ID.ToGuid(), context); } else if ((controllerType = ControllerType.GetControllerType(itemDefinition.ID)) != null) { AddAllActions(list, controllerType, context); } else { return null; } if (list.Count == 0) return null; return list; }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context, DataProvider sqlProvider) { var config = TypeConfigurations.First(x => x.Value.TemplateId == section.TemplateId); var cls = config.Value; var fields = cls.Properties.OfType<SitecoreFieldConfiguration>(); IDList fieldIds = new IDList(); var interfaces = cls.Type.GetInterfaces(); foreach (var field in fields) { //fix: added check on interfaces, if field resides on interface then skip here var propertyFromInterface = interfaces.FirstOrDefault(inter => inter.GetProperty(field.PropertyInfo.Name) != null && inter.GetProperty(field.PropertyInfo.Name).GetCustomAttributes(typeof(SitecoreFieldAttribute), false).Any()); if (field.PropertyInfo.DeclaringType != cls.Type || propertyFromInterface != null) continue; if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = sqlProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) { if (DisableItemHandlerWhenDeletingFields) { using (new DisableItemHandler()) sqlProvider.DeleteItem(existing, context); } else { sqlProvider.DeleteItem(existing, context); } } } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.CustomFieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return fieldIds; }
public override IDList GetPublishQueue(DateTime from, DateTime to, CallContext context) { var items = Provider.WritableProvider.GetPublishQueue(from, to); Hashtable hashtable = new Hashtable(); IDList list = new IDList(); foreach (var item in items) { if (hashtable.ContainsKey(item.Id)) continue; hashtable[item.Id] = string.Empty; list.Add(new ID(item.Id)); } return list; }
// Returns the IDs of the given item’s children. public override Sitecore.Collections.IDList GetChildIDs(ItemDefinition itemDefinition, CallContext context) { if (CanProcessParent(itemDefinition.ID, context)) { ID parentID = itemDefinition.ID; IDictionary<string, string> ids = LoadDataID(parentID); IDList idList = new IDList(); foreach (var itemId in ids) { IDTableEntry idEntry = IDTable.GetID(prefix, itemId.Key); ID newID; if (idEntry == null) { newID = ID.NewID; IDTable.Add(prefix, itemId.Key, newID, parentID, itemId.Value); } else { newID = idEntry.ID; } idList.Add(newID); } context.DataManager.Database.Caches.DataCache.RemoveItemInformation(itemDefinition.ID); return idList; } return null; }
/// <summary> /// returns a string array of gene_ids associated with a strain (transgenes, gene genotypes, genomic segments) /// </summary> /// <param name="StrainID">ID Object</param> /// <returns>string array</returns> public virtual string[] GetGeneIDsFromStrain(ID StrainID) { if (StrainID.IsNull) { string[] no_genes = new string[1]; no_genes[0] = ""; return no_genes; } GenomeMgr gMgr = GenomeMgr.Instance; GeneGenotypeList genotypes; TransgeneList transgenes; GenomicSegmentList segments; genotypes = gMgr.GetGeneGenotypes(StrainID); transgenes = gMgr.GetTransgenes(StrainID); segments = gMgr.GetGenomicSegments(StrainID); IDList EntrezGeneIDs = new IDList(); foreach (GeneGenotype g in genotypes) { if (g.Gene.EntrezGeneID.IsValid) EntrezGeneIDs.Add(g.Gene.EntrezGeneID); } foreach (Transgene tg in transgenes) { if (tg.Gene.EntrezGeneID.IsValid) EntrezGeneIDs.Add(tg.Gene.EntrezGeneID); if (tg.Enhancer.Gene.EntrezGeneID.IsValid) EntrezGeneIDs.Add(tg.Enhancer.Gene.EntrezGeneID); if (tg.Promoter.Gene.EntrezGeneID.IsValid) EntrezGeneIDs.Add(tg.Promoter.Gene.EntrezGeneID); } foreach (GenomicSegment gs in segments) { if (gs.DistalFlanking.EntrezGeneID.IsValid) EntrezGeneIDs.Add(gs.DistalFlanking.EntrezGeneID); if (gs.DistalLocus.EntrezGeneID.IsValid) EntrezGeneIDs.Add(gs.DistalLocus.EntrezGeneID); if (gs.ProximalFlanking.EntrezGeneID.IsValid) EntrezGeneIDs.Add(gs.ProximalFlanking.EntrezGeneID); if (gs.ProximalLocus.EntrezGeneID.IsValid) EntrezGeneIDs.Add(gs.ProximalLocus.EntrezGeneID); } int count = EntrezGeneIDs.Count; if (count > 0) { string[] gene_ids = new string[count]; for (int i = 0; i < count; i++) gene_ids[i] = EntrezGeneIDs[i].ToString(); return gene_ids; } return null; }
public IDList SelectIds(string query, Sitecore.Data.DataProviders.CallContext callContext) { IDList returnList = new IDList(); //fast query if (query.StartsWith("fast:")) { query = query.Substring(5); if (!query.Contains("*")) { var id = GetItemFromSimplePath(query); if (id != Guid.Empty) returnList.Add(new ID(id)); } else if(query.Contains("[")) { List<Guid> guids = GetItemsMatchingPredicate(query); guids.ForEach(g => returnList.Add(new ID(g))); } else if (query.EndsWith(@"//*")) { List<Guid> guids = GetMatchingItemsForDescendantPath(query); guids.ForEach(g => returnList.Add(new ID(g))); } else if (query.EndsWith(@"/*") && !query.Contains(@"//")) { List<Guid> guids = GetMatchingItemsForWildcardPath(query); guids.ForEach(g => returnList.Add(new ID(g))); } return returnList; } return null; }
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)); }
/// <summary> /// Gets the child I ds template. /// </summary> /// <param name="template">The template.</param> /// <param name="itemDefinition">The item definition.</param> /// <param name="context">The context.</param> /// <param name="sqlProvider">The SQL provider.</param> /// <returns> /// IDList. /// </returns> private IDList GetChildIDsTemplate(SitecoreTypeConfiguration template, ItemDefinition itemDefinition, CallContext context, DataProvider sqlProvider) { var fields = new IDList(); var processed = new List<string>(); var sections = template.Properties .Where(x => x.PropertyInfo.DeclaringType == template.Type) .OfType<SitecoreFieldConfiguration>() .Select(x => new { x.SectionName, x.SectionSortOrder }); //If sitecore contains a section with the same name in the database, use that one instead of creating a new one var existing = sqlProvider.GetChildIDs(itemDefinition, context).OfType<ID>().Select(id => sqlProvider.GetItemDefinition(id, context)) .Where(item => item.TemplateID == SectionTemplateId).ToList(); foreach (var section in sections) { if (processed.Contains(section.SectionName) || section.SectionName.IsNullOrEmpty()) continue; var record = SectionTable.FirstOrDefault(x => x.TemplateId == itemDefinition.ID && x.Name == section.SectionName); if (record == null) { var exists = existing.FirstOrDefault(def => def.Name.Equals(section.SectionName, StringComparison.InvariantCultureIgnoreCase)); var newId = GetUniqueGuid(itemDefinition.ID + section.SectionName); const int newSortOrder = 100; record = exists != null ? new SectionInfo(section.SectionName, exists.ID, itemDefinition.ID, section.SectionSortOrder) { Existing = true } : new SectionInfo(section.SectionName, new ID(newId), itemDefinition.ID, newSortOrder); SectionTable.Add(record); } processed.Add(section.SectionName); if (!record.Existing) fields.Add(record.SectionId); } //we need to add sections already in the db, 'cause we have to foreach (var sqlOne in existing.Where(ex => SectionTable.All(s => s.SectionId != ex.ID))) { SectionTable.Add(new SectionInfo(sqlOne.Name, sqlOne.ID, itemDefinition.ID, 0) { Existing = true } ); } return fields; }
public virtual void AddItem(ISitecoreItem item) { item.ParentId = Id; _children.Add(item); _childIds.Add(item.Id); }
/// <summary> /// Gets the child I ds section. /// </summary> /// <param name="section">The section.</param> /// <param name="context">The context.</param> /// <returns>IDList.</returns> private IDList GetChildIDsSection(SectionInfo section, CallContext context) { var cls = _typeConfigurations.First(x => x.Value.TemplateId == section.TemplateId).Value; var fields = cls.Properties.OfType<SitecoreFieldConfiguration>(); IDList fieldIds = new IDList(); var providers = context.DataManager.Database.GetDataProviders(); var otherProvider = providers.FirstOrDefault(x => !(x is GlassDataProvider)); foreach (var field in fields) { if (field.PropertyInfo.DeclaringType != cls.Type) continue; if (field.CodeFirst && field.SectionName == section.Name && !ID.IsNullOrEmpty(field.FieldId)) { var record = FieldTable.FirstOrDefault(x => x.FieldId == field.FieldId); //test if the fields exists in the database: if so, we're using codefirst now, so remove it. var existing = otherProvider.GetItemDefinition(field.FieldId, context); if (existing != null) { using (new SecurityDisabler()) otherProvider.DeleteItem(existing, context); } if (record == null) { string fieldName = field.FieldName.IsNullOrEmpty() ? field.PropertyInfo.Name : field.FieldName; record = new FieldInfo(field.FieldId, section.SectionId, fieldName, field.FieldType, field.FieldSource, field.FieldTitle, field.IsShared, field.IsUnversioned, field.FieldSortOrder, field.ValidationRegularExpression, field.ValidationErrorText, field.IsRequired); if (field.FieldValueConfigs != null && field.FieldValueConfigs.Any()) { foreach (var ffv in field.FieldValueConfigs) { record.FieldFieldValues.Add(ffv.FieldId, ffv.FieldValue); } } } fieldIds.Add(record.FieldId); FieldTable.Add(record); } } return fieldIds; }