/// <summary> /// Initializes a new instance of the <see cref="InstanceCommand"/> class. /// </summary> /// <param name="service">The service.</param> /// <param name="resource">The resource.</param> /// <param name="newServiceSettings">The new service settings.</param> /// <param name="commandType">Type of the command.</param> /// <param name="listDepth">The list depth.</param> public FoldersCommand(ModuleService service, ResourceDescription resource, ModuleService newServiceSettings, ModuleCommandType commandType, int listDepth) : base(service, resource, newServiceSettings, commandType, listDepth) { this.resource = resource; this.service = service; this.newServiceSettings = newServiceSettings; this.commandType = commandType; this.listDepth = listDepth; }
public new void ReadFromResourceDescription(ResourceDescription rd) { base.ReadFromResourceDescription(rd); }
private Dictionary <DMSType, ResourceDescription> CreateResourcesToInsert() { long globalId = 0; ResourceDescription rd = null; List <ModelCode> propertyIDs = null; Dictionary <DMSType, ResourceDescription> updates = new Dictionary <DMSType, ResourceDescription>(new DMSTypeComparer()); #region Create resources foreach (DMSType type in modelResourcesDesc.AllDMSTypes) { if (type != DMSType.MASK_TYPE) { globalId = ModelCodeHelper.CreateGlobalId(0, (short)type, -1); propertyIDs = modelResourcesDesc.GetAllPropertyIds(modelResourcesDesc.GetModelCodeFromType(type)); rd = new ResourceDescription(globalId); foreach (ModelCode propertyId in propertyIDs) { if (!modelResourcesDesc.NotSettablePropertyIds.Contains(propertyId)) { switch (Property.GetPropertyType(propertyId)) { case PropertyType.Bool: rd.AddProperty(new Property(propertyId, true)); break; case PropertyType.Byte: rd.AddProperty(new Property(propertyId, (byte)100)); break; case PropertyType.Int32: rd.AddProperty(new Property(propertyId, (int)4)); break; case PropertyType.Int64: case PropertyType.TimeSpan: case PropertyType.DateTime: rd.AddProperty(new Property(propertyId, (long)101)); break; case PropertyType.Enum: rd.AddProperty(new Property(propertyId, (short)1)); break; case PropertyType.Reference: rd.AddProperty(new Property(propertyId)); break; case PropertyType.Float: rd.AddProperty(new Property(propertyId, (float)10.5)); break; case PropertyType.String: rd.AddProperty(new Property(propertyId, "TestString")); break; case PropertyType.Int64Vector: List <long> longVector = new List <long>(); longVector.Add((long)10); longVector.Add((long)11); longVector.Add((long)12); longVector.Add((long)13); longVector.Add((long)14); longVector.Add((long)15); rd.AddProperty(new Property(propertyId, longVector)); break; case PropertyType.FloatVector: List <float> floatVector = new List <float>(); floatVector.Add((float)11.1); floatVector.Add((float)12.2); floatVector.Add((float)13.3); floatVector.Add((float)14.4); floatVector.Add((float)15.5); rd.AddProperty(new Property(propertyId, floatVector)); break; case PropertyType.EnumVector: List <short> enumVector = new List <short>(); enumVector.Add((short)1); enumVector.Add((short)2); enumVector.Add((short)3); rd.AddProperty(new Property(propertyId, enumVector)); break; case PropertyType.StringVector: List <string> stringVector = new List <string>(); stringVector.Add("TestString1"); stringVector.Add("TestString2"); stringVector.Add("TestString3"); stringVector.Add("TestString4"); rd.AddProperty(new Property(propertyId, stringVector)); break; case PropertyType.Int32Vector: List <int> intVector = new List <int>(); intVector.Add(11); intVector.Add(12); intVector.Add(13); intVector.Add(14); rd.AddProperty(new Property(propertyId, intVector)); break; default: break; } } } updates[type] = rd; } } #endregion Create resources #region Set references //SetPowerTransformerReferences(updates); //SetTransformerWindingReferences(updates); //SetWindingTestRefernces(updates); #endregion Set references return(updates); }
public void BuildResources(GraphicsCommandList cmdList) { // All the textures for the wave simulation will be bound as a shader resource and // unordered access view at some point since we ping-pong the buffers. var texDesc = new ResourceDescription { Dimension = ResourceDimension.Texture2D, Alignment = 0, Width = ColumnCount, Height = RowCount, DepthOrArraySize = 1, MipLevels = 1, Format = Format.R32_Float, SampleDescription = new SampleDescription(1, 0), Layout = TextureLayout.Unknown, Flags = ResourceFlags.AllowUnorderedAccess }; _prevSol = _device.CreateCommittedResource( new HeapProperties(HeapType.Default), HeapFlags.None, texDesc, ResourceStates.Common); _currSol = _device.CreateCommittedResource( new HeapProperties(HeapType.Default), HeapFlags.None, texDesc, ResourceStates.Common); _nextSol = _device.CreateCommittedResource( new HeapProperties(HeapType.Default), HeapFlags.None, texDesc, ResourceStates.Common); // // In order to copy CPU memory data into our default buffer, we need to create // an intermediate upload heap. // int num2DSubresources = texDesc.DepthOrArraySize * texDesc.MipLevels; long uploadBufferSize; _device.GetCopyableFootprints(ref texDesc, 0, num2DSubresources, 0, null, null, null, out uploadBufferSize); _prevUploadBuffer = _device.CreateCommittedResource( new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(uploadBufferSize), ResourceStates.GenericRead); _currUploadBuffer = _device.CreateCommittedResource( new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(uploadBufferSize), ResourceStates.GenericRead); // // Schedule to copy the data to the default resource, and change states. // Note that mCurrSol is put in the GENERIC_READ state so it can be // read by a shader. // cmdList.ResourceBarrierTransition(_prevSol, ResourceStates.Common, ResourceStates.CopyDestination); cmdList.CopyResource(_prevSol, _prevUploadBuffer); cmdList.ResourceBarrierTransition(_prevSol, ResourceStates.CopyDestination, ResourceStates.UnorderedAccess); cmdList.ResourceBarrierTransition(_currSol, ResourceStates.Common, ResourceStates.CopyDestination); cmdList.CopyResource(_currSol, _currUploadBuffer); cmdList.ResourceBarrierTransition(_currSol, ResourceStates.CopyDestination, ResourceStates.GenericRead); cmdList.ResourceBarrierTransition(_nextSol, ResourceStates.Common, ResourceStates.UnorderedAccess); }
private void LoadMesh() { SamplerStateDescription samplerDesc = new SamplerStateDescription() { Filter = Filter.ComparisonMinMagMipLinear, AddressU = TextureAddressMode.Wrap, AddressV = TextureAddressMode.Wrap, AddressW = TextureAddressMode.Wrap, MinimumLod = float.MinValue, MaximumLod = float.MaxValue, MipLodBias = 0, MaximumAnisotropy = 0, ComparisonFunction = Comparison.Never }; // Load model from obj. var importer = new Assimp.AssimpContext(); var scene = importer.ImportFile(@"../../../Models/lara/lara.obj", PostProcessSteps.GenerateSmoothNormals | PostProcessSteps.FlipUVs | PostProcessSteps.PreTransformVertices); Vertex[] vertices = new Vertex[scene.Meshes.Sum(m => m.VertexCount)]; int[] indices = new int[scene.Meshes.Sum(m => m.FaceCount * 3)]; faceCounts = new List <int>(); int vertexOffSet = 0; int indexOffSet = 0; int k = 0; foreach (var mesh in scene.Meshes) { var positions = mesh.Vertices; var normals = mesh.Normals; var texs = mesh.TextureCoordinateChannels[0]; for (int i = 0; i < mesh.VertexCount; i++) { vertices[vertexOffSet + i] = new Vertex() { position = new Vector3(positions[i].X, positions[i].Y, positions[i].Z), normal = new Vector3(normals[i].X, normals[i].Y, normals[i].Z), textureCoordinate = new Vector3(texs[i].X, texs[i].Y, texs[i].Z) }; } var faces = mesh.Faces; for (int i = 0; i < mesh.FaceCount; i++) { indices[i * 3 + indexOffSet] = (int)faces[i].Indices[0] + vertexOffSet; indices[i * 3 + 1 + indexOffSet] = (int)faces[i].Indices[1] + vertexOffSet; indices[i * 3 + 2 + indexOffSet] = (int)faces[i].Indices[2] + vertexOffSet; } faceCounts.Add(mesh.FaceCount * 3); vertexOffSet += mesh.VertexCount; indexOffSet += mesh.FaceCount * 3; string textureName = System.IO.Path.GetFileName(scene.Materials[mesh.MaterialIndex].TextureDiffuse.FilePath); var texResource = TextureUtilities.CreateTextureFromDDS(device, @"../../../Models/lara/" + textureName); textures.Add(texResource); int D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING = 5768; ShaderResourceViewDescription desc = new ShaderResourceViewDescription { Dimension = ShaderResourceViewDimension.Texture2D, Format = texResource.Description.Format, Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING, }; desc.Texture2D.MipLevels = 1; desc.Texture2D.MostDetailedMip = 0; desc.Texture2D.ResourceMinLODClamp = 0; device.CreateShaderResourceView(texResource, desc, resourceViewHeap.CPUDescriptorHandleForHeapStart + (k + meshTexturePosition) * device.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView)); k++; } int vertexBufferSize = Utilities.SizeOf(vertices); // Note: using upload heaps to transfer static data like vert buffers is not // recommended. Every time the GPU needs it, the upload heap will be marshalled // over. Please read up on Default Heap usage. An upload heap is used here for // code simplicity and because there are very few verts to actually transfer. vertexBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(vertexBufferSize), ResourceStates.GenericRead); // Copy the triangle data to the vertex buffer. IntPtr pVertexDataBegin = vertexBuffer.Map(0); Utilities.Write(pVertexDataBegin, vertices, 0, vertices.Length); vertexBuffer.Unmap(0); // Initialize the vertex buffer view. vertexBufferView = new VertexBufferView(); vertexBufferView.BufferLocation = vertexBuffer.GPUVirtualAddress; vertexBufferView.StrideInBytes = Utilities.SizeOf <Vertex>(); vertexBufferView.SizeInBytes = vertexBufferSize; //Create Index Buffer int indexBufferSize = Utilities.SizeOf(indices); indexBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(indexBufferSize), ResourceStates.GenericRead); // Copy the triangle data to the vertex buffer. IntPtr pIndexDataBegin = indexBuffer.Map(0); Utilities.Write(pIndexDataBegin, indices, 0, indices.Length); indexBuffer.Unmap(0); // Initialize the index buffer view. indexBufferView = new IndexBufferView(); indexBufferView.BufferLocation = indexBuffer.GPUVirtualAddress; indexBufferView.Format = Format.R32_UInt; indexBufferView.SizeInBytes = indexBufferSize; }
private void LoadAssets() { RootParameter parameter1 = new RootParameter(ShaderVisibility.All, new DescriptorRange() { RangeType = DescriptorRangeType.ConstantBufferView, BaseShaderRegister = 0, DescriptorCount = 1 }); RootParameter parameter2 = new RootParameter(ShaderVisibility.Pixel, new DescriptorRange() { RangeType = DescriptorRangeType.ShaderResourceView, BaseShaderRegister = 0, DescriptorCount = 1 }); RootParameter parameter3 = new RootParameter(ShaderVisibility.Pixel, new DescriptorRange() { RangeType = DescriptorRangeType.Sampler, BaseShaderRegister = 0, DescriptorCount = 1 }); // Create a root signature. RootSignatureDescription rootSignatureDesc = new RootSignatureDescription(RootSignatureFlags.AllowInputAssemblerInputLayout, new RootParameter[] { parameter1, parameter2, parameter3 }); rootSignature = device.CreateRootSignature(rootSignatureDesc.Serialize()); // Create the pipeline state, which includes compiling and loading shaders. #if DEBUG var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "VSMain", "vs_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "VSMain", "vs_5_0")); #endif #if DEBUG var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "PSMain", "ps_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "PSMain", "ps_5_0")); #endif // Define the vertex input layout. InputElement[] inputElementDescs = new InputElement[] { new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0), new InputElement("NORMAL", 0, Format.R32G32B32_Float, 12, 0), new InputElement("TEXCOORD", 0, Format.R32G32B32_Float, 24, 0) }; // Describe and create the graphics pipeline state object (PSO). GraphicsPipelineStateDescription psoDesc = new GraphicsPipelineStateDescription() { InputLayout = new InputLayoutDescription(inputElementDescs), RootSignature = rootSignature, VertexShader = vertexShader, PixelShader = pixelShader, RasterizerState = RasterizerStateDescription.Default(), BlendState = BlendStateDescription.Default(), DepthStencilFormat = SharpDX.DXGI.Format.D32_Float, DepthStencilState = DepthStencilStateDescription.Default(), SampleMask = int.MaxValue, PrimitiveTopologyType = PrimitiveTopologyType.Triangle, RenderTargetCount = 1, Flags = PipelineStateFlags.None, SampleDescription = new SharpDX.DXGI.SampleDescription(1, 0), StreamOutput = new StreamOutputDescription() }; psoDesc.RenderTargetFormats[0] = SharpDX.DXGI.Format.R8G8B8A8_UNorm; pipelineState = device.CreateGraphicsPipelineState(psoDesc); // Create the command list. commandList = device.CreateCommandList(CommandListType.Direct, commandAllocator, pipelineState); // Command lists are created in the recording state, but there is nothing // to record yet. The main loop expects it to be closed, so close it now. commandList.Close(); // Create the vertex buffer. float aspectRatio = viewport.Width / viewport.Height; //constant Buffer int constantBufferSize = (Utilities.SizeOf <Transform>() + 255) & ~255; constantBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(constantBufferSize), ResourceStates.GenericRead); //constant buffer ConstantBufferViewDescription cbvDesc = new ConstantBufferViewDescription() { BufferLocation = constantBuffer.GPUVirtualAddress, SizeInBytes = constantBufferSize }; CpuDescriptorHandle cbHandleHeapStart = resourceViewHeap.CPUDescriptorHandleForHeapStart + constantBufferViewPosition * device.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView); device.CreateConstantBufferView(cbvDesc, cbHandleHeapStart); //Render target LoadRenderTargetData(); //load mesh LoadMesh(); // Create synchronization objects. { fence = device.CreateFence(0, FenceFlags.None); fenceValue = 1; // Create an event handle to use for frame synchronization. fenceEvent = new AutoResetEvent(false); } InitBundles(); }
public static ResourceDescription ReadAndFillResourceData(string resourceParamsSerialized, string serviceName) { ResourceDescription resource = new ResourceDescription(serviceName, "ResourceDescriptionFile"); string[] paramsSplitted = resourceParamsSerialized.Split(','); for (int i = 0; i < paramsSplitted.Length; i++) { string oneParam = paramsSplitted[i]; if (i == 0) { oneParam = oneParam.Substring(1, oneParam.Length - 1); //remove first "{" } if (i == paramsSplitted.Length - 1) { oneParam = oneParam.Substring(0, oneParam.Length - 1); //remove last "}" } if (oneParam != "") { string[] oneParamSplitted = oneParam.Split(":".ToArray(), 2, StringSplitOptions.None); string paramName = oneParamSplitted[0].ToString().Replace("\"", ""); string paramValue = oneParamSplitted[1].ToString().Replace("\"", ""); resource[paramName] = paramValue; } } return resource; }
/// <summary> /// Prepares the command list. /// </summary> /// <param name="service">Service to populate.</param> /// <param name="newServiceSettings">New service settings.</param> /// <param name="resource">Server resource.</param> /// <param name="commandType">Type of command.</param> private void PrepareCommandList(ModuleService service, ModuleService newServiceSettings, ResourceDescription resource, ModuleCommandType commandType) { if (commandType != ModuleCommandType.Remove) { this.commands.Add(this.GetModuleCommand(resource, commandType, -1, service, newServiceSettings)); } if (service.Children != null) { for (int i = 0; i < service.Children.Count; i++) { ModuleService childService = service.Children[i]; ModuleService newChildSettings = null; if (newServiceSettings != null && newServiceSettings.Children != null && newServiceSettings.Children.Count > i) { newChildSettings = newServiceSettings.Children[i]; } this.PrepareCommandList(childService, newChildSettings, resource, commandType); } } if (commandType == ModuleCommandType.Remove) { this.commands.Add(this.GetModuleCommand(resource, commandType, -1, service, newServiceSettings)); } }
private void InitializeFromImpl(DataBox[] dataBoxes = null) { bool hasInitData = dataBoxes != null && dataBoxes.Length > 0; if (ParentTexture != null) { ParentResource = ParentTexture; NativeDeviceChild = ParentTexture.NativeDeviceChild; } if (NativeDeviceChild == null) { ClearValue?clearValue = GetClearValue(); ResourceDescription nativeDescription; switch (Dimension) { case TextureDimension.Texture1D: nativeDescription = ConvertToNativeDescription1D(); break; case TextureDimension.Texture2D: case TextureDimension.TextureCube: nativeDescription = ConvertToNativeDescription2D(); break; case TextureDimension.Texture3D: nativeDescription = ConvertToNativeDescription3D(); break; default: throw new ArgumentOutOfRangeException(); } var initialResourceState = ResourceStates.GenericRead; var heapType = HeapType.Default; var currentResourceState = initialResourceState; if (Usage == GraphicsResourceUsage.Staging) { heapType = HeapType.Readback; NativeResourceState = ResourceStates.CopyDestination; int totalSize = ComputeBufferTotalSize(); nativeDescription = ResourceDescription.Buffer(totalSize); // Staging textures on DirectX 12 use buffer internally NativeDeviceChild = GraphicsDevice.NativeDevice.CreateCommittedResource(new HeapProperties(heapType), HeapFlags.None, nativeDescription, NativeResourceState); if (hasInitData) { var commandList = GraphicsDevice.NativeCopyCommandList; commandList.Reset(GraphicsDevice.NativeCopyCommandAllocator, null); Resource uploadResource; int uploadOffset; var uploadMemory = GraphicsDevice.AllocateUploadBuffer(totalSize, out uploadResource, out uploadOffset, TextureSubresourceAlignment); // Copy data to the upload buffer int dataBoxIndex = 0; var uploadMemoryMipStart = uploadMemory; for (int arraySlice = 0; arraySlice < ArraySize; arraySlice++) { for (int mipLevel = 0; mipLevel < MipLevels; mipLevel++) { var databox = dataBoxes[dataBoxIndex++]; var mipHeight = CalculateMipSize(Width, mipLevel); var mipRowPitch = ComputeRowPitch(mipLevel); var uploadMemoryCurrent = uploadMemoryMipStart; var dataPointerCurrent = databox.DataPointer; for (int rowIndex = 0; rowIndex < mipHeight; rowIndex++) { Utilities.CopyMemory(uploadMemoryCurrent, dataPointerCurrent, mipRowPitch); uploadMemoryCurrent += mipRowPitch; dataPointerCurrent += databox.RowPitch; } uploadMemoryMipStart += ComputeSubresourceSize(mipLevel); } } // Copy from upload heap to actual resource commandList.CopyBufferRegion(NativeResource, 0, uploadResource, uploadOffset, totalSize); commandList.Close(); StagingFenceValue = 0; GraphicsDevice.WaitCopyQueue(); } return; } if (hasInitData) { currentResourceState = ResourceStates.CopyDestination; } // TODO D3D12 move that to a global allocator in bigger committed resources NativeDeviceChild = GraphicsDevice.NativeDevice.CreateCommittedResource(new HeapProperties(heapType), HeapFlags.None, nativeDescription, currentResourceState, clearValue); GraphicsDevice.RegisterTextureMemoryUsage(SizeInBytes); if (hasInitData) { // Trigger copy var commandList = GraphicsDevice.NativeCopyCommandList; commandList.Reset(GraphicsDevice.NativeCopyCommandAllocator, null); long textureCopySize; var placedSubresources = new PlacedSubResourceFootprint[dataBoxes.Length]; var rowCounts = new int[dataBoxes.Length]; var rowSizeInBytes = new long[dataBoxes.Length]; GraphicsDevice.NativeDevice.GetCopyableFootprints(ref nativeDescription, 0, dataBoxes.Length, 0, placedSubresources, rowCounts, rowSizeInBytes, out textureCopySize); SharpDX.Direct3D12.Resource uploadResource; int uploadOffset; var uploadMemory = GraphicsDevice.AllocateUploadBuffer((int)textureCopySize, out uploadResource, out uploadOffset, TextureSubresourceAlignment); for (int i = 0; i < dataBoxes.Length; ++i) { var databox = dataBoxes[i]; var dataPointer = databox.DataPointer; var rowCount = rowCounts[i]; var sliceCount = placedSubresources[i].Footprint.Depth; var rowSize = (int)rowSizeInBytes[i]; var destRowPitch = placedSubresources[i].Footprint.RowPitch; // Memcpy data for (int z = 0; z < sliceCount; ++z) { var uploadMemoryCurrent = uploadMemory + (int)placedSubresources[i].Offset + z * destRowPitch * rowCount; var dataPointerCurrent = dataPointer + z * databox.SlicePitch; for (int y = 0; y < rowCount; ++y) { Utilities.CopyMemory(uploadMemoryCurrent, dataPointerCurrent, rowSize); uploadMemoryCurrent += destRowPitch; dataPointerCurrent += databox.RowPitch; } } // Adjust upload offset (circular dependency between GetCopyableFootprints and AllocateUploadBuffer) placedSubresources[i].Offset += uploadOffset; commandList.CopyTextureRegion(new TextureCopyLocation(NativeResource, i), 0, 0, 0, new TextureCopyLocation(uploadResource, placedSubresources[i]), null); } commandList.ResourceBarrierTransition(NativeResource, ResourceStates.CopyDestination, initialResourceState); commandList.Close(); GraphicsDevice.WaitCopyQueue(); } NativeResourceState = initialResourceState; } NativeShaderResourceView = GetShaderResourceView(ViewType, ArraySlice, MipLevel); NativeRenderTargetView = GetRenderTargetView(ViewType, ArraySlice, MipLevel); NativeDepthStencilView = GetDepthStencilView(out HasStencil); NativeUnorderedAccessView = GetUnorderedAccessView(ViewType, ArraySlice, MipLevel); }
private ResourceDescription ConvertToNativeDescription3D() { return(ResourceDescription.Texture3D((SharpDX.DXGI.Format)textureDescription.Format, textureDescription.Width, textureDescription.Height, (short)textureDescription.Depth, (short)textureDescription.MipLevels, GetBindFlagsFromTextureFlags(textureDescription.Flags))); }
private ResourceDescription ConvertToNativeDescription2D() { var format = (SharpDX.DXGI.Format)textureDescription.Format; var flags = textureDescription.Flags; // If the texture is going to be bound on the depth stencil, for to use TypeLess format if (IsDepthStencil) { if (IsShaderResource && GraphicsDevice.Features.CurrentProfile < GraphicsProfile.Level_10_0) { throw new NotSupportedException(String.Format("ShaderResourceView for DepthStencil Textures are not supported for Graphics profile < 10.0 (Current: [{0}])", GraphicsDevice.Features.CurrentProfile)); } else { // Determine TypeLess Format and ShaderResourceView Format if (GraphicsDevice.Features.CurrentProfile < GraphicsProfile.Level_10_0) { switch (textureDescription.Format) { case PixelFormat.D16_UNorm: format = SharpDX.DXGI.Format.D16_UNorm; break; case PixelFormat.D32_Float: format = SharpDX.DXGI.Format.D32_Float; break; case PixelFormat.D24_UNorm_S8_UInt: format = SharpDX.DXGI.Format.D24_UNorm_S8_UInt; break; case PixelFormat.D32_Float_S8X24_UInt: format = SharpDX.DXGI.Format.D32_Float_S8X24_UInt; break; default: throw new NotSupportedException(String.Format("Unsupported DepthFormat [{0}] for depth buffer", textureDescription.Format)); } } else { switch (textureDescription.Format) { case PixelFormat.D16_UNorm: format = SharpDX.DXGI.Format.R16_Typeless; break; case PixelFormat.D32_Float: format = SharpDX.DXGI.Format.R32_Typeless; break; case PixelFormat.D24_UNorm_S8_UInt: //format = SharpDX.DXGI.Format.D24_UNorm_S8_UInt; format = SharpDX.DXGI.Format.R24G8_Typeless; break; case PixelFormat.D32_Float_S8X24_UInt: format = SharpDX.DXGI.Format.R32G8X24_Typeless; break; default: throw new NotSupportedException(String.Format("Unsupported DepthFormat [{0}] for depth buffer", textureDescription.Format)); } } } } return(ResourceDescription.Texture2D(format, textureDescription.Width, textureDescription.Height, (short)textureDescription.ArraySize, (short)textureDescription.MipLevels, (short)textureDescription.MultisampleCount, 0, GetBindFlagsFromTextureFlags(flags))); }
private ResourceDescription ConvertToNativeDescription1D() { return(ResourceDescription.Texture1D((SharpDX.DXGI.Format)textureDescription.Format, textureDescription.Width, (short)textureDescription.ArraySize, (short)textureDescription.MipLevels, GetBindFlagsFromTextureFlags(textureDescription.Flags))); }
public static void PopulateConductingEquipmentProperties(FTN.ConductingEquipment cimConductingEquipment, ResourceDescription rd) { if ((cimConductingEquipment != null) && (rd != null)) { PowerTransformerConverter.PopulateEquipmentProperties(cimConductingEquipment, rd); } }
public static void PopulateRegulatingControlProperties(FTN.RegulatingControl cimRegulatingControl, ResourceDescription rd) { if ((cimRegulatingControl != null) && (rd != null)) { PowerTransformerConverter.PopulatePowerSystemResourceProperties(cimRegulatingControl, rd); if (cimRegulatingControl.DiscreteHasValue) { rd.AddProperty(new Property(ModelCode.REGUCONTROL_DISCRETE, cimRegulatingControl.Discrete)); } /* if (cimRegulatingControl.ModeHasValue) * { * rd.AddProperty(new Property(ModelCode.REGUCONTROL_MODE, (short)GetDMSRegulatingControlModeKind(cimRegulatingControl.Mode))); * } * if (cimRegulatingControl.MonitoredPhaseHasValue) * { * rd.AddProperty(new Property(ModelCode.REGUCONTROL_MONPHASE, (short)GetDMSPhaseCode(cimRegulatingControl.MonitoredPhase))); * }*/ } }
private async Task <ITopologyElement> GetPopulatedElement(ResourceDescription rs) { string verboseMessage = $"{baseLogString} entering GetPopulatedElement method."; Logger.LogVerbose(verboseMessage); ITopologyElement topologyElement = new TopologyElement(rs.Id); try { DMSType type = GetDMSTypeOfTopologyElement(rs.Id); topologyElement.Mrid = rs.GetProperty(ModelCode.IDOBJ_MRID).AsString(); topologyElement.Name = rs.GetProperty(ModelCode.IDOBJ_NAME).AsString(); topologyElement.Description = rs.GetProperty(ModelCode.IDOBJ_DESCRIPTION).AsString(); topologyElement.DmsType = type.ToString(); if (rs.ContainsProperty(ModelCode.CONDUCTINGEQUIPMENT_ISREMOTE)) { topologyElement.IsRemote = rs.GetProperty(ModelCode.CONDUCTINGEQUIPMENT_ISREMOTE).AsBool(); } else { topologyElement.IsRemote = false; } if (rs.ContainsProperty(ModelCode.BREAKER_NORECLOSING)) { topologyElement.NoReclosing = rs.GetProperty(ModelCode.BREAKER_NORECLOSING).AsBool(); if (!topologyElement.NoReclosing) { topologyElement = new Recloser(topologyElement); } } else { topologyElement.NoReclosing = true; } if (rs.ContainsProperty(ModelCode.CONDUCTINGEQUIPMENT_BASEVOLTAGE)) { long baseVoltageGid = rs.GetProperty(ModelCode.CONDUCTINGEQUIPMENT_BASEVOLTAGE).AsLong(); var voltageResult = await BaseVoltages.TryGetValueAsync(baseVoltageGid); if (voltageResult.HasValue) { topologyElement.NominalVoltage = voltageResult.Value; } else if (baseVoltageGid == 0) { Logger.LogError($"{baseLogString} GetPopulatedElement => BaseVoltage with GID {baseVoltageGid:X16} does not exist in baseVoltages collection."); } } else { topologyElement.NominalVoltage = 0; } if (rs.ContainsProperty(ModelCode.BREAKER_NORECLOSING) && !rs.GetProperty(ModelCode.BREAKER_NORECLOSING).AsBool()) { var reclosersResult = await Reclosers.TryGetValueAsync(ReliableDictionaryNames.Reclosers); if (reclosersResult.HasValue) { var reclosers = reclosersResult.Value; reclosers.Add(topologyElement.Id); await Reclosers.SetAsync(ReliableDictionaryNames.Reclosers, reclosers); } else { Logger.LogWarning($"{baseLogString} Reliable collection '{ReliableDictionaryNames.Reclosers}' was not defined yet. Handling..."); await Reclosers.SetAsync(ReliableDictionaryNames.Reclosers, new HashSet <long>() { topologyElement.Id }); } } if (rs.ContainsProperty(ModelCode.ENERGYCONSUMER_TYPE)) { topologyElement = new EnergyConsumer(topologyElement) { Type = (EnergyConsumerType)rs.GetProperty(ModelCode.ENERGYCONSUMER_TYPE).AsEnum() }; } if (type == DMSType.SYNCHRONOUSMACHINE) { topologyElement = new SynchronousMachine(topologyElement); if (rs.ContainsProperty(ModelCode.SYNCHRONOUSMACHINE_CAPACITY)) { ((SynchronousMachine)topologyElement).Capacity = rs.GetProperty(ModelCode.SYNCHRONOUSMACHINE_CAPACITY).AsFloat(); } if (rs.ContainsProperty(ModelCode.SYNCHRONOUSMACHINE_CURRENTREGIME)) { ((SynchronousMachine)topologyElement).CurrentRegime = rs.GetProperty(ModelCode.SYNCHRONOUSMACHINE_CURRENTREGIME).AsFloat(); } } } catch (Exception e) { Logger.LogError($"{baseLogString} GetPopulatedElement => Could not get all properties." + $"{Environment.NewLine}Excepiton message: {e.Message}" + $"{Environment.NewLine} Stack trace: {e.StackTrace}"); } return(topologyElement); }
public void CreateShaderResources() { // Create the output resource. The dimensions and format should match the swap-chain ResourceDescription resDesc = new ResourceDescription(); resDesc.DepthOrArraySize = 1; resDesc.Dimension = ResourceDimension.Texture2D; resDesc.Format = Format.R8G8B8A8_UNorm; // The backbuffer is actually DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, but sRGB formats can't be used with UAVs. We will convert to sRGB ourselves in the shader resDesc.Flags = ResourceFlags.AllowUnorderedAccess; resDesc.Height = mSwapChainRect.Height; resDesc.Layout = TextureLayout.Unknown; resDesc.MipLevels = 1; resDesc.SampleDescription = new SampleDescription(1, 0); resDesc.Width = mSwapChainRect.Width; mpOutputResource = mpDevice.CreateCommittedResource(AccelerationStructures.kDefaultHeapProps, HeapFlags.None, resDesc, ResourceStates.CopySource, null); // Starting as copy-source to simplify onFrameRender() // Create an SRV/UAV/VertexSRV/IndexSRV descriptor heap. Need 4 entries - 1 SRV for the scene, 1 UAV for the output, 1 SRV for VertexBuffer, 1 SRV for IndexBuffer mpSrvUavHeap = this.context.CreateDescriptorHeap(mpDevice, 4, DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView, true); // Create the UAV. Based on the root signature we created it should be the first entry UnorderedAccessViewDescription uavDesc = new UnorderedAccessViewDescription(); uavDesc.ViewDimension = UnorderedAccessViewDimension.Texture2D; mpDevice.CreateUnorderedAccessView(mpOutputResource, null, uavDesc, mpSrvUavHeap.GetCPUDescriptorHandleForHeapStart()); // Create the TLAS SRV right after the UAV. Note that we are using a different SRV desc here ShaderResourceViewDescription srvDesc = new ShaderResourceViewDescription(); srvDesc.ViewDimension = ShaderResourceViewDimension.RaytracingAccelerationStructure; srvDesc.Shader4ComponentMapping = D3D12DefaultShader4ComponentMapping; srvDesc.RaytracingAccelerationStructure = new RaytracingAccelerationStructureShaderResourceView(); srvDesc.RaytracingAccelerationStructure.Location = mpTopLevelAS.GPUVirtualAddress; CpuDescriptorHandle srvHandle = mpSrvUavHeap.GetCPUDescriptorHandleForHeapStart(); srvHandle.Ptr += mpDevice.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView); mpDevice.CreateShaderResourceView(null, srvDesc, srvHandle); // Index SRV var indexSRVDesc = new ShaderResourceViewDescription() { ViewDimension = ShaderResourceViewDimension.Buffer, Shader4ComponentMapping = D3D12DefaultShader4ComponentMapping, Format = Format.R32_Typeless, Buffer = { NumElements = (int)(this.acs.IndexCount * 2 / 4), Flags = BufferShaderResourceViewFlags.Raw, StructureByteStride = 0, } }; srvHandle.Ptr += mpDevice.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView); indexSRVHandle = srvHandle; mpDevice.CreateShaderResourceView(this.acs.IndexBuffer, indexSRVDesc, indexSRVHandle); // Vertex SRV var vertexSRVDesc = new ShaderResourceViewDescription() { ViewDimension = ShaderResourceViewDimension.Buffer, Shader4ComponentMapping = D3D12DefaultShader4ComponentMapping, Format = Format.Unknown, Buffer = { NumElements = (int)this.acs.VertexCount, Flags = BufferShaderResourceViewFlags.None, StructureByteStride = Unsafe.SizeOf <VertexPositionNormalTangentTexture>(), } }; srvHandle.Ptr += mpDevice.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView); vertexSRVHandle = srvHandle; mpDevice.CreateShaderResourceView(this.acs.VertexBuffer, vertexSRVDesc, vertexSRVHandle); }
void PopulateConnectivityNodeProperties(ConnectivityNode x, ResourceDescription rd) { PopulateIdentifiedObjectProperties(x, rd); }
public ListenerSettingCommand(ModuleService service, ResourceDescription resource, ModuleService newServiceSettings, ModuleCommandType commandType, int listDepth) : base(service, resource, newServiceSettings, commandType, listDepth) { }
void PopulatePowerSystemResourceProperties(PowerSystemResource x, ResourceDescription rd) { PopulateIdentifiedObjectProperties(x, rd); }
public void PopulateProperties(IDClass idc, ResourceDescription rd) { if (idc == null || rd == null) { return; } switch (ModelCodeHelper.GetTypeFromGID(rd.Id)) { case DMSType.ACLineSegment: PopulateACLineSegmentProperties((ACLineSegment)idc, rd); break; case DMSType.Analog: PopulateAnalogProperties((Analog)idc, rd); break; case DMSType.BaseVoltage: PopulateBaseVoltageProperties((BaseVoltage)idc, rd); break; case DMSType.Breaker: PopulateBreakerProperties((Breaker)idc, rd); break; case DMSType.ConnectivityNode: PopulateConnectivityNodeProperties((ConnectivityNode)idc, rd); break; case DMSType.Disconnector: PopulateDisconnectorProperties((Disconnector)idc, rd); break; case DMSType.Discrete: PopulateDiscreteProperties((Discrete)idc, rd); break; case DMSType.DistributionGenerator: PopulateDistributionGeneratorProperties((DistributionGenerator)idc, rd); break; case DMSType.EnergyConsumer: PopulateEnergyConsumerProperties((EnergyConsumer)idc, rd); break; case DMSType.EnergySource: PopulateEnergySourceProperties((EnergySource)idc, rd); break; case DMSType.PowerTransformer: PopulatePowerTransformerProperties((PowerTransformer)idc, rd); break; case DMSType.RatioTapChanger: PopulateRatioTapChangerProperties((RatioTapChanger)idc, rd); break; case DMSType.Recloser: PopulateRecloserProperties((Recloser)idc, rd); break; case DMSType.Terminal: PopulateTerminalProperties((Terminal)idc, rd); break; case DMSType.TransformerWinding: PopulateTransformerWindingProperties((TransformerWinding)idc, rd); break; } }
void PopulateEquipmentProperties(Equipment x, ResourceDescription rd) { PopulatePowerSystemResourceProperties(x, rd); }
private void LoadRenderTargetData() { // Define the geometry for a quad. Vertex[] quadBuffer = new Vertex[] { new Vertex() { position = new Vector3(-1, -1, 0), textureCoordinate = new Vector3(0, 1, 0) }, new Vertex() { position = new Vector3(-1, 1, 0), textureCoordinate = new Vector3(0, 0, 0) }, new Vertex() { position = new Vector3(1, -1, 0), textureCoordinate = new Vector3(1, 1, 0) }, new Vertex() { position = new Vector3(-1, 1, 0), textureCoordinate = new Vector3(0, 0, 0) }, new Vertex() { position = new Vector3(1, 1, 0), textureCoordinate = new Vector3(1, 0, 0) }, new Vertex() { position = new Vector3(1, -1, 0), textureCoordinate = new Vector3(1, 1, 0) }, }; int vertexBufferSize = Utilities.SizeOf(quadBuffer); quadVertexBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(vertexBufferSize), ResourceStates.GenericRead); IntPtr pointer = quadVertexBuffer.Map(0); Utilities.Write(pointer, quadBuffer, 0, 6); quadVertexBuffer.Unmap(0); quadVertexBufferView = new VertexBufferView(); quadVertexBufferView.BufferLocation = quadVertexBuffer.GPUVirtualAddress; quadVertexBufferView.StrideInBytes = Utilities.SizeOf <Vertex>(); quadVertexBufferView.SizeInBytes = vertexBufferSize; //Render Target ClearValue renderTargetOptimizedClearValue = new ClearValue() { Format = Format.R8G8B8A8_UNorm, Color = new Vector4(0, 0.2F, 0.4f, 1) }; postProcessingRenderTarget = device.CreateCommittedResource(new HeapProperties(HeapType.Default), HeapFlags.None, new ResourceDescription(ResourceDimension.Texture2D, 0, TargetSize, TargetSize, 1, 0, Format.R8G8B8A8_UNorm, 1, 0, TextureLayout.Unknown, ResourceFlags.AllowRenderTarget), ResourceStates.RenderTarget, renderTargetOptimizedClearValue); CpuDescriptorHandle rtvHandle = renderTargetViewHeap.CPUDescriptorHandleForHeapStart + device.GetDescriptorHandleIncrementSize(DescriptorHeapType.RenderTargetView) * 2; device.CreateRenderTargetView(postProcessingRenderTarget, null, rtvHandle); //Shader Resource View int D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING = 5768; ShaderResourceViewDescription desc = new ShaderResourceViewDescription { Dimension = ShaderResourceViewDimension.Texture2D, Format = postProcessingRenderTarget.Description.Format, Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING, }; desc.Texture2D.MipLevels = 1; desc.Texture2D.MostDetailedMip = 0; desc.Texture2D.ResourceMinLODClamp = 0; //Create Render Target View //position start after first constant buffer and textures device.CreateShaderResourceView(postProcessingRenderTarget, desc, resourceViewHeap.CPUDescriptorHandleForHeapStart + device.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView) * renderTargetViewPosition); //Depth Target ClearValue depthOptimizedClearValue = new ClearValue() { Format = Format.D32_Float, DepthStencil = new DepthStencilValue() { Depth = 1.0F, Stencil = 0 }, }; postProcessingDepthTarget = device.CreateCommittedResource(new HeapProperties(HeapType.Default), HeapFlags.None, new ResourceDescription(ResourceDimension.Texture2D, 0, TargetSize, TargetSize, 1, 0, Format.D32_Float, 1, 0, TextureLayout.Unknown, ResourceFlags.AllowDepthStencil), ResourceStates.DepthWrite, depthOptimizedClearValue); CpuDescriptorHandle dpsHandle = depthStencilViewHeap.CPUDescriptorHandleForHeapStart + device.GetDescriptorHandleIncrementSize(DescriptorHeapType.DepthStencilView); device.CreateDepthStencilView(postProcessingDepthTarget, null, dpsHandle); //Shader #if DEBUG var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("postProcessing.hlsl", "VSMain", "vs_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "VSMain", "vs_5_0")); #endif #if DEBUG var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("postProcessing.hlsl", "PSMain", "ps_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "PSMain", "ps_5_0")); #endif // Define the vertex input layout. InputElement[] inputElementDescs = new InputElement[] { new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0), new InputElement("NORMAL", 0, Format.R32G32B32_Float, 12, 0), new InputElement("TEXCOORD", 0, Format.R32G32B32_Float, 24, 0) }; // Describe and create the graphics pipeline state object (PSO). GraphicsPipelineStateDescription psoDesc = new GraphicsPipelineStateDescription() { InputLayout = new InputLayoutDescription(inputElementDescs), RootSignature = rootSignature, VertexShader = vertexShader, PixelShader = pixelShader, RasterizerState = RasterizerStateDescription.Default(), BlendState = BlendStateDescription.Default(), DepthStencilFormat = SharpDX.DXGI.Format.D32_Float, DepthStencilState = DepthStencilStateDescription.Default(), SampleMask = int.MaxValue, PrimitiveTopologyType = PrimitiveTopologyType.Triangle, RenderTargetCount = 1, Flags = PipelineStateFlags.None, SampleDescription = new SharpDX.DXGI.SampleDescription(1, 0), StreamOutput = new StreamOutputDescription() }; psoDesc.RenderTargetFormats[0] = SharpDX.DXGI.Format.R8G8B8A8_UNorm; postProcessingPipelineState = device.CreateGraphicsPipelineState(psoDesc); //constant Buffer int constantBufferSize = (Utilities.SizeOf <PostProcessingData>() + 255) & ~255; postProcessingConstantBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(constantBufferSize), ResourceStates.GenericRead); //constant buffer ConstantBufferViewDescription cbvDesc = new ConstantBufferViewDescription() { BufferLocation = postProcessingConstantBuffer.GPUVirtualAddress, SizeInBytes = constantBufferSize }; var heapPosition = resourceViewHeap.CPUDescriptorHandleForHeapStart + device.GetDescriptorHandleIncrementSize(DescriptorHeapType.ConstantBufferViewShaderResourceViewUnorderedAccessView) * renderTargetConstantBufferPosition; device.CreateConstantBufferView(cbvDesc, heapPosition); }
void PopulateTapChangerProperties(TapChanger x, ResourceDescription rd) { PopulatePowerSystemResourceProperties(x, rd); }
public override void Add(ResourceDescription description) { // NOOP }
void PopulateTapChangerProperties(ConductingEquipment x, ResourceDescription rd) { PopulatePowerSystemResourceProperties(x, rd); }
private void LoadAssets() { // Create the root signature description. var rootSignatureDesc = new RootSignatureDescription(RootSignatureFlags.AllowInputAssemblerInputLayout, // Root Parameters new[] { new RootParameter(ShaderVisibility.Vertex, new DescriptorRange() { RangeType = DescriptorRangeType.ConstantBufferView, BaseShaderRegister = 0, OffsetInDescriptorsFromTableStart = int.MinValue, DescriptorCount = 1 }) }); rootSignature = device.CreateRootSignature(rootSignatureDesc.Serialize()); // Create the pipeline state, which includes compiling and loading shaders. #if DEBUG var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "VSMain", "vs_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var vertexShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "VSMain", "vs_5_0")); #endif #if DEBUG var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "PSMain", "ps_5_0", SharpDX.D3DCompiler.ShaderFlags.Debug)); #else var pixelShader = new ShaderBytecode(SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile("shaders.hlsl", "PSMain", "ps_5_0")); #endif // Define the vertex input layout. var inputElementDescs = new [] { new InputElement("POSITION", 0, Format.R32G32B32_Float, 0, 0), new InputElement("COLOR", 0, Format.R32G32B32A32_Float, 12, 0) }; // Describe and create the graphics pipeline state object (PSO). var psoDesc = new GraphicsPipelineStateDescription() { InputLayout = new InputLayoutDescription(inputElementDescs), RootSignature = rootSignature, VertexShader = vertexShader, PixelShader = pixelShader, RasterizerState = RasterizerStateDescription.Default(), BlendState = BlendStateDescription.Default(), DepthStencilFormat = SharpDX.DXGI.Format.D32_Float, DepthStencilState = new DepthStencilStateDescription() { IsDepthEnabled = false, IsStencilEnabled = false }, SampleMask = int.MaxValue, PrimitiveTopologyType = PrimitiveTopologyType.Triangle, RenderTargetCount = 1, Flags = PipelineStateFlags.None, SampleDescription = new SharpDX.DXGI.SampleDescription(1, 0), StreamOutput = new StreamOutputDescription() }; psoDesc.RenderTargetFormats[0] = SharpDX.DXGI.Format.R8G8B8A8_UNorm; pipelineState = device.CreateGraphicsPipelineState(psoDesc); // Create the command list. commandList = device.CreateCommandList(CommandListType.Direct, commandAllocator, pipelineState); // Create the vertex buffer. float aspectRatio = viewport.Width / viewport.Height; // Define the geometry for a triangle. var triangleVertices = new [] { new Vertex() { Position = new Vector3(0.0f, 0.25f * aspectRatio, 0.0f), Color = new Vector4(1.0f, 0.0f, 0.0f, 1.0f) }, new Vertex() { Position = new Vector3(0.25f, -0.25f * aspectRatio, 0.0f), Color = new Vector4(0.0f, 1.0f, 0.0f, 1.0f) }, new Vertex() { Position = new Vector3(-0.25f, -0.25f * aspectRatio, 0.0f), Color = new Vector4(0.0f, 0.0f, 1.0f, 1.0f) }, }; int vertexBufferSize = Utilities.SizeOf(triangleVertices); // Note: using upload heaps to transfer static data like vert buffers is not // recommended. Every time the GPU needs it, the upload heap will be marshalled // over. Please read up on Default Heap usage. An upload heap is used here for // code simplicity and because there are very few verts to actually transfer. vertexBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(vertexBufferSize), ResourceStates.GenericRead); // Copy the triangle data to the vertex buffer. IntPtr pVertexDataBegin = vertexBuffer.Map(0); Utilities.Write(pVertexDataBegin, triangleVertices, 0, triangleVertices.Length); vertexBuffer.Unmap(0); // Initialize the vertex buffer view. vertexBufferView = new VertexBufferView(); vertexBufferView.BufferLocation = vertexBuffer.GPUVirtualAddress; vertexBufferView.StrideInBytes = Utilities.SizeOf <Vertex>(); vertexBufferView.SizeInBytes = vertexBufferSize; // Command lists are created in the recording state, but there is nothing // to record yet. The main loop expects it to be closed, so close it now. commandList.Close(); constantBuffer = device.CreateCommittedResource(new HeapProperties(HeapType.Upload), HeapFlags.None, ResourceDescription.Buffer(1024 * 64), ResourceStates.GenericRead); //// Describe and create a constant buffer view. var cbvDesc = new ConstantBufferViewDescription() { BufferLocation = constantBuffer.GPUVirtualAddress, SizeInBytes = (Utilities.SizeOf <ConstantBuffer>() + 255) & ~255 }; device.CreateConstantBufferView(cbvDesc, constantBufferViewHeap.CPUDescriptorHandleForHeapStart); // Initialize and map the constant buffers. We don't unmap this until the // app closes. Keeping things mapped for the lifetime of the resource is okay. constantBufferPointer = constantBuffer.Map(0); Utilities.Write(constantBufferPointer, ref constantBufferData); // Create synchronization objects. fence = device.CreateFence(0, FenceFlags.None); fenceValue = 1; // Create an event handle to use for frame synchronization. fenceEvent = new AutoResetEvent(false); }
void PopulatePowerTransformerProperties(PowerTransformer x, ResourceDescription rd) { PopulateEquipmentProperties(x, rd); }
private Dictionary <DMSType, ResourceDescription> CreateResourcesForUpdate(List <long> gids) { Dictionary <DMSType, ResourceDescription> updates = new Dictionary <DMSType, ResourceDescription>(new DMSTypeComparer()); Delta delta = new Delta(); ResourceDescription rd = null; List <ModelCode> propertyIDs = null; DMSType type; #region Creating resources foreach (long gid in gids) { type = (DMSType)ModelCodeHelper.ExtractTypeFromGlobalId(gid); propertyIDs = modelResourcesDesc.GetAllPropertyIds(modelResourcesDesc.GetModelCodeFromType(type)); rd = new ResourceDescription(gid); foreach (ModelCode propertyId in propertyIDs) { if (!modelResourcesDesc.NotSettablePropertyIds.Contains(propertyId)) { switch (Property.GetPropertyType(propertyId)) { case PropertyType.Bool: rd.AddProperty(new Property(propertyId, true)); break; case PropertyType.Byte: rd.AddProperty(new Property(propertyId, (byte)7)); break; case PropertyType.Int32: rd.AddProperty(new Property(propertyId, (int)500)); break; case PropertyType.Int64: case PropertyType.TimeSpan: case PropertyType.DateTime: rd.AddProperty(new Property(propertyId, (long)3112)); break; case PropertyType.Enum: rd.AddProperty(new Property(propertyId, (short)2)); break; case PropertyType.Reference: rd.AddProperty(new Property(propertyId, (long)0)); break; case PropertyType.Float: rd.AddProperty(new Property(propertyId, (float)1.05)); break; case PropertyType.String: rd.AddProperty(new Property(propertyId, "UpdateString")); break; case PropertyType.Int64Vector: List <long> longVector = new List <long>(); longVector.Add((long)20); longVector.Add((long)21); longVector.Add((long)22); longVector.Add((long)23); longVector.Add((long)24); longVector.Add((long)25); rd.AddProperty(new Property(propertyId, longVector)); break; case PropertyType.FloatVector: List <float> floatVector = new List <float>(); floatVector.Add((float)21.1); floatVector.Add((float)22.2); floatVector.Add((float)23.3); floatVector.Add((float)24.4); floatVector.Add((float)25.5); rd.AddProperty(new Property(propertyId, floatVector)); break; case PropertyType.EnumVector: List <short> enumVector = new List <short>(); enumVector.Add((short)44); enumVector.Add((short)45); enumVector.Add((short)46); rd.AddProperty(new Property(propertyId, enumVector)); break; default: break; } } } if (!updates.ContainsKey(type)) { updates.Add(type, rd); delta.AddDeltaOperation(DeltaOpType.Update, rd, true); } } #endregion Creating resources #region Set references //SetPowerTransformerReferences(updates); //SetTransformerWindingReferences(updates); //SetWindingTestRefernces(updates); #endregion Set references return(updates); }
void PopulateEnergySourceProperties(EnergySource x, ResourceDescription rd) { PopulateConductingEquipmentProperties(x, rd); }
private async Task TransformToTopologyElementAsync(ResourceDescription modelEntity) { string verboseMessage = $"{baseLogString} entering TransformToTopologyElement method."; Logger.LogVerbose(verboseMessage); DMSType dmsType; dmsType = GetDMSTypeOfTopologyElement(modelEntity.Id); if (dmsType == DMSType.DISCRETE) { Measurement newDiscrete = await GetPopulatedDiscreteMeasurement(modelEntity); if (!await Measurements.ContainsKeyAsync(newDiscrete.Id)) { await Measurements.SetAsync(newDiscrete.Id, newDiscrete); //contains moze da bude false, a da kad doje ova linija na red, da vrednost bude popunjena, zato SetAsync, ali onda je sam if suvisan (ne znam da li je kljucan za neku logiku...) } var measurementProviderClient = MeasurementProviderClient.CreateClient(); await measurementProviderClient.AddDiscreteMeasurement(newDiscrete as DiscreteMeasurement); } else if (dmsType == DMSType.ANALOG) { Measurement newAnalog = await GetPopulatedAnalogMeasurement(modelEntity); if (!await Measurements.ContainsKeyAsync(newAnalog.Id)) { await Measurements.SetAsync(newAnalog.Id, newAnalog); //contains moze da bude false, a da kad doje ova linija na red, da vrednost bude popunjena, zato SetAsync, ali onda je sam if suvisan (ne znam da li je kljucan za neku logiku...) } var measurementProviderClient = MeasurementProviderClient.CreateClient(); await measurementProviderClient.AddAnalogMeasurement(newAnalog as AnalogMeasurement); } else if (dmsType != DMSType.MASK_TYPE && dmsType != DMSType.BASEVOLTAGE) { ITopologyElement newElement = await GetPopulatedElement(modelEntity); //lock (syncObj) //{ if (!await TopologyElements.ContainsKeyAsync(newElement.Id)) { await TopologyElements.SetAsync(newElement.Id, newElement); //contains moze da bude false, a da kad doje ova linija na red, da vrednost bude popunjena, zato SetAsync, ali onda je sam if suvisan (ne znam da li je kljucan za neku logiku...) } else { Logger.LogDebug($"{baseLogString} TransformToTopologyElementAsync => TopologyElements contain key {newElement.Id:X16}"); } //} if (dmsType == DMSType.ENERGYSOURCE) { var energySourcesResult = await EnergySources.TryGetValueAsync(ReliableDictionaryNames.EnergySources); if (energySourcesResult.HasValue) { var energySources = energySourcesResult.Value; energySources.Add(newElement.Id); await EnergySources.SetAsync(ReliableDictionaryNames.EnergySources, energySources); } else { Logger.LogWarning($"{baseLogString} Reliable collection '{ReliableDictionaryNames.EnergySources}' was not defined yet. Handling..."); await EnergySources.SetAsync(ReliableDictionaryNames.EnergySources, new List <long>() { newElement.Id }); } } //lock (syncObj) //{ if (!await ElementConnections.ContainsKeyAsync(modelEntity.Id)) { await ElementConnections.SetAsync(modelEntity.Id, await GetAllReferencedElements(modelEntity)); //contains moze da bude false, a da kad doje ova linija na red, da vrednost bude popunjena, zato SetAsync, ali onda je sam if suvisan (ne znam da li je kljucan za neku logiku...) } else { Logger.LogDebug($"{baseLogString} TransformToTopologyElementAsync => ElementConnections contain key {modelEntity.Id:X16}"); } //} } }
void PopulateProtectedSwitchProperties(ProtectedSwitch x, ResourceDescription rd) { PopulateSwitchProperties(x, rd); }
/// <summary> /// Method which handle input arguments and call appropriate actions /// </summary> /// <param name="args"></param> public void HandleAndProvide(string[] args) { #region Test data as they are send from cmLocal or console //------------------------------------------------ ////Add Test Args //"C:\Program Files (x86)\Atomia\AutomationServer\Common\Modules\Atomia.Provisioning.Modules.Folders.exe" Files BeginTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} {"FileName":"TestFile.txt","ParentFolder":"ChangeMe","FileContent":"123"} //args = new string[5]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Add"; //args[3] = \"RootFolder\":\"c:\\TestProvisioningExample\\\"; //args[4] = "{\"FileName\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"FileContent\":\"123\"}"; //Modify Test Args //Files BeginTransaction Modify {"RootFolder":"c:\\TestProvisioningExample\\"} {"FileName":"TestFile.txt","ParentFolder":"ChangeMe","FileContent":"1234"} {"FileName":"TestFile.txt","ParentFolder":"ChangeMe","FileContent":"12345"} //args = new string[6]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Modify"; //args[3] = \"RootFolder\":\"c:\\TestProvisioningExample\\\"; //args[4] = "{\"FileName\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"FileContent\":\"123\"}"; //args[5] = "{\"FileName\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"FileContent\":\"12345sdfsdf\"}"; //Add Test Args //"C:\Program Files (x86)\Atomia\AutomationServer\Common\Modules\Atomia.Provisioning.Modules.Folders.exe" Folders BeginTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} {"FolderName":"ChangeMe454","FolderDescription":"Change this default description value"} //Folders //BeginTransaction //Add //{"RootFolder":"c:\\TestProvisioningExample\\"} //{"FolderName":"ChangeMe","FolderDescription":"Change this default description value"} //{"current":{"serviceMetaData_InstanceId":"65782c7f-8072-4b2e-a8c8-1d116e6988a7","serviceMetaData_LogicalID":"","serviceMetaData_Name":"Folders","serviceMetaData_PhysicalID":"65782c7f-8072-4b2e-a8c8-1d116e6988a7","serviceMetaData_ProvisioningId":"65782c7f-8072-4b2e-a8c8-1d116e6988a7","AddCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}","CallOpCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--CallOp","Description":"Change_#_#_this_#_#_default_#_#_description_#_#_value","foo":"222","GetServiceDescCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--GetServiceDescCmd","Id":"123","ListChildrenCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListChildren","ListCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--List","ListNoChildrenCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListNoChildren","ModCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}","MoveToResCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--MoveToResource","Name":"ChangeMe","RemCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}","StdinStdout":"true","SynchExpPropCmd":"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--SynchExpProp"}} //args = new string[6]; //args[0] = "Folders"; //args[1] = "BeginTransaction"; //args[2] = "Add"; //args[3] = \"RootFolder\":\"c:\\TestProvisioningExample\\\"; //args[4] = "{\"Name\":\"ChangeMe\",\"Description\":\"Change this default description value\"}"; //args[5] = "{\"current\":{\"serviceMetaData_InstanceId\":\"65782c7f-8072-4b2e-a8c8-1d116e6988a7\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"65782c7f-8072-4b2e-a8c8-1d116e6988a7\",\"serviceMetaData_ProvisioningId\":\"65782c7f-8072-4b2e-a8c8-1d116e6988a7\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}\",\"CallOpCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--CallOp\",\"Description\":\"Change_#_#_this_#_#_default_#_#_description_#_#_value\",\"foo\":\"222\",\"GetServiceDescCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--GetServiceDescCmd\",\"Id\":\"123\",\"ListChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListChildren\",\"ListCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--List\",\"ListNoChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListNoChildren\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}\",\"MoveToResCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--MoveToResource\",\"Name\":\"ChangeMe\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--FolderName_#_#_{service[Name]}_#_#_--FolderDescription_#_#_{service[Description]}\",\"StdinStdout\":\"true\",\"SynchExpPropCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--SynchExpProp\"}}"; //Folders BeginTransaction Modify {"RootFolder":"c:\\TestProvisioningExample\\"} {"FolderName":"ChangeMe","FolderDescription":"Change this default description value"} {"FolderName":"ChangeMeddd","FolderDescription":"Change this default description value"} //args = new string[6]; //args[0] = "Folders"; //args[1] = "BeginTransaction"; //args[2] = "Modify"; //args[3] = "\"RootFolder\":\"c:\\TestProvisioningExample\\\""; //args[4] = "{\"FolderName\":\"ChangeMe\",\"FolderDescription\":\"Change this default description value\"}"; //args[5] = "{\"FolderName\":\"ChangeMeddd\",\"FolderDescription\":\"Change this default description value\"}"; //Files CommitTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} //{"Name":"TestFile.txt","ParentFolder":"ChangeMe","Content":"123"} //{"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"","\"serviceMetaData_ProvisioningId\"":"\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"ParentFolder\"":"\"WillTakeValueFromParentService\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"","\"serviceMetaData_LogicalID\"":"\"88788e53-6292-43a7-959c-9a4158792ec1\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"88788e53-6292-43a7-959c-9a4158792ec1\"","\"serviceMetaData_ProvisioningId\"":"\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\"","\"CallOpCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--CallOp\"","\"Description\"":"\"Change_#_#_this_#_#_default_#_#_description_#_#_value\"","\"foo\"":"\"222\"","\"GetServiceDescCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--GetServiceDescCmd\"","\"Id\"":"\"123\"","\"ListChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListChildren\"","\"ListCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--List\"","\"ListNoChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListNoChildren\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\"","\"MoveToResCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--MoveToResource\"","\"Name\"":"\"ChangeMe\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\"","\"StdinStdout\"":"\"true\"","\"SynchExpPropCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--SynchExpProp\""}} //args = new string[6]; //args[0] = "Files"; //args[1] = "CommitTransaction"; //args[2] = "Add"; //args[3] = "\"RootFolder\":\"c:\\TestProvisioningExample\\\""; //args[4] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[5] = "{\"current\":{\"serviceMetaData_InstanceId\":\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\"" + // ",\"serviceMetaData_ProvisioningId\":\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\"" + // ",\"Content\":\"123\",\"Id\":\"123\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\"" + // ",\"Name\":\"TestFile.txt\",\"ParentFolder\":\"WillTakeValueFromParentService\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--ParentFolder_#_#_{service[parent.Name]}_#_#_--Content_#_#_{service[Content]}\",\"StdinStdout\":\"true\",\"TestChangesPropagation\":\"\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\",\"serviceMetaData_LogicalID\":\"88788e53-6292-43a7-959c-9a4158792ec1\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"88788e53-6292-43a7-959c-9a4158792ec1\",\"serviceMetaData_ProvisioningId\":\"dd41fa6e-1524-49dd-a9b3-c515a230edf4\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Add_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\",\"CallOpCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--CallOp\",\"Description\":\"Change_#_#_this_#_#_default_#_#_description_#_#_value\",\"foo\":\"222\",\"GetServiceDescCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--GetServiceDescCmd\",\"Id\":\"123\",\"ListChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListChildren\",\"ListCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--List\",\"ListNoChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--ListNoChildren\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Modify_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\",\"MoveToResCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--MoveToResource\",\"Name\":\"ChangeMe\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--Remove_#_#_--RootFolder_#_#_{resource[RootFolder]}_#_#_--Name_#_#_{service[Name]}_#_#_--Description_#_#_{service[Description]}\",\"StdinStdout\":\"true\",\"SynchExpPropCmd\":\"Atomia.Provisioning.Modules.Folders.exe_#_#_--$TransGuid_#_#_--SynchExpProp\"}}"; //Files //BeginTransaction //Modify //{"RootFolder":"c:\\TestProvisioningExample\\"} //{"Name":"TestFile.txt","ParentFolder":"ChangeMe","Content":"12355566rere"} //{"Name":"TestFile.txt","ParentFolder":"ChangeMe","Content":"12355566rereee"} //{"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"12355566rere\"","\"Id\"":"\"123\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"ParentFolder\"":"\"WillTakeValueFromParentService\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"false\"","\"TestChangesPropagation\"":"\"\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_LogicalID\"":"\"d287c05f-47eb-4699-ad9e-2900dcd0f570\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"d287c05f-47eb-4699-ad9e-2900dcd0f570\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"CallOpCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --CallOp\"","\"Description\"":"\"Change this default description value\"","\"foo\"":"\"222\"","\"GetServiceDescCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --GetServiceDescCmd\"","\"Id\"":"\"123\"","\"ListChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListChildren\"","\"ListCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --List\"","\"ListNoChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListNoChildren\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"MoveToResCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --MoveToResource\"","\"Name\"":"\"ChangeMe\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"SynchExpPropCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --SynchExpProp\""}} //{"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_ProvisioningId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"12355566rereee\"","\"Id\"":"\"123\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"ParentFolder\"":"\"WillTakeValueFromParentService\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"serviceMetaData_LogicalID\"":"\"d287c05f-47eb-4699-ad9e-2900dcd0f570\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"d287c05f-47eb-4699-ad9e-2900dcd0f570\"","\"serviceMetaData_ProvisioningId\"":"\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"","\"AddCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"CallOpCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --CallOp\"","\"Description\"":"\"Change this default description value\"","\"foo\"":"\"222\"","\"GetServiceDescCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --GetServiceDescCmd\"","\"Id\"":"\"123\"","\"ListChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListChildren\"","\"ListCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --List\"","\"ListNoChildrenCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListNoChildren\"","\"ModCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"MoveToResCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --MoveToResource\"","\"Name\"":"\"ChangeMe\"","\"RemCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"SynchExpPropCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --SynchExpProp\""}} //args = new string[8]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Modify"; //args[3] = "\"RootFolder\":\"c:\\TestProvisioningExample\\\""; //args[4] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"12355566rere\"}"; //args[5] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"12355566rereee\"}"; //args[6] = "{\"current\":{\"serviceMetaData_InstanceId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\"" + //",\"serviceMetaData_ProvisioningId\":\"\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"" + //",\"Content\":\"12355566rere\",\"Id\":\"123\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"" + //",\"Name\":\"TestFile.txt\",\"ParentFolder\":\"WillTakeValueFromParentService\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"" + //",\"StdinStdout\":\"false\",\"TestChangesPropagation\":\"\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"serviceMetaData_LogicalID\":\"d287c05f-47eb-4699-ad9e-2900dcd0f570\"" + //",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"d287c05f-47eb-4699-ad9e-2900dcd0f570\",\"serviceMetaData_ProvisioningId\":\"\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"" + //",\"CallOpCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --CallOp\",\"Description\":\"Change this default description value\",\"foo\":\"222\",\"GetServiceDescCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --GetServiceDescCmd\",\"Id\":\"123\"" + //",\"ListChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListChildren\",\"ListCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --List\",\"ListNoChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListNoChildren\"" + //",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"MoveToResCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --MoveToResource\",\"Name\":\"ChangeMe\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"StdinStdout\":\"false\",\"SynchExpPropCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --SynchExpProp\"}}"; //args[7] = "{\"current\":{\"serviceMetaData_InstanceId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"serviceMetaData_ProvisioningId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Content\":\"12355566rereee\",\"Id\":\"123\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Name\":\"TestFile.txt\",\"ParentFolder\":\"WillTakeValueFromParentService\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"StdinStdout\":\"true\",\"TestChangesPropagation\":\"\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"serviceMetaData_LogicalID\":\"d287c05f-47eb-4699-ad9e-2900dcd0f570\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"d287c05f-47eb-4699-ad9e-2900dcd0f570\",\"serviceMetaData_ProvisioningId\":\"a47a2f24-c64e-4585-97a4-7ba052d3be4f\",\"AddCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"CallOpCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --CallOp\",\"Description\":\"Change this default description value\",\"foo\":\"222\",\"GetServiceDescCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --GetServiceDescCmd\",\"Id\":\"123\",\"ListChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListChildren\",\"ListCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --List\",\"ListNoChildrenCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --ListNoChildren\",\"ModCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"MoveToResCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --MoveToResource\",\"Name\":\"ChangeMe\",\"RemCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"StdinStdout\":\"false\",\"SynchExpPropCmd\":\"Atomia.Provisioning.Modules.Folders.exe --$TransGuid --SynchExpProp\"}}"; //Files BeginTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} {"FileName":"TestFile.txt","ParentFolder":"ChangeMe","FileContent":"123"} //args = new string[5]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Add"; //args[3] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[4] = "{\"FileName\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"FileContent\":\"123\"}"; ////Files BeginTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} {"Name":"TestFile.txt","ParentFolder":"ChangeMe","Content":"123"} {"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\"","\"serviceMetaData_ProvisioningId\"":"\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"OperationMapping\"":"\"GetFullFilePath:GetFullFilePath\"","\"ParentFolder\"":"\"WillTakeValueFromParentService\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"\"","\"UseCmdLinePlugin\"":"\"true\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\"","\"serviceMetaData_LogicalID\"":"\"11aed34b-0c44-4f68-bc61-02c18ebc7012\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"11aed34b-0c44-4f68-bc61-02c18ebc7012\"","\"serviceMetaData_ProvisioningId\"":"\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Description\"":"\"Change this default description value\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Name\"":"\"ChangeMe\"","\"OperationMapping\"":"\"GetFullFolderPath:GetFullFolderPath\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"UseCmdLinePlugin\"":"\"true\""}} //args = new string[6]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Add"; //args[3] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[4] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[5] = "{\"current\":{\"serviceMetaData_InstanceId\":\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\",\"serviceMetaData_ProvisioningId\":\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Content\":\"123\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Name\":\"TestFile.txt\",\"OperationMapping\":\"GetFullFilePath:GetFullFilePath\",\"ParentFolder\":\"WillTakeValueFromParentService\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"StdinStdout\":\"true\",\"TestChangesPropagation\":\"\",\"UseCmdLinePlugin\":\"true\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\",\"serviceMetaData_LogicalID\":\"11aed34b-0c44-4f68-bc61-02c18ebc7012\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"11aed34b-0c44-4f68-bc61-02c18ebc7012\",\"serviceMetaData_ProvisioningId\":\"321220b0-f0ca-46b7-9b70-6a0a88c19d7e\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Description\":\"Change this default description value\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Name\":\"ChangeMe\",\"OperationMapping\":\"GetFullFolderPath:GetFullFolderPath\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"StdinStdout\":\"false\",\"UseCmdLinePlugin\":\"true\"}}"; //Files BeginTransaction Modify {"RootFolder":"c:\\TestProvisioningExample\\"} {"Name":"TestFile.txt","ParentFolder":"ChangeMe","Content":"123"} {"Name":"TestFile2.txt","ParentFolder":"ChangeMe","Content":"123"} {"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\nervice[parent.Name]} --Content {service[Content]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"OperationMapping\"":"\"GetFullFilePath:GetFullFilePath\"","\"ParentFolder\"":"\"ChangeMe\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"NewValueForTesting\"","\"UseCmdLinePlugin\"":"\"true\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_LogicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Description\"":"\"Change this default description value\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Name\"":"\"ChangeMe\"","\"OperationMapping\"":"\"GetFullFolderPath:GetFullFolderPath\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"UseCmdLinePlugin\"":"\"true\""}} {"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_ProvisioningId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\nervice[parent.Name]} --Content {service[Content]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile2.txt\"","\"OperationMapping\"":"\"GetFullFilePath:GetFullFilePath\"","\"ParentFolder\"":"\"ChangeMe\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"NewValueForTesting\"","\"UseCmdLinePlugin\"":"\"true\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"serviceMetaData_LogicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_ProvisioningId\"":"\"9c79cf42-d623-4e84-abab-449dfa505a6f\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Description\"":"\"Change this default description value\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Name\"":"\"ChangeMe\"","\"OperationMapping\"":"\"GetFullFolderPath:GetFullFolderPath\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"UseCmdLinePlugin\"":"\"true\""}} //args = new string[8]; //args[0] = "Files"; //args[1] = "BeginTransaction"; //args[2] = "Modify"; //args[3] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[4] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[5] = "{\"Name\":\"TestFile2.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[6] = "{\"current\":{\"serviceMetaData_InstanceId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_ProvisioningId\":\"\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Content\":\"123\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\nervice[parent.Name]} --Content {service[Content]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Name\":\"TestFile.txt\",\"OperationMapping\":\"GetFullFilePath:GetFullFilePath\",\"ParentFolder\":\"ChangeMe\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"StdinStdout\":\"true\",\"TestChangesPropagation\":\"NewValueForTesting\",\"UseCmdLinePlugin\":\"true\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_LogicalID\":\"6663a64d-bf34-4b64-ba3d-ef818e114572\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"6663a64d-bf34-4b64-ba3d-ef818e114572\",\"serviceMetaData_ProvisioningId\":\"\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Description\":\"Change this default description value\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Name\":\"ChangeMe\",\"OperationMapping\":\"GetFullFolderPath:GetFullFolderPath\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"StdinStdout\":\"false\",\"UseCmdLinePlugin\":\"true\"}}"; //args[7] = "{\"current\":{\"serviceMetaData_InstanceId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_LogicalID\":\"\",\"serviceMetaData_Name\":\"Files\",\"serviceMetaData_PhysicalID\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_ProvisioningId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Content\":\"123\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\nervice[parent.Name]} --Content {service[Content]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"Name\":\"TestFile2.txt\",\"OperationMapping\":\"GetFullFilePath:GetFullFilePath\",\"ParentFolder\":\"ChangeMe\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\",\"StdinStdout\":\"true\",\"TestChangesPropagation\":\"NewValueForTesting\",\"UseCmdLinePlugin\":\"true\"},\"current.parent\":{\"serviceMetaData_InstanceId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"serviceMetaData_LogicalID\":\"6663a64d-bf34-4b64-ba3d-ef818e114572\",\"serviceMetaData_Name\":\"Folders\",\"serviceMetaData_PhysicalID\":\"6663a64d-bf34-4b64-ba3d-ef818e114572\",\"serviceMetaData_ProvisioningId\":\"9c79cf42-d623-4e84-abab-449dfa505a6f\",\"AddCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"AddRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Description\":\"Change this default description value\",\"Id\":\"123\",\"ModifyCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"ModifyRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"Name\":\"ChangeMe\",\"OperationMapping\":\"GetFullFolderPath:GetFullFolderPath\",\"RemoveCommitCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveExecuteCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"RemoveRollbackCmd\":\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\",\"StdinStdout\":\"false\",\"UseCmdLinePlugin\":\"true\"}}"; //Files CommitTransaction Modify {"RootFolder":"c:\\TestProvisioningExample\\"} {"Name":"TestFile.txt","Content":"123"} {"Name":"TestFile2.txt","Content":"123"} {"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\nervice[parent.Name]} --Content {service[Content]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile.txt\"","\"OperationMapping\"":"\"GetFullFilePath:GetFullFilePath\"","\"ParentFolder\"":"\"ChangeMe\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"NewValueForTesting\"","\"UseCmdLinePlugin\"":"\"true\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_LogicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_ProvisioningId\"":"\"\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Description\"":"\"Change this default description value\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Name\"":"\"ChangeMe\"","\"OperationMapping\"":"\"GetFullFolderPath:GetFullFolderPath\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"UseCmdLinePlugin\"":"\"true\""}} {"\"current\"":{"\"serviceMetaData_InstanceId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_LogicalID\"":"\"\"","\"serviceMetaData_Name\"":"\"Files\"","\"serviceMetaData_PhysicalID\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_ProvisioningId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Content\"":"\"123\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {s\r\n\r\nervice[parent.Name]} --Content {service[Content]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"Name\"":"\"TestFile2.txt\"","\"OperationMapping\"":"\"GetFullFilePath:GetFullFilePath\"","\"ParentFolder\"":"\"ChangeMe\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder\r\n {res\r\nource[RootFolder]} --Name {service[Name]} --ParentFolder {service[parent.Name]} --Content {service[Content]}\"","\"StdinStdout\"":"\"true\"","\"TestChangesPropagation\"":"\"NewValueForTesting\"","\"UseCmdLinePlugin\"":"\"true\""},"\"current.parent\"":{"\"serviceMetaData_InstanceId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"serviceMetaData_LogicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_Name\"":"\"Folders\"","\"serviceMetaData_PhysicalID\"":"\"6663a64d-bf34-4b64-ba3d-ef818e114572\"","\"serviceMetaData_ProvisioningId\"":"\"89e49fe1-d5ef-42ca-9b7c-986fb841ca96\"","\"AddCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"AddRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Add --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Description\"":"\"Change this default description value\"","\"Id\"":"\"123\"","\"ModifyCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"ModifyRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Modify --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"Name\"":"\"ChangeMe\"","\"OperationMapping\"":"\"GetFullFolderPath:GetFullFolderPath\"","\"RemoveCommitCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveExecuteCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"RemoveRollbackCmd\"":"\"Atomia.Provisioning.Modules.Folders.exe --Remove --RootFolder {resource[RootFolder]} --Name {service[Name]} --Description {service[Description]}\"","\"StdinStdout\"":"\"false\"","\"UseCmdLinePlugin\"":"\"true\""}} //args = new string[8]; //args[0] = "Files"; //args[1] = "CommitTransaction"; //args[2] = "Modify"; //args[3] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[4] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[5] = "{\"Name\":\"TestFile2.txt\",\"ParentFolder\":\"ChangeMe\",\"Content\":\"123\"}"; //args[6] = ""; //args[7] = ""; //Folders CallOperation operationName:GetFullFolderPath operationArgument: {"RootFolder":"c:\\TestProvisioningExample\\"} {"Name":"ChangeMe"} //args = new string[6]; //args[0] = "Folders"; //args[1] = "CallOperation"; //args[2] = "operationName:GetFullFolderPath"; //args[3] = "operationArguments:"; //args[4] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[5] = "{\"Name\":\"ChangeMe\"}"; //Files CallOperation operationName:GetFullFilePath operationArgument: {"RootFolder":"c:\\TestProvisioningExample\\"} {"Name":"TestFile.txt","ParentFolder":"WillTakeValueFromParentService"} //args = new string[6]; //args[0] = "Files"; //args[1] = "CallOperation"; //args[2] = "operationName:GetFullFilePath"; //args[3] = "operationArguments:"; //args[4] = "{\"RootFolder\":\"c:\\TestProvisioningExample\\\"}"; //args[5] = "{\"Name\":\"TestFile.txt\",\"ParentFolder\":\"WillTakeValueFromParentService\"}"; #endregion Test data as they are send from console #region Check args and prepare variables //serviceName TransContext CommandType Resource [Service] [ServiceOld ServiceNew for modify command] [full services serialized] //Folders CommitTransaction Add {"RootFolder":"c:\\TestProvisioningExample\\"} {"FolderName":"ChangeMe","FolderDescription":"Change this default description value"} if (args == null) { throw ExceptionHelper.GetModuleException("ID422001", null, null); } if (args.Length < 3) { throw ExceptionHelper.GetModuleException("ID422001", null, null); } string serviceName = args[0].ToString(); string commandType = string.Empty; switch (args[1]) { case "CallOperation": { commandType = args[1].ToString(); } break; default: { transactionContext = args[1].ToString().Replace("$", ""); commandType = args[2].ToString(); } break; } ModuleService service = new ModuleService(serviceName, ""); ModuleService serviceOld = new ModuleService(serviceName, ""); ModuleService serviceNew = new ModuleService(serviceName, ""); ModuleService serviceFull = null; ModuleService serviceOldFull = null; ModuleService serviceNewFull = null; ResourceDescription resource = new ResourceDescription(serviceName, "ResourceDescriptionFile"); #endregion Check args and prepare variables switch (commandType) { case "Add": case "Remove": { #region Add/Remove Handling #region Check args number if (!((args.Length == 5) || (args.Length == 6))) { throw ExceptionHelper.GetModuleException("ID422002", null, null); } #endregion Check args number resource = Helpers.Common.ReadAndFillResourceData(args[3], serviceName); service = Helpers.Common.ReadAndFillServiceData(args[4], serviceName); #region Read and fill full serialized service if (args.Length == 6) { serviceFull = Helpers.Common.DeserializeService(args[5]); } #endregion Read and fill full serialized service switch (commandType) { case "Add": { ProvideService(service, resource); } break; case "Remove": { RemoveService(service, resource); } break; } #region After add we should update service properties if any is changed, if StdinStdOut is true if (serviceFull != null) { if (serviceFull["StdinStdout"].ToLower() == "true") { foreach (ModuleServiceProperty prop in service.Properties) { serviceFull[prop.Name] = prop.Value; //serviceFull.Properties.Add(new ModuleServiceProperty(prop.Name, prop.Value)); } string jsonSerializedFullService = Helpers.Common.SerializeService(serviceFull); bool bLoop = true; string sCurrentMessagePart = string.Empty; string sRestOfMessage = jsonSerializedFullService; while (bLoop) { if (sRestOfMessage.Length < 1024) { sCurrentMessagePart = sRestOfMessage; bLoop = false; } else { sCurrentMessagePart = sRestOfMessage.Substring(0, 1023); sRestOfMessage = sRestOfMessage.Replace(sCurrentMessagePart, ""); } Console.WriteLine(sCurrentMessagePart); } } } #endregion After add we should update service properties if any is changed, if StdinStdOut is true #endregion Add/Remove Handling } break; case "Modify": { #region Modify Handling #region Check args number if (!((args.Length == 6) || (args.Length == 8))) { throw ExceptionHelper.GetModuleException("ID422003", null, null); } #endregion Check args number resource = Helpers.Common.ReadAndFillResourceData(args[3], serviceName); serviceOld = Helpers.Common.ReadAndFillServiceData(args[4], serviceName); serviceNew = Helpers.Common.ReadAndFillServiceData(args[5], serviceName); #region Read and fill full serialized service if (args.Length == 8) { serviceOldFull = Helpers.Common.DeserializeService(args[6]); serviceNewFull = Helpers.Common.DeserializeService(args[7]); } #endregion Read and fill full serialized service ModifyService(serviceOld, resource, serviceNew); #region After modify we should update service properties if any is changed, if StdinStdOut is true if (serviceNewFull != null) { if (serviceNewFull["StdinStdout"].ToLower() == "true") { foreach (ModuleServiceProperty prop in serviceNew.Properties) { serviceNewFull[prop.Name] = prop.Value; } string jsonSerializedFullService = Helpers.Common.SerializeService(serviceNewFull); bool bLoop = true; string sCurrentMessagePart = string.Empty; string sRestOfMessage = jsonSerializedFullService; while (bLoop) { if (sRestOfMessage.Length < 1024) { sCurrentMessagePart = sRestOfMessage; bLoop = false; } else { sCurrentMessagePart = sRestOfMessage.Substring(0, 1023); sRestOfMessage = sRestOfMessage.Replace(sCurrentMessagePart, ""); } Console.WriteLine(sCurrentMessagePart); } } } #endregion after modify we should update service properties if any is changed, if StdinStdOut is true #endregion Modify Handling } break; case "CallOperation": { #region CallOperation Handling #region Check args number if (args.Length != 6) { throw ExceptionHelper.GetModuleException("ID422002", null, null); } #endregion Check args number //string args = service.Name + " " + ModuleCommandType.CallOperation.ToString() + " " + "operationName:" + operationName + " " + "operationArgument:" + operationArgument + " " + jsonSerializedResourceProperties + " " + jsonSerializedServiceProperties; string operationName = string.Empty; string operationArgument = string.Empty; string oneParam = args[2]; string[] oneParamSplitted = oneParam.Split(":".ToArray(), 2, StringSplitOptions.None); if (oneParamSplitted.Length != 2) { throw ExceptionHelper.GetModuleException("ID422001", null, null); } else { operationName = oneParamSplitted[1]; } oneParam = args[3]; oneParamSplitted = oneParam.Split(":".ToArray(), 2, StringSplitOptions.None); if (oneParamSplitted.Length != 2) { throw ExceptionHelper.GetModuleException("ID422001", null, null); } else { operationArgument = oneParamSplitted[1]; } resource = Helpers.Common.ReadAndFillResourceData(args[4], serviceName); service = Helpers.Common.ReadAndFillServiceData(args[5], serviceName); string operationResult = CallOperation(service, operationName, operationArgument, resource); bool bLoop = true; string sCurrentMessagePart = string.Empty; string sRestOfMessage = operationResult; while (bLoop) { if (sRestOfMessage.Length < 1024) { sCurrentMessagePart = sRestOfMessage; bLoop = false; } else { sCurrentMessagePart = sRestOfMessage.Substring(0, 1023); sRestOfMessage = sRestOfMessage.Replace(sCurrentMessagePart, ""); } Console.WriteLine(sCurrentMessagePart); } #endregion CallOperation Handling } break; } }
void PopulateBreakerProperties(Breaker x, ResourceDescription rd) { PopulateProtectedSwitchProperties(x, rd); }
/// <summary> /// Gets the module command. /// </summary> /// <param name="resource">The server resource.</param> /// <param name="commandType">Type of the command.</param> /// <param name="childService">The child service.</param> /// <returns>Module command</returns> private ModuleCommand GetModuleCommand(ResourceDescription resource, ModuleCommandType commandType, int listDepth, params ModuleService[] childService) { ModuleCommand command = null; string serviceName = childService[0].Name; Type command_type = null; switch (serviceName) { case "Folders": { command_type = typeof(Commands.FoldersCommand); } break; case "OtherCommand": { //command_type = typeof(Commands.OtherCommand); } break; } command = (ModuleCommand)Activator.CreateInstance(command_type, new object[] { childService[0], resource, commandType == ModuleCommandType.Modify ? childService[1] : null, commandType, listDepth }); return command; }
void PopulateRecloserProperties(Recloser x, ResourceDescription rd) { PopulateProtectedSwitchProperties(x, rd); }
public FileCommand(ModuleService service, ResourceDescription resource, ModuleService newServiceSettings, ModuleCommandType commandType, int listDepth, string transContext) : base(service, resource, newServiceSettings, commandType, listDepth) { this.transContext = transContext; }
void PopulateDisconnectorProperties(Disconnector x, ResourceDescription rd) { PopulateSwitchProperties(x, rd); }
public HaproxyCommandBase(ModuleService service, ResourceDescription resource, ModuleService newServiceSettings, ModuleCommandType commandType, int listDepth) : base(service, resource, newServiceSettings, commandType, listDepth) { this.jsonSerializer = new JavaScriptSerializer(); }
private static Dictionary<string, ResourceDescription> FillBindingsElement(System.Xml.Linq.XElement resourceAndPolicy, string moduleName) { Dictionary<string, ResourceDescription> resources = new Dictionary<string, ResourceDescription>(); // find all resources descriptions for module foreach (System.Xml.Linq.XElement module in resourceAndPolicy.Element("moduleList").Elements()) { if (module.Attribute("name").Value == moduleName) { foreach (System.Xml.Linq.XElement resourceItem in resourceAndPolicy.Element("resourceList").Elements()) { ResourceDescription resourceDesc = new ResourceDescription(resourceItem.Attribute("name").Value, moduleName); resourceDesc.ShouldBeLocked = true; foreach (System.Xml.Linq.XElement propElem in resourceItem.Elements("property")) { resourceDesc[propElem.Attribute("name").Value] = propElem.Value; } foreach (System.Xml.Linq.XElement propListEl in resourceItem.Elements("propertyList")) { ResourceDescriptionPropertyList resDescPropList = new ResourceDescriptionPropertyList(); resDescPropList.PropertyListName = propListEl.Attribute("name").Value; foreach (System.Xml.Linq.XElement propListItem in propListEl.Elements("propertyListItem")) { resDescPropList.PropertyListItems.Add(propListItem.Value); } resourceDesc.PropertyList.Add(resDescPropList); } // first check if this resource already exist in list of resoources if (resources.ContainsKey(resourceDesc.Name)) { // check if they are the same if (resourceDesc.Equals(resources[resourceDesc.Name])) { resourceDesc = resources[resourceDesc.Name]; } else { // they have the same name but settings are different. // this is not allowed throw ExceptionHelper.GetModuleException("ID422005", new Dictionary<string, string>() { { "Message", resourceDesc.Name } }, null); } } else { resources[resourceDesc.Name] = resourceDesc; } } } } return resources; }