Ejemplo n.º 1
0
 public BondegardFacade(IVisualFarmRepo repo,
                        ICacheManager cacheManager,
                        IUnitOfWork unitOfWork, IVFSConfig config)
 {
     _repo         = repo;
     _cacheManager = cacheManager;
     _unitOfWork   = unitOfWork;
     _config       = config;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 配置检查: 检查各组的Folder是否有冲突, 如果有冲突,返回true
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public static bool CheckConfig_GroupFolder(ref IVFSConfig config, out GroupFolderInfo[] folders)
        {
            if (config.PGroups == null || config.PGroups.Length == 0)
            {
                folders = null;
                return(false);
            }
            List <GroupFolderInfo> list_folders = new List <GroupFolderInfo>();

            for (var i = 0; i < config.PGroups.Length; i++)
            {
                string group_name = config.PGroups[i].GroupName;
                //检查组内部
                if (config.PGroups[i].CheckFolderConflict(out var paths))
                {
                    //有冲突
                    paths.ForEach(path => list_folders.Add(new GroupFolderInfo()
                    {
                        FolderPath = path, GroupName = group_name
                    }));
                    folders = list_folders.ToArray();
                    return(true);
                }

                //检查当前组与之前的组之间是否存在冲突
                if (i > 0)
                {
                    foreach (var path in config.PGroups[i].FolderPaths)
                    {
                        for (var j = 0; j < i; j++)
                        {
                            var _g_name = config.PGroups[i].GroupName;
                            if (config.PGroups[i].CheckFolderConflict(out var result_paths, true))
                            {
                                //有冲突
                                list_folders.Add(new GroupFolderInfo()
                                {
                                    GroupName = group_name, FolderPath = path
                                });
                                result_paths.ForEach(r_path => list_folders.Add(new GroupFolderInfo()
                                {
                                    FolderPath = r_path, GroupName = _g_name
                                }));
                                folders = list_folders.ToArray();
                                return(true);
                            }
                        }
                    }
                }
            }
            folders = null;
            return(false);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 检查配置 (检查所有项目), 如果检查通过返回true, 否则返回false
        /// </summary>
        /// <param name="config"></param>
        /// <param name=""></param>
        /// <param name="errorfolders">如果有group内folder相关的错误,则在此处体现</param>
        /// <returns>if error ,return false</returns>
        public static bool CheckConfiguration(IVFSConfig config, out VFSErrorCode error, out GroupFolderInfo[] errorfolders)
        {
            errorfolders = null;

            #region 没有任何Group?
            if (config.PGroups == null || config.PGroups.Length == 0)
            {
                error = VFSErrorCode.NoneGroup;
                return(false);
            }
            #endregion

            #region 检查组名称是否重复
            List <string> temp_list = new List <string>();
            foreach (var group in config.PGroups)
            {
                if (temp_list.Contains(group.GroupName))
                {
                    //存在重复命名
                    error = VFSErrorCode.SameGroupName;
                    return(false);
                }
                else
                {
                    temp_list.Add(group.GroupName);
                }
            }


            #endregion

            #region 检查各组的folder配置是否冲突
            if (CheckConfig_GroupFolder(ref config, out var folders))
            {
                errorfolders = folders;
                error        = VFSErrorCode.ConfigureGroupsConflict;
                return(false);
            }

            #endregion

            error = default;
            return(true);
        }
Ejemplo n.º 4
0
 public SessionProvider(IVFSConfig config)
 {
     _config  = config;
     _factory = BuildSessionFactory();
 }
Ejemplo n.º 5
0
 public SessionProvider(IVFSConfig config)
 {
     _config = config;
     _factory = BuildSessionFactory();
 }
Ejemplo n.º 6
0
 public VisualFarmMigrator()
 {
     _config = new VFSConfig();
     _options = new MigrationOptions();
     _options.SupportedProviders.Set(ProviderNames.SqlServer2008.AsArray());
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 配置规范化
        /// </summary>
        /// <param name="config"></param>
        public static void NormalizationConfig(IVFSConfig config)
        {
            if (config == null)
            {
                return;
            }
            //全局配置

            //后缀名配置 补全缺失的“框架内部定义的必须存在的”配置项
            #region 全局 后缀名 内部配置项
            if (config.PGlobalVFS_Ignore_ExtName == null)
            {
                config.PGlobalVFS_Ignore_ExtName = new string[0];
            }
            List <string> ext_list = new List <string>();
            foreach (var item in TinaX.VFSKitInternal.InternalVFSConfig.GlobalIgnoreExtName)
            {
                if (!config.PGlobalVFS_Ignore_ExtName.Contains(item))
                {
                    ext_list.Add(item);
                }
            }
            if (ext_list.Count > 0)
            {
                config.PGlobalVFS_Ignore_ExtName = ArrayUtil.Combine(config.PGlobalVFS_Ignore_ExtName, ext_list.ToArray());
            }
            #endregion

            //后缀名配置必须要以点开头,并小写
            #region 全局 后缀名 格式规范
            if (config.PGlobalVFS_Ignore_ExtName != null && config.PGlobalVFS_Ignore_ExtName.Length > 0)
            {
                for (var i = 0; i < config.PGlobalVFS_Ignore_ExtName.Length; i++)
                {
                    if (!config.PGlobalVFS_Ignore_ExtName[i].StartsWith("."))
                    {
                        config.PGlobalVFS_Ignore_ExtName[i] = "." + config.PGlobalVFS_Ignore_ExtName[i];
                    }

                    config.PGlobalVFS_Ignore_ExtName[i] = config.PGlobalVFS_Ignore_ExtName[i].ToLower();
                }
            }
            #endregion

            //后缀名配置 重复项
            #region 全局 后缀名 重复项
            if (config.PGlobalVFS_Ignore_ExtName != null && config.PGlobalVFS_Ignore_ExtName.Length > 0)
            {
                List <string> list = new List <string>(config.PGlobalVFS_Ignore_ExtName).Distinct().ToList();
                if (list.Count != config.PGlobalVFS_Ignore_ExtName.Length)
                {
                    config.PGlobalVFS_Ignore_ExtName = list.ToArray();
                }
            }
            #endregion


            #region 全局 忽略 路径 item

            //补全内部设定
            if (config.PGlobalVFS_Ignore_Path_Item == null)
            {
                config.PGlobalVFS_Ignore_Path_Item = new string[0];
            }
            List <string> tmp_path_item_list = new List <string>(config.PGlobalVFS_Ignore_Path_Item);
            foreach (var item in TinaX.VFSKitInternal.InternalVFSConfig.GlobalIgnorePathItem)
            {
                if (!tmp_path_item_list.Contains(item))
                {
                    tmp_path_item_list.Add(item);
                }
            }
            List <string> temp_2 = new List <string>();
            //查重和空白项目
            for (int i = tmp_path_item_list.Count - 1; i >= 0; i--)
            {
                if (!tmp_path_item_list[i].IsNullOrEmpty())
                {
                    if (!temp_2.Any(item => item.ToLower() == tmp_path_item_list[i].ToLower()))
                    {
                        temp_2.Add(tmp_path_item_list[i]);
                    }
                }
            }

            config.PGlobalVFS_Ignore_Path_Item = temp_2.ToArray();


            #endregion

            #region 全局 Assetbundle细节
            if (config.PAssetBundleFileExtension.IsNullOrEmpty() || config.PAssetBundleFileExtension.IsNullOrWhiteSpace())
            {
                config.PAssetBundleFileExtension = InternalVFSConfig.default_AssetBundle_ExtName;
            }

            if (!config.PAssetBundleFileExtension.StartsWith("."))
            {
                config.PAssetBundleFileExtension = "." + config.PAssetBundleFileExtension;
            }
            config.PAssetBundleFileExtension = config.PAssetBundleFileExtension.ToLower();

            #endregion

            #region WebVFS
            if (config.PDefaultWebVFSBaseUrl.IsNullOrEmpty() || config.PDefaultWebVFSBaseUrl.IsNullOrWhiteSpace())
            {
                config.PDefaultWebVFSBaseUrl = VFSKit.VFSKit.DefaultDownloadWebAssetUrl;
            }
            if (!config.PDefaultWebVFSBaseUrl.EndsWith("/"))
            {
                config.PDefaultWebVFSBaseUrl += "/";
            }
            #endregion


            #region 至少包含一个Group
            if (config.PGroups == null || config.PGroups.Length == 0)
            {
                config.PGroups = new VFSGroupOption[] { VFSGroupOption.New() };
            }
            #endregion
        }
Ejemplo n.º 8
0
 public VisualFarmMigrator()
 {
     _config  = new VFSConfig();
     _options = new MigrationOptions();
     _options.SupportedProviders.Set(ProviderNames.SqlServer2008.AsArray());
 }