Example #1
0
        protected override async Task<DatabaseTaskOutcome> RunImplementation()
        {
            if (includeDocuments == false && includeAttachements == false && includeIndexes == false && includeTransformers == false)
                return DatabaseTaskOutcome.Abandoned;

            var saveFile = new SaveFileDialog
            {
                DefaultExt = ".ravendump",
                Filter = "Raven Dumps|*.ravendump;*.raven.dump",
            };

            var name = ApplicationModel.Database.Value.Name;
            var normalizedName = new string(name.Select(ch => Path.GetInvalidPathChars().Contains(ch) ? '_' : ch).ToArray());
            var defaultFileName = string.Format("Dump of {0}, {1}", normalizedName, DateTimeOffset.Now.ToString("dd MMM yyyy HH-mm", CultureInfo.InvariantCulture));
            try
            {
                saveFile.DefaultFileName = defaultFileName;
            }
            catch { }

            if (saveFile.ShowDialog() != true)
            {
                return DatabaseTaskOutcome.Abandoned;
            }

            using (var stream = saveFile.OpenFile())
            {
	            ItemType operateOnTypes = 0;

	            if (includeDocuments)
	            {
		            operateOnTypes |= ItemType.Documents;
	            }

	            if (includeAttachements)
	            {
		            operateOnTypes |= ItemType.Attachments;
	            }

	            if (includeIndexes)
	            {
		            operateOnTypes |= ItemType.Indexes;
	            }

	            if (includeTransformers)
	            {
		            operateOnTypes |= ItemType.Transformers;
	            }

	            var smuggler = new SmugglerApi(new SmugglerOptions
	            {
		            BatchSize = batchSize
	            },
	                                           DatabaseCommands,
	                                           message => Report(message));

				var forwardtoUiBoundStream = new ForwardtoUIBoundStream(stream);
	            var taskGeneration = new Task<Task>(() => smuggler.ExportData(forwardtoUiBoundStream, new SmugglerOptions
	            {
		            BatchSize = batchSize,
		            Filters = filterSettings,
		            TransformScript = transformScript,
		            ShouldExcludeExpired = shouldExcludeExpired,
		            OperateOnTypes = operateOnTypes
	            }, false));

	            ThreadPool.QueueUserWorkItem(state => taskGeneration.Start());


	            await taskGeneration.Unwrap();
	            forwardtoUiBoundStream.Flush();
                stream.Flush();
            }

	        return DatabaseTaskOutcome.Succesful;
        }
Example #2
0
        protected override async Task <DatabaseTaskOutcome> RunImplementation()
        {
            if (includeDocuments == false && includeAttachements == false && includeIndexes == false && includeTransformers == false)
            {
                return(DatabaseTaskOutcome.Abandoned);
            }

            var saveFile = new SaveFileDialog
            {
                DefaultExt = ".ravendump",
                Filter     = "Raven Dumps|*.ravendump;*.raven.dump",
            };

            var name            = ApplicationModel.Database.Value.Name;
            var normalizedName  = new string(name.Select(ch => Path.GetInvalidPathChars().Contains(ch) ? '_' : ch).ToArray());
            var defaultFileName = string.Format("Dump of {0}, {1}", normalizedName, DateTimeOffset.Now.ToString("dd MMM yyyy HH-mm", CultureInfo.InvariantCulture));

            try
            {
                saveFile.DefaultFileName = defaultFileName;
            }
            catch { }

            if (saveFile.ShowDialog() != true)
            {
                return(DatabaseTaskOutcome.Abandoned);
            }

            using (var stream = saveFile.OpenFile())
            {
                ItemType operateOnTypes = 0;

                if (includeDocuments)
                {
                    operateOnTypes |= ItemType.Documents;
                }

                if (includeAttachements)
                {
                    operateOnTypes |= ItemType.Attachments;
                }

                if (includeIndexes)
                {
                    operateOnTypes |= ItemType.Indexes;
                }

                if (removeAnalyzers)
                {
                    operateOnTypes |= ItemType.RemoveAnalyzers;
                }

                if (includeTransformers)
                {
                    operateOnTypes |= ItemType.Transformers;
                }

                var smuggler = new SmugglerApi(new SmugglerOptions
                {
                    BatchSize = batchSize
                },
                                               DatabaseCommands,
                                               message => Report(message));

                var forwardtoUiBoundStream = new ForwardtoUIBoundStream(stream);
                var taskGeneration         = new Task <Task>(() => smuggler.ExportData(forwardtoUiBoundStream, new SmugglerOptions
                {
                    BatchSize            = batchSize,
                    Filters              = filterSettings,
                    TransformScript      = transformScript,
                    ShouldExcludeExpired = shouldExcludeExpired,
                    OperateOnTypes       = operateOnTypes
                }, false));

                ThreadPool.QueueUserWorkItem(state => taskGeneration.Start());


                await taskGeneration.Unwrap();

                forwardtoUiBoundStream.Flush();
                stream.Flush();
            }

            return(DatabaseTaskOutcome.Succesful);
        }