public IntegrationProviders(String xml) : this() { if (String.IsNullOrEmpty(xml)) { return; } try { var doc = new XmlDocument(); doc.LoadXml(xml); var spObjectProviderListXml = doc[ProviderElement]; if (spObjectProviderListXml == null) { return; } foreach (XmlNode spObjectProviderXml in spObjectProviderListXml.ChildNodes) { IntegrationProvider spObjectProvider; if (IntegrationProvider.TryParse(spObjectProviderXml, out spObjectProvider)) { Collection.Add(spObjectProvider); } } } catch (Exception ex) { SPLog.DataProvider(ex, ex.Message); } }
public static void Merge(IntegrationProvider oldvalue, IntegrationProvider newvalue) { PropertyInfo[] properties = typeof(IntegrationProvider).GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.SetProperty | BindingFlags.Instance); foreach (PropertyInfo property in properties) { if (property.CanRead && property.CanWrite) { property.SetValue(oldvalue, property.GetValue(newvalue, null), null); } } }
public void Insert(IntegrationProvider provider) { var oldProvider = GetById(provider.Id); if (oldProvider != null) { IntegrationProvider.Merge(oldProvider, provider); } else { Collection.Add(provider); } }
public static bool TryParse(XmlNode xmlNode, out IntegrationProvider manager) { manager = null; try { manager = new IntegrationProvider(xmlNode); return(true); } catch (Exception ex) { SPLog.DataProvider(ex, String.Format(IntegrationManagerParseError, ex.GetType().Name, ex.Message)); } return(false); }
private void LoadSubProviders(List <IntegrationProvider> collection, IntegrationProvider current) { using (var clientContext = new SPContext(current.SPSiteURL, current.Authentication)) { var site = clientContext.Site; clientContext.Load(site, s => s.Id, s => s.Url); var webs = clientContext.Web.Webs; clientContext.Load(webs, ws => ws.Include(w => w.Id, w => w.ServerRelativeUrl, w => w.Title, w => w.Webs)); try { clientContext.ExecuteQuery(); } catch (Exception) { return; } Parallel.ForEach(webs, new ParallelOptions { MaxDegreeOfParallelism = 5 }, website => { var provider = new IntegrationProvider { SPSiteURL = SPSite.MergeUrl(current.SPSiteURL, website.ServerRelativeUrl), TEGroupId = current.TEGroupId, TEGroupName = current.TEGroupName, Authentication = current.Authentication, SPSiteName = website.Title, SPWebID = website.Id, SPSiteID = site.Id }; collection.Add(provider); if (website.Webs.Count > 0) { LoadSubProviders(collection, provider); } }); } }