예제 #1
0
        public static ProvisionServiceBase SetIncrementalProvisionMode(this ProvisionServiceBase service, IncrementalProvisionConfig config)
        {
            service.ModelTraverseService = null;

            if (config == null)
            {
                config = IncrementalProvisionConfig.Default;
            }

            if (config.CustomModelTreeTraverseServiceType != null)
            {
                service.CustomModelTreeTraverseServiceType = config.CustomModelTreeTraverseServiceType;
            }
            else
            {
                service.CustomModelTreeTraverseServiceType = typeof(DefaultIncrementalModelTreeTraverseService);
            }

            var typedModelService = service.ModelTraverseService as DefaultIncrementalModelTreeTraverseService;

            typedModelService.PreviousModelHash = config.PreviousModelHash ?? new ModelHash();

            typedModelService.Configuration = config;

            return(service);
        }
예제 #2
0
        public static ProvisionServiceBase SetDefaultProvisionMode(this ProvisionServiceBase service)
        {
            service.CustomModelTreeTraverseServiceType = null;
            service.ModelTraverseService = null;

            return(service);
        }
예제 #3
0
        /// <summary>
        /// A shortcut for incremental provision
        /// Sets incremental provision mode with IncrementalProvisionConfig.AutoDetectSharePointPersistenceStorage = true
        /// Once done, reverts back to default provision mode
        /// Callback on IncrementalProvisionConfig makes it easy to configure IncrementalProvisionConfig instance
        /// </summary>
        /// <param name="provisionService"></param>
        /// <param name="modelHost"></param>
        /// <param name="model"></param>
        /// <param name="incrementalModelId"></param>
        /// <param name="config"></param>
        public static void DeployModelIncrementally(this ProvisionServiceBase provisionService,
                                                    ModelHostBase modelHost,
                                                    ModelNode model,
                                                    string incrementalModelId,
                                                    Action <IncrementalProvisionConfig> config)
        {
            try
            {
                var incrementalProvisionConfig = new IncrementalProvisionConfig
                {
                    AutoDetectSharePointPersistenceStorage = true
                };

                if (config != null)
                {
                    config(incrementalProvisionConfig);
                }

                provisionService.SetIncrementalProvisionMode(incrementalProvisionConfig);
                model.InternalSetIncrementalProvisionModelId(incrementalModelId);

                provisionService.DeployModel(modelHost, model);
            }
            finally
            {
                provisionService.SetDefaultProvisionMode();
            }
        }
예제 #4
0
 /// <summary>
 /// A shortcut for incremental provision
 /// Sets incremental provision mode with AutoDetectSharePointPersistenceStorage = true
 /// Once done, reverts back to default provision mode
 /// </summary>
 /// <param name="provisionService"></param>
 /// <param name="modelHost"></param>
 /// <param name="model"></param>
 /// <param name="incrementalModelId"></param>
 public static void DeployModelIncrementally(this ProvisionServiceBase provisionService,
                                             ModelHostBase modelHost,
                                             ModelNode model,
                                             string incrementalModelId)
 {
     DeployModelIncrementally(provisionService, modelHost, model, incrementalModelId, null);
 }
예제 #5
0
        public static ProvisionServiceBase SetIncrementalProvisionModelHash(this ProvisionServiceBase service, ModelHash modelHash)
        {
            var typedModelService = GetIncrementalModelTraverseService(service);

            typedModelService.PreviousModelHash = modelHash;

            return(service);
        }
        public virtual void TraceDeploymentProgress(ProvisionServiceBase provisionService)
        {
            provisionService.OnModelNodeProcessed += (sender, args) =>
            {
                Console.WriteLine(string.Empty);
                Console.WriteLine(string.Empty);

                var message = string.Format("Processed: [{0}/{1}] - [{2:00.0} %] - [{3}] [{4}]",
                    new object[]
                    {
                        args.ProcessedModelNodeCount,
                        args.TotalModelNodeCount,
                        100d*(double) args.ProcessedModelNodeCount/(double) args.TotalModelNodeCount,
                        args.CurrentNode.Value.GetType().Name,
                        args.CurrentNode.Value
                    });

                Trace.WriteLine(message);
                Console.WriteLine(message);
            };
        }
예제 #7
0
        private static DefaultIncrementalModelTreeTraverseService GetIncrementalModelTraverseService(this ProvisionServiceBase service)
        {
            if (!(service.ModelTraverseService is DefaultIncrementalModelTreeTraverseService))
            {
                throw new SPMeta2Exception(
                          string.Format("provision server isn't set in incremenatl mode. Call .SetIncrementalMode() before calling the current method"));
            }

            var typedModelService = service.ModelTraverseService as DefaultIncrementalModelTreeTraverseService;

            return(typedModelService);
        }
예제 #8
0
        public static ModelHash GetIncrementalProvisionModelHash(this ProvisionServiceBase service)
        {
            var typedModelService = GetIncrementalModelTraverseService(service);

            return(typedModelService.CurrentModelHash);
        }
예제 #9
0
 public static ProvisionServiceBase SetIncrementalProvisionMode(this ProvisionServiceBase service)
 {
     return(SetIncrementalProvisionMode(service, null));
 }
예제 #10
0
 public static ProvisionServiceBase ResetProvisionMode(this ProvisionServiceBase service)
 {
     return(SetDefaultProvisionMode(service));
 }