Esempio n. 1
0
            private void WriteRequestNamespace(StringWriter output, RequestNamespace requestNamespace, bool writeAccessor)
            {
                if (!string.IsNullOrEmpty(requestNamespace.Name))
                {
                    var propertyName = requestNamespace.Name;
                    var n            = propertyName.LastIndexOf('.');
                    if (n >= 0)
                    {
                        propertyName = propertyName.Substring(n + 1);
                    }

                    var className    = propertyName + "Requests";
                    var variableName = className.ToLowerInvariant();

                    if (writeAccessor)
                    {
                        output.WriteLine("    private {0} {1};", className, variableName);
                        output.WriteLine();
                        output.WriteLine("    [NotNull]");
                        output.WriteLine("    public {2} {0} {{ get {{ return this.{1} ?? (this.{1} = new {2}()); }}}}", propertyName, variableName, className);
                        output.WriteLine();

                        output.WriteLine("    [System.CodeDom.Compiler.GeneratedCodeAttribute(\"SitecoreRocks\", \"1.0.0.0\")]");
                    }

                    output.WriteLine("    public partial class {0}", className);
                    output.WriteLine("    {");

                    foreach (var request in requestNamespace.Requests)
                    {
                        WriteRequest(output, requestNamespace, request);
                    }

                    output.WriteLine("    }");
                    output.WriteLine();
                }
                else
                {
                    foreach (var request in requestNamespace.Requests)
                    {
                        WriteRequest(output, requestNamespace, request);
                    }
                }
            }
Esempio n. 2
0
            private void ProcessMethod(List <RequestNamespace> requestNamespaces, Type type, MethodInfo methodInfo)
            {
                var name      = string.Empty;
                var nameSpace = type.FullName;

                var n = nameSpace.LastIndexOf('.');

                if (n >= 0)
                {
                    name      = nameSpace.Substring(n + 1);
                    nameSpace = nameSpace.Substring(0, n);
                }

                if (nameSpace == "Sitecore.Rocks.Server.Requests")
                {
                    nameSpace = string.Empty;
                }
                else if (nameSpace.StartsWith("Sitecore.Rocks.Server.Requests."))
                {
                    nameSpace = nameSpace.Substring(31);
                }

                var requestNamespace = requestNamespaces.FirstOrDefault(r => r.Name == nameSpace);

                if (requestNamespace == null)
                {
                    requestNamespace = new RequestNamespace(nameSpace);
                    requestNamespaces.Add(requestNamespace);
                }

                var parameters = new List <string>();

                foreach (var parameterInfo in methodInfo.GetParameters())
                {
                    parameters.Add(parameterInfo.Name);
                }

                var request = new Request(name, parameters.ToArray());

                requestNamespace.Requests.Add(request);
            }
Esempio n. 3
0
            private void WriteRequest(StringWriter output, RequestNamespace requestNamespace, Request request)
            {
                var databaseNameParameter = request.Parameters.FirstOrDefault(p => string.Compare(p, "database", StringComparison.InvariantCultureIgnoreCase) == 0 || string.Compare(p, "databaseName", StringComparison.InvariantCultureIgnoreCase) == 0);
                var itemIdParameter       = request.Parameters.FirstOrDefault(p => string.Compare(p, "id", StringComparison.InvariantCultureIgnoreCase) == 0 || string.Compare(p, "itemId", StringComparison.InvariantCultureIgnoreCase) == 0);

                var hasDatabaseUri = !string.IsNullOrEmpty(databaseNameParameter);
                var hasItemUri     = !string.IsNullOrEmpty(databaseNameParameter) && !string.IsNullOrEmpty(itemIdParameter);
                var replacing      = hasDatabaseUri || hasItemUri;
                var first          = true;

                var name = request.Name;

                if (!string.IsNullOrEmpty(requestNamespace.Name))
                {
                    name = requestNamespace.Name + "." + name;
                }

                output.WriteLine("      [System.CodeDom.Compiler.GeneratedCodeAttribute(\"SitecoreRocks\", \"1.0.0.0\")]");
                output.Write("      public void {0}(", request.Name);

                if (!replacing)
                {
                    output.Write("[NotNull] Site site");
                    first = false;
                }

                var replaced = false;

                foreach (var parameter in request.Parameters)
                {
                    if ((parameter != databaseNameParameter && parameter != itemIdParameter) || !replacing)
                    {
                        if (!first)
                        {
                            output.Write(", ");
                        }
                        else
                        {
                            first = false;
                        }

                        output.Write("[NotNull] string {0}", parameter);
                        continue;
                    }

                    if (!replaced)
                    {
                        if (!first)
                        {
                            output.Write(", ");
                        }
                        else
                        {
                            first = false;
                        }

                        if (hasItemUri)
                        {
                            output.Write("[NotNull] ItemUri itemUri");
                            replaced = true;
                        }
                        else
                        {
                            output.Write("[NotNull] DatabaseUri databaseUri");
                            replaced = true;
                        }
                    }
                }

                output.WriteLine(", [NotNull] ExecuteCompleted completed)");
                output.WriteLine("      {");

                output.Write("        ");

                if (replacing)
                {
                    if (hasItemUri)
                    {
                        output.Write("itemUri.Site");
                    }
                    else
                    {
                        output.Write("databaseUri.Site");
                    }
                }
                else
                {
                    output.Write("site");
                }

                output.Write(".DataService.ExecuteAsync(");
                output.Write("\"{0}\"", name);
                output.Write(", completed");

                foreach (var parameter in request.Parameters)
                {
                    if ((parameter != databaseNameParameter && parameter != itemIdParameter) || !replacing)
                    {
                        output.Write(", {0}", parameter);
                        continue;
                    }

                    if (parameter == itemIdParameter)
                    {
                        output.Write(", itemUri.ItemId.ToString()");
                        continue;
                    }

                    if (parameter == databaseNameParameter)
                    {
                        if (hasItemUri)
                        {
                            output.Write(", itemUri.DatabaseUri.DatabaseName.ToString()");
                        }
                        else
                        {
                            output.Write(", databaseUri.DatabaseName.ToString()");
                        }
                    }
                }

                output.WriteLine(");");

                output.WriteLine("      }");
                output.WriteLine();
            }