コード例 #1
0
        public RainbowSerializationProvider(string name) : base(name)
        {
            _name = name;

            var config = (RainbowConfigSection)ConfigurationManager.GetSection("rainbow");
            var rainbowConfigFactory = new RainbowConfigFactory(config);

            _formatter = rainbowConfigFactory.CreateFormatter() as YamlSerializationFormatter;
        }
コード例 #2
0
        protected override void BeginProcessing()
        {
            try
            {
                var currentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE",
                                                Path.Combine(currentDirectory, "Sitecore.Courier.dll.config"));
                ResetConfigMechanism();

                Console.WriteLine("Items: {0}", Items);
                Console.WriteLine("Output: {0}", Output);

                RainbowSerializationProvider.Enabled      = true;
                RainbowSerializationProvider.IncludeFiles = false;
                DiffGenerator.IncludeSecurity             = true;

                var result       = new StringBuilder();
                var sqlGenerator = new RainbowSecuritySqlGenerator();

                var config = (RainbowConfigSection)ConfigurationManager.GetSection("rainbow");
                var rainbowConfigFactory = new RainbowConfigFactory(config);
                var formatter            = rainbowConfigFactory.CreateFormatter() as YamlSerializationFormatter;
                var iterator             = new RainbowIterator(Items, formatter);

                var rolesTemp = Path.GetTempPath() + Guid.NewGuid();
                var usersTemp = Path.GetTempPath() + Guid.NewGuid();
                Directory.CreateDirectory(rolesTemp);
                Directory.CreateDirectory(usersTemp);

                var item = iterator.Next();
                while (item != null)
                {
                    if (item is UserFileSystemDataItem)
                    {
                        File.Copy(item.ItemPath, Path.Combine(usersTemp, Path.GetFileName(item.ItemPath)));
                    }

                    if (item is RoleFileSystemDataItem)
                    {
                        File.Copy(item.ItemPath, Path.Combine(rolesTemp, Path.GetFileName(item.ItemPath)));
                    }

                    item = iterator.Next();
                }

                var roleStore = new FilesystemRoleDataStore(rolesTemp, new YamlRoleSerializationFormatter());
                var roles     = roleStore.GetAll();
                foreach (var role in roles)
                {
                    Console.WriteLine("Generating SQL for role: " + role.RoleName);
                    var clause = sqlGenerator.GenerateAddRoleStatements(role);
                    result.Append(clause);
                }

                var userStore = new FilesystemUserDataStore(usersTemp, new YamlUserSerializationFormatter());
                var users     = userStore.GetAll();
                foreach (var user in users)
                {
                    Console.WriteLine("Generating SQL for user: "******"Dumping generated SQL script to: " + sqlScriptTemp);
                File.WriteAllText(sqlScriptTemp, result.ToString());
                var builder = new DacPacBuilder();
                builder.ConvertToDacPac(sqlScriptTemp, Output);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                throw ex;
            }
        }