public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            ExecuteMessage     msg        = new ExecuteMessage();
            Dev2JsonSerializer serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Save Plugin Service");
                StringBuilder resourceDefinition;


                values.TryGetValue("PluginService", out resourceDefinition);

                IPluginService serviceDef = serializer.Deserialize <IPluginService>(resourceDefinition);
                // ReSharper disable MaximumChainedReferences
                // ReSharper restore MaximumChainedReferences
                var source = ResourceCatalogue.GetResource <PluginSource>(GlobalConstants.ServerWorkspaceID, serviceDef.Source.Id);
                var output = new List <MethodOutput>(serviceDef.OutputMappings.Select(a => new MethodOutput(a.MappedFrom, a.MappedTo, "", false, a.RecordSetName, false, "", false, "", false)));
                var recset = new RecordsetList();
                var rec    = new Recordset();
                rec.Fields.AddRange(new List <RecordsetField>(serviceDef.OutputMappings.Select(a => new RecordsetField {
                    Name = a.MappedFrom, Alias = a.MappedTo, RecordsetAlias = a.RecordSetName, Path = new DataTablePath(a.RecordSetName, a.MappedFrom)
                })));
                recset.Add(rec);
                var parameters = serviceDef.Inputs?.Select(a => new MethodParameter {
                    EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value, TypeName = a.TypeName
                }).ToList() ?? new List <MethodParameter>();
                var constructorParams = serviceDef.Constructor.Inputs.Select(input => new ConstructorParameter()
                {
                    Name = input.Name, Value = input.Value, TypeName = input.TypeName, EmptyToNull = input.EmptyToNull, IsRequired = input.IsRequired, ShortTypeName = Type.GetType(input.TypeName)?.FullName
                });
                var res = new PluginService
                {
                    Constructor  = new ServiceConstructor(serviceDef.Constructor.ConstructorName, constructorParams, null),
                    Method       = new ServiceMethod(serviceDef.Name, serviceDef.Name, parameters, null, output, serviceDef.Action.Method),
                    ResourceName = serviceDef.Name,
                    ResourceID   = serviceDef.Id,
                    Source       = source,
                    Recordsets   = recset,
                    Namespace    = serviceDef.Action.FullName
                };

                ResourceCatalog.Instance.SaveResource(GlobalConstants.ServerWorkspaceID, res, serviceDef.Path);
                ServerExplorerRepo.UpdateItem(res);

                msg.HasError = false;
            }

            catch (Exception err)
            {
                msg.HasError = true;
                msg.Message  = new StringBuilder(err.Message);
                Dev2Logger.Error(err);
            }

            return(serializer.SerializeToBuilder(msg));
        }
예제 #2
0
        public IExplorerRepositoryResult MoveItem(IExplorerItem itemToMove, string newPath, Guid workSpaceId)
        {
            IEnumerable <IResource> item =
                ResourceCatalogue.GetResourceList(workSpaceId)
                .Where(
                    a =>
                    (a.ResourcePath == newPath));

            if (item.Any())
            {
                return(new ExplorerRepositoryResult(ExecStatus.Fail, "There is an item that exists with the same name and path"));
            }
            MoveVersions(itemToMove, newPath);
            ResourceCatalogResult result = ResourceCatalogue.RenameCategory(workSpaceId, itemToMove.ResourcePath, newPath, new List <IResource> {
                ResourceCatalogue.GetResource(workSpaceId, itemToMove.ResourceId)
            });

            _file.Delete(string.Format("{0}.xml", DirectoryStructureFromPath(itemToMove.ResourcePath)));

            return(new ExplorerRepositoryResult(result.Status, result.Message));
        }
        IExplorerRepositoryResult MoveSingeItem(IExplorerItem itemToMove, string newPath, Guid workSpaceId)
        {
            var newResourcePath = newPath;

            if (!string.IsNullOrEmpty(itemToMove.ResourcePath))
            {
                newResourcePath = itemToMove.ResourcePath.Replace(itemToMove.ResourcePath, newPath);
            }
            var resource    = ResourceCatalogue.GetResource(workSpaceId, itemToMove.ResourceId);
            var source      = $"{DirectoryStructureFromPath(resource.GetResourcePath(GlobalConstants.ServerWorkspaceID))}.xml";
            var destination = $"{DirectoryStructureFromPath(newResourcePath)+"\\"+resource.ResourceName+".xml"}";

            if (_file.Exists(source))
            {
                _file.Move(source, destination);
            }
            ResourceCatalogResult result = ResourceCatalogue.RenameCategory(workSpaceId, resource.GetSavePath(), newResourcePath, new List <IResource> {
                resource
            });

            itemToMove.ResourcePath = newResourcePath;
            return(new ExplorerRepositoryResult(result.Status, result.Message));
        }
예제 #4
0
        public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace)
        {
            var msg        = new ExecuteMessage();
            var serializer = new Dev2JsonSerializer();

            try
            {
                Dev2Logger.Info("Save Resource Service", GlobalConstants.WarewolfInfo);


                values.TryGetValue("Webservice", out StringBuilder resourceDefinition);

                var src = serializer.Deserialize <IWebService>(resourceDefinition);

                var parameters = src.Inputs?.Select(a => new MethodParameter()
                {
                    EmptyToNull = a.EmptyIsNull, IsRequired = a.RequiredField, Name = a.Name, Value = a.Value
                }).ToList() ?? new List <MethodParameter>();

                var source = ResourceCatalogue.GetResource <WebSource>(GlobalConstants.ServerWorkspaceID, src.Source.Id);
                var output = new List <MethodOutput>(src.OutputMappings.Select(a => new MethodOutput(a.MappedFrom, a.MappedTo, "", false, a.RecordSetName, false, "", false, "", false)));
                var recset = new Recordset();
                recset.Fields.AddRange(new List <RecordsetField>(src.OutputMappings.Select(a => new RecordsetField {
                    Name = a.MappedFrom, Alias = a.MappedTo, RecordsetAlias = a.RecordSetName
                })));
                var serviceOutputMapping = src.OutputMappings.FirstOrDefault(mapping => !string.IsNullOrEmpty(mapping.RecordSetName));
                if (serviceOutputMapping != null)
                {
                    recset.Name = serviceOutputMapping.RecordSetName;
                }
                var recordsetList = new RecordsetList {
                    recset
                };
                var res = new WebService
                {
                    Method             = new ServiceMethod(),
                    RequestUrl         = string.Concat(src.SourceUrl, src.RequestUrl),
                    ResourceName       = src.Name,
                    ResourceID         = src.Id,
                    RequestBody        = src.PostData,
                    Recordsets         = recordsetList,
                    Source             = source,
                    Headers            = src.Headers,
                    FormDataParameters = src.FormDataParameters,
                    IsManualChecked    = src.IsManualChecked,
                    IsFormDataChecked  = src.IsFormDataChecked,
                    RequestMethod      = src.Method,
                    RequestResponse    = src.Response
                };
                res.Method.Name              = src.Name;
                res.Method.Parameters        = parameters;
                res.Method.Outputs           = output;
                res.Method.OutputDescription = res.GetOutputDescription();
                ResourceCatalogue.SaveResource(GlobalConstants.ServerWorkspaceID, res, src.Path);
                ServerExplorerRepo.UpdateItem(res);

                msg.HasError = false;
            }

            catch (Exception err)
            {
                msg.HasError = true;
                msg.Message  = new StringBuilder(err.Message);
                Dev2Logger.Error(err, GlobalConstants.WarewolfError);
            }

            return(serializer.SerializeToBuilder(msg));
        }