Пример #1
0
        private static SearchOUIDType GetSearchOUIDType(int iSoc)
        {
            SearchOUIDType result = SearchOUIDType.None;

            if (Enum.TryParse(iSoc.ToString(), out result) == false)
            {
                throw new ApplicationException(string.Format("\"{0}\"不是能够接受的查询ID类型", iSoc));
            }

            return(result);
        }
Пример #2
0
        private static QueryByIDsAdapterBase <DataTable> GetSearchChildrenAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, string keyword, int maxCount, bool recursively, bool includeNonDefault, bool includeDeleted)
        {
            QueryByIDsAdapterBase <DataTable> result = null;

            switch (idType)
            {
            case SearchOUIDType.LogOnName:
                result = new SearchChildrenByCodeNamesReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                break;

            case SearchOUIDType.Guid:
                result = new SearchChildrenByGuidsReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                break;

            case SearchOUIDType.FullPath:
                result = new SearchChildrenByFullPathsReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                break;
            }

            return(result);
        }
Пример #3
0
        //internal static void InternalRemoveAllCache()
        //{
        //    string[] cacheQueueType = {
        //                                "MCS.Library.OGUPermission.OguObjectIDCache, MCS.Library.OGUPermission",
        //                                "MCS.Library.OGUPermission.OguObjectFullPathCache, MCS.Library.OGUPermission",
        //                                "MCS.Library.OGUPermission.OguObjectLogOnNameCache, MCS.Library.OGUPermission",
        //                                "PermissionCenter.Caching.ServiceMethodCache, PermissionCenterServices"
        //                              };

        //    CacheNotifyData[] data = new CacheNotifyData[cacheQueueType.Length];

        //    for (int i = 0; i < cacheQueueType.Length; i++)
        //    {
        //        data[i] = new CacheNotifyData();
        //        data[i].CacheQueueTypeDesp = cacheQueueType[i];
        //        data[i].NotifyType = CacheNotifyType.Clear;
        //    }

        //    UdpCacheNotifier.Instance.SendNotify(data);
        //}

        internal static QueryByIDsAdapterBase <DataTable> GetSearchAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, bool includeDeleted)
        {
            QueryByIDsAdapterBase <DataTable> result = null;

            switch (idType)
            {
            case SearchOUIDType.LogOnName:
                result = new QueryByCodeNamesReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;

            case SearchOUIDType.Guid:
                result = new QueryByGuidsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;

            case SearchOUIDType.FullPath:
                result = new QueryByFullPathsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;
            }

            return(result);
        }
Пример #4
0
        /// <summary>
        /// 根据ID类型得到Cache实例
        /// </summary>
        /// <param name="idType"></param>
        /// <returns></returns>
        public static OguObjectCacheBase GetInstance(SearchOUIDType idType)
        {
            OguObjectCacheBase result = null;

            switch (idType)
            {
            case SearchOUIDType.Guid:
                result = OguObjectIDCache.Instance;
                break;

            case SearchOUIDType.FullPath:
                result = OguObjectFullPathCache.Instance;
                break;

            case SearchOUIDType.LogOnName:
                result = OguObjectLogOnNameCache.Instance;
                break;
            }

            return(result);
        }
        private static SearchOUIDType GetSearchOUIDType(UserValueType userValueType)
        {
            SearchOUIDType result = SearchOUIDType.None;

            switch (userValueType)
            {
            case UserValueType.Guid:
                result = SearchOUIDType.Guid;
                break;

            case UserValueType.AllPath:
                result = SearchOUIDType.FullPath;
                break;

            case UserValueType.LogonName:
                result = SearchOUIDType.LogOnName;
                break;

            default:
                throw new NotSupportedException(string.Format("不支持的用户ID类型{0}", userValueType));
            }

            return(result);
        }
Пример #6
0
        private static QueryByIDsAdapterBase <DataTable> GetQueryChildrenAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, bool recursively, bool includeNonDefault, bool includeDeleted)
        {
            QueryByIDsAdapterBase <DataTable> result = null;

            switch (idType)
            {
            case SearchOUIDType.LogOnName:
                result = new QueryChildrenByCodeNamesReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                break;

            case SearchOUIDType.Guid:
                result = new QueryChildrenByGuidsReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                break;

            case SearchOUIDType.FullPath:
                result = new QueryChildrenByFullPathsReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                break;

            default:
                throw new NotSupportedException("不支持此查询方式");
            }

            return(result);
        }
        private static QueryByIDsAdapterBase<DataTable> GetMemberContainersAdapter(string[] schemaTypes, SearchOUIDType idType, string[] ids, bool includeDeleted)
        {
            QueryByIDsAdapterBase<DataTable> result = null;

            switch (idType)
            {
                case SearchOUIDType.LogOnName:
                    result = new QueryMemberBelongToContainersByCodeNamesReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
                case SearchOUIDType.Guid:
                    result = new QueryMemberBelongToContainersByGuidsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
                case SearchOUIDType.FullPath:
                    result = new QueryMemberBelongToContainersByFullPathsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
            }

            return result;
        }
        private static QueryByIDsAdapterBase<DataTable> GetSearchChildrenAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, string keyword, int maxCount, bool recursively, bool includeNonDefault, bool includeDeleted)
        {
            QueryByIDsAdapterBase<DataTable> result = null;

            switch (idType)
            {
                case SearchOUIDType.LogOnName:
                    result = new SearchChildrenByCodeNamesReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                    break;
                case SearchOUIDType.Guid:
                    result = new SearchChildrenByGuidsReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                    break;
                case SearchOUIDType.FullPath:
                    result = new SearchChildrenByFullPathsReturnTableAdapter(schemaTypes, ids, keyword, maxCount, recursively, includeNonDefault, includeDeleted);
                    break;
            }

            return result;
        }
        private static QueryByIDsAdapterBase<DataTable> GetQueryChildrenAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, bool recursively, bool includeNonDefault, bool includeDeleted)
        {
            QueryByIDsAdapterBase<DataTable> result = null;

            switch (idType)
            {
                case SearchOUIDType.LogOnName:
                    result = new QueryChildrenByCodeNamesReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                    break;
                case SearchOUIDType.Guid:
                    result = new QueryChildrenByGuidsReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                    break;
                case SearchOUIDType.FullPath:
                    result = new QueryChildrenByFullPathsReturnTableAdapter(schemaTypes, ids, recursively, includeNonDefault, includeDeleted);
                    break;
                default:
                    throw new NotSupportedException("不支持此查询方式");
            }

            return result;
        }
        //internal static void InternalRemoveAllCache()
        //{
        //    string[] cacheQueueType = {
        //                                "MCS.Library.OGUPermission.OguObjectIDCache, MCS.Library.OGUPermission", 
        //                                "MCS.Library.OGUPermission.OguObjectFullPathCache, MCS.Library.OGUPermission", 
        //                                "MCS.Library.OGUPermission.OguObjectLogOnNameCache, MCS.Library.OGUPermission",
        //                                "PermissionCenter.Caching.ServiceMethodCache, PermissionCenterServices"
        //                              };

        //    CacheNotifyData[] data = new CacheNotifyData[cacheQueueType.Length];

        //    for (int i = 0; i < cacheQueueType.Length; i++)
        //    {
        //        data[i] = new CacheNotifyData();
        //        data[i].CacheQueueTypeDesp = cacheQueueType[i];
        //        data[i].NotifyType = CacheNotifyType.Clear;
        //    }

        //    UdpCacheNotifier.Instance.SendNotify(data);
        //}

        internal static QueryByIDsAdapterBase<DataTable> GetSearchAdapter(SearchOUIDType idType, string[] schemaTypes, string[] ids, bool includeDeleted)
        {
            QueryByIDsAdapterBase<DataTable> result = null;

            switch (idType)
            {
                case SearchOUIDType.LogOnName:
                    result = new QueryByCodeNamesReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
                case SearchOUIDType.Guid:
                    result = new QueryByGuidsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
                case SearchOUIDType.FullPath:
                    result = new QueryByFullPathsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                    break;
            }

            return result;
        }
Пример #11
0
 public OguObjectCollection <T> GetObjects <T>(SearchOUIDType idType, params string[] ids) where T : IOguObject
 {
     return(idType.ToQueryAdapter <T>(typeof(T).ToSchemaTypes(), ids).Query());
 }
Пример #12
0
        public OguObjectCollection <T> GetObjects <T>(SearchOUIDType idType, params string[] ids) where T : IOguObject
        {
            ExceptionHelper.FalseThrow <ArgumentNullException>(ids != null, "ids");

            SchemaType objType = OguObjectHelper.GetSchemaTypeFromInterface <T>();

            ExceptionHelper.TrueThrow(idType == SearchOUIDType.LogOnName &&
                                      (objType & ~(SchemaType.Users | SchemaType.Sideline)) != SchemaType.Unspecified, Resource.OnlyUserCanUserLogOnNameQuery);

            OguObjectCollection <T> result = null;

            if (ids.Length > 0)
            {
                string[]  notInCacheIds = null;
                IList <T> objsInCache   = null;

                if (ServiceBrokerContext.Current.UseLocalCache)
                {
                    objsInCache = OguObjectCacheBase.GetInstance(idType).GetObjectsInCache <T>(ids, out notInCacheIds);
                }
                else
                {
                    notInCacheIds = ids;
                    objsInCache   = new List <T>();
                }

                if (notInCacheIds.Length > 0)
                {
                    string multiIDString = BuildIDString(notInCacheIds);

                    DataSet ds = OguReaderServiceBroker.Instance.GetObjectsDetail(
                        SchemaTypeToString(objType),
                        multiIDString,
                        (int)idType,
                        string.Empty,
                        0,
                        Common.DefaultAttrs);

                    //RemoveDeletedObject(ds.Tables[0]); //原来有这句话,现在去掉,可以查询已经逻辑删除的对象

                    OguObjectCollection <T> queryResult = new OguObjectCollection <T>(Common.BuildObjectsFromTable <T>(ds.Tables[0]));

                    queryResult = queryResult.GetRemovedDuplicateDeletedObjectCollection();

                    if (ServiceBrokerContext.Current.UseLocalCache)
                    {
                        OguObjectCacheBase.GetInstance(idType).AddObjectsToCache <T>(queryResult);
                    }

                    foreach (T obj in queryResult)
                    {
                        objsInCache.Add(obj);
                    }
                }

                result = new OguObjectCollection <T>(objsInCache);
                result.Sort(OrderByPropertyType.GlobalSortID, SortDirectionType.Ascending);
            }
            else
            {
                result = new OguObjectCollection <T>();
            }

            return(result);
        }
Пример #13
0
        public static QueryByIDsAdapterBase <OguObjectCollection <T> > ToQueryAdapter <T>(this SearchOUIDType idType, string[] schemaTypes, string[] ids) where T : IOguObject
        {
            QueryByIDsAdapterBase <OguObjectCollection <T> > result = null;

            switch (idType)
            {
            case SearchOUIDType.Guid:
                result = new QueryByGuidsAdapter <T>(schemaTypes, ids);
                break;

            case SearchOUIDType.FullPath:
                result = new QueryByFullPathsAdapter <T>(schemaTypes, ids);
                break;

            case SearchOUIDType.LogOnName:
                result = new QueryByCodeNamesAdapter <T>(schemaTypes, ids);
                break;

            default:
                throw new ArgumentException(string.Format("{0}不是可以处理的ID类型", idType), "idType");
            }

            return(result);
        }
Пример #14
0
        private static QueryByIDsAdapterBase <DataTable> GetMemberContainersAdapter(string[] schemaTypes, SearchOUIDType idType, string[] ids, bool includeDeleted)
        {
            QueryByIDsAdapterBase <DataTable> result = null;

            switch (idType)
            {
            case SearchOUIDType.LogOnName:
                result = new QueryMemberBelongToContainersByCodeNamesReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;

            case SearchOUIDType.Guid:
                result = new QueryMemberBelongToContainersByGuidsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;

            case SearchOUIDType.FullPath:
                result = new QueryMemberBelongToContainersByFullPathsReturnTableAdapter(schemaTypes, ids, includeDeleted);
                break;
            }

            return(result);
        }