protected SPFolder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var list = folderModelHost.CurrentList; var currentFolderItem = folderModelHost.CurrentListItem; var serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); var folder = folderModelHost.CurrentList.ParentWeb.GetFolder(currentUrl); if (folder != null && folder.Exists) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); } return folder; }
/// <summary> /// Reads the giving directory and populates the node with folders/files structure /// </summary> /// <param name="hostNode"></param> /// <param name="folderPath"></param> internal static void LoadModuleFilesFromLocalFolder(ModelNode hostNode, string folderPath) { var files = Directory.GetFiles(folderPath); var folders = Directory.GetDirectories(folderPath); foreach (var file in files) { hostNode.AddDefinitionNode(new ModuleFileDefinition { Content = File.ReadAllBytes(file), FileName = Path.GetFileName(file), Overwrite = true }); } foreach (var subFolder in folders) { var subFolderPath = subFolder; var folderDef = new FolderDefinition { Name = Path.GetFileName(subFolderPath) }; hostNode.AddDefinitionNode(folderDef, folderNode => LoadModuleFilesFromLocalFolder(folderNode, subFolderPath)); } }
private SPFolder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var currentFolder = parentFolder .SubFolders .OfType<SPFolder>() .FirstOrDefault(f => f.Name == folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null || !currentFolder.Exists) { currentFolder = parentFolder.SubFolders.Add(folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); } return currentFolder; }
private void ValidateFolderProps(Folder folder, FolderDefinition folderModel) { TraceUtils.WithScope(traceScope => { var pair = new ComparePair<FolderDefinition, Folder>(folderModel, folder); traceScope.WriteLine(string.Format("Validating model:[{0}] folder:[{1}]", folderModel, folder)); traceScope.WithTraceIndent(trace => pair .ShouldBeEqual(trace, m => m.Name, o => o.Name)); }); }
public override ModelNode ReverseSingleHost(object reverseHost, ReverseOptions options) { var item = (reverseHost as FolderReverseHost).HostFolder; var def = new FolderDefinition(); def.Name = item.Name; return new FolderModelNode { Options = { RequireSelfProcessing = true }, Value = def }; }
protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; context.Load(parentFolder, f => f.Folders); context.ExecuteQuery(); // dirty stuff, needs to be rewritten var currentFolder = parentFolder .Folders .OfType<Folder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (currentFolder != null) { context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); } return currentFolder; }
private SPListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var list = folderModelHost.CurrentList; var currentFolderItem = folderModelHost.CurrentListItem; var serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolder(currentUrl); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (!currentFolder.Exists) { currentFolderItem = list.AddItem(serverRelativeUrl, SPFileSystemObjectType.Folder); currentFolderItem[SPBuiltInFieldId.Title] = folderModel.Name; currentFolderItem.Update(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolderItem.Folder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); currentFolderItem = currentFolder.Item; } return currentFolderItem; }
private SPListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "EnsureListFolder()"); var list = folderModelHost.CurrentList; var currentFolderItem = folderModelHost.CurrentListItem; var serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = GetListFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (!currentFolder.Exists) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new list folder"); currentFolderItem = list.AddItem(serverRelativeUrl, SPFileSystemObjectType.Folder); currentFolderItem[SPBuiltInFieldId.Title] = folderModel.Name; currentFolderItem.Update(); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolderItem.Folder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing list folder"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); currentFolderItem = currentFolder.Item; } return currentFolderItem; }
private void ValidateListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var folder = GetListFolder(folderModelHost, folderModel); ValidateFolderProps(folder, folderModel); }
public void Deploy_ModuleFiles() { // Step 1, define security groups var helloModuleFile = new ModuleFileDefinition { FileName = "hello-module.txt", Content = Encoding.UTF8.GetBytes("A hello world module file provision.") }; var angularFile = new ModuleFileDefinition { FileName = "angular.min.js", Content = Encoding.UTF8.GetBytes(ResourceReader.ReadFromResourceName("Modules.js.angular.min.js")) }; var jQueryFile = new ModuleFileDefinition { FileName = "jquery-1.11.1.min.js", Content = Encoding.UTF8.GetBytes(ResourceReader.ReadFromResourceName("Modules.js.jquery-1.11.1.min.js")) }; var jsFolder = new FolderDefinition { Name = "spmeta2-custom-js" }; // deploy web model - list and add content type links to list var webModel = SPMeta2Model .NewWebModel(web => { web .AddList(BuiltInListDefinitions.StyleLibrary, list => { list .AddModuleFile(helloModuleFile) .AddFolder(jsFolder, folder => { folder .AddModuleFile(angularFile) .AddModuleFile(jQueryFile); }); }); }); DeployWebModel(webModel); }
protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { return GetLibraryFolder(folderModelHost.CurrentListFolder, folderModel.Name); }
protected SPFolder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var folder = parentFolder .SubFolders .OfType<SPFolder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (folder != null) { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does exist: [{0}]", folderModel.Name); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does not exist: [{0}]", folderModel.Name); } return folder; }
public void Deploy_FoldersToList() { // Step 1, define security groups var customerIssues = new ListDefinition { Title = "Customer KPIs", Url = "CustomerKPI", Description = "Stores customer related KPIs.", TemplateType = BuiltInListTemplateTypeId.GenericList }; var Year2010 = new FolderDefinition { Name = "2010" }; var Year2011 = new FolderDefinition { Name = "2011" }; var Year2012 = new FolderDefinition { Name = "2012" }; var Q1 = new FolderDefinition { Name = "Q1" }; var Q2 = new FolderDefinition { Name = "Q2" }; var Q3 = new FolderDefinition { Name = "Q3" }; var Q4 = new FolderDefinition { Name = "Q4" }; // deploy web model - list and add content type links to list var webModel = SPMeta2Model .NewWebModel(web => { web .AddList(customerIssues, list => { list .AddFolder(Year2010, folder => { folder .AddFolder(Q1) .AddFolder(Q2) .AddFolder(Q3) .AddFolder(Q4); }) .AddFolder(Year2011, folder => { folder .AddFolder(Q1) .AddFolder(Q2) .AddFolder(Q3) .AddFolder(Q4); }) .AddFolder(Year2012, folder => { folder .AddFolder(Q1) .AddFolder(Q2) .AddFolder(Q3) .AddFolder(Q4); }); }); }); DeployWebModel(webModel); }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQueryWithTrace(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); doesFolderExist = false; } } if (doesFolderExist) return currentFolder; return null; }
protected Folder GetLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; context.Load(parentFolder, f => f.Folders); context.ExecuteQueryWithTrace(); // dirty stuff, needs to be rewritten var currentFolder = parentFolder .Folders .OfType<Folder>() .FirstOrDefault(f => f.Name == folderModel.Name); if (currentFolder != null) { context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does exist: [{0}]", folderModel.Name); } else { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Library folder with name does not exist: [{0}]", folderModel.Name); } return currentFolder; }
private SPFolder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "EnsureLibraryFolder()"); var parentFolder = folderModelHost.CurrentLibraryFolder; // dirty stuff, needs to be rewritten var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder == null || !currentFolder.Exists ? null : currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null || !currentFolder.Exists) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new library folder"); currentFolder = parentFolder.SubFolders.Add(folderModel.Name); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing library folder"); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(SPFolder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); } return currentFolder; }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQuery(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") doesFolderExist = false; } if (doesFolderExist) return currentFolder; return null; }
private ListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { string serverRelativeUrl = string.Empty; var list = folderModelHost.CurrentList; var context = list.Context; var currentFolder = GetListFolder(folderModelHost, folderModel, out serverRelativeUrl); var currentFolderItem = folderModelHost.CurrentListItem; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); context.ExecuteQuery(); if (currentFolder == null) { currentFolderItem = list.AddItem(new ListItemCreationInformation { FolderUrl = serverRelativeUrl, LeafName = folderModel.Name, UnderlyingObjectType = FileSystemObjectType.Folder }); currentFolderItem["Title"] = folderModel.Name; currentFolderItem.Update(); context.ExecuteQuery(); } else { context.Load(currentFolder, f => f.ListItemAllFields); context.Load(currentFolder, f => f.Name); context.ExecuteQuery(); currentFolderItem = currentFolder.ListItemAllFields; } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); return currentFolderItem; }
private Folder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null) { currentFolder = parentFolder.Folders.Add(folderModel.Name); context.ExecuteQuery(); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); context.ExecuteQuery(); return currentFolder; }
private Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel, out string serverRelativeUrl) { var list = folderModelHost.CurrentList; var context = list.Context; context.Load(list, l => l.RootFolder); context.Load(list, l => l.ParentWeb); #if NET35 throw new SPMeta2NotImplementedException("Not implemented for SP2010 - https://github.com/SubPointSolutions/spmeta2/issues/766"); #endif #if !NET35 if (folderModelHost.CurrentListItem != null) { context.Load(folderModelHost.CurrentListItem, l => l.Folder); } context.ExecuteQueryWithTrace(); serverRelativeUrl = folderModelHost.CurrentListItem == null ? list.RootFolder.ServerRelativeUrl : folderModelHost.CurrentListItem.Folder.ServerRelativeUrl; var currentUrl = serverRelativeUrl + "/" + folderModel.Name; var currentFolder = folderModelHost.CurrentList.ParentWeb.GetFolderByServerRelativeUrl(currentUrl); var doesFolderExist = false; try { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "Loading list folder with URL: [{0}]", currentUrl); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does exist: [{0}]", currentUrl); doesFolderExist = true; } catch (ServerException e) { if (e.ServerErrorTypeName == "System.IO.FileNotFoundException") { TraceService.VerboseFormat((int)LogEventId.ModelProvisionCoreCall, "List folder with URL does not exist: [{0}]", currentUrl); doesFolderExist = false; } } if (doesFolderExist) return currentFolder; #endif return null; }
protected Folder GetListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { var tmp = string.Empty; var result = GetListFolder(folderModelHost, folderModel, out tmp); return result; }
public static ModelNode AddFolder(this ModelNode model, FolderDefinition definition) { return AddFolder(model, definition, null); }
private ListItem EnsureListFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "EnsureListFolder()"); var serverRelativeUrl = string.Empty; var list = folderModelHost.CurrentList; var context = list.Context; var currentFolder = GetListFolder(folderModelHost, folderModel, out serverRelativeUrl); var currentFolderItem = folderModelHost.CurrentListItem; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); context.ExecuteQueryWithTrace(); if (currentFolder == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new list folder"); currentFolderItem = list.AddItem(new ListItemCreationInformation { FolderUrl = serverRelativeUrl, LeafName = folderModel.Name, UnderlyingObjectType = FileSystemObjectType.Folder }); currentFolderItem[BuiltInInternalFieldNames.Title] = folderModel.Name; currentFolderItem.Update(); context.ExecuteQueryWithTrace(); context.Load(currentFolderItem.Folder); context.ExecuteQueryWithTrace(); currentFolder = currentFolderItem.Folder; } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing list folder"); context.Load(currentFolder, f => f.ListItemAllFields); context.Load(currentFolder, f => f.Name); context.ExecuteQueryWithTrace(); currentFolderItem = currentFolder.ListItemAllFields; } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); return currentFolderItem; }
public static ModelNode AddFolder(this ModelNode model, FolderDefinition definition, Action<ModelNode> action) { return model.AddDefinitionNode(definition, action); }
private Folder EnsureLibraryFolder(FolderModelHost folderModelHost, FolderDefinition folderModel) { TraceService.Information((int)LogEventId.ModelProvisionCoreCall, "EnsureLibraryFolder()"); var parentFolder = folderModelHost.CurrentLibraryFolder; var context = parentFolder.Context; var currentFolder = GetLibraryFolder(folderModelHost, folderModel); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); if (currentFolder == null) { TraceService.Information((int)LogEventId.ModelProvisionProcessingNewObject, "Processing new library folder"); currentFolder = parentFolder.Folders.Add(folderModel.Name); context.ExecuteQueryWithTrace(); } else { TraceService.Information((int)LogEventId.ModelProvisionProcessingExistingObject, "Processing existing library folder"); } InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = currentFolder, ObjectType = typeof(Folder), ObjectDefinition = folderModel, ModelHost = folderModelHost }); currentFolder.Update(); context.ExecuteQueryWithTrace(); return currentFolder; }
/// <summary> /// Reads the giving directory and populates the node with folders/files structure /// </summary> /// <param name="hostNode"></param> /// <param name="folderPath"></param> /// <param name="shouldIncludeFolderOrFile"></param> internal static void LoadModuleFilesFromLocalFolder(ModelNode hostNode, string folderPath, Func<string, bool> shouldIncludeFolderOrFile) { var files = Directory.GetFiles(folderPath); var folders = Directory.GetDirectories(folderPath); foreach (var file in files) { if (shouldIncludeFolderOrFile != null) { if (!shouldIncludeFolderOrFile(file)) continue; } hostNode.AddDefinitionNode(new ModuleFileDefinition { Content = File.ReadAllBytes(file), FileName = Path.GetFileName(file), Overwrite = true }); } foreach (var subFolder in folders) { var subFolderPath = subFolder; if (shouldIncludeFolderOrFile != null) { if (!shouldIncludeFolderOrFile(subFolderPath)) continue; } var folderDef = new FolderDefinition { Name = Path.GetFileName(subFolderPath) }; hostNode.AddDefinitionNode(folderDef, folderNode => LoadModuleFilesFromLocalFolder(folderNode, subFolderPath, shouldIncludeFolderOrFile)); } }