Example #1
0
        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);
                }
            }
        }
Example #3
0
        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);
        }
Example #5
0
        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);
                    }
                });
            }
        }