Пример #1
0
        public static IEnumerable <T> Post <T>(ConnectionElement connection, GremlinScript script) where T : IGraphObject
        {
            var typeParameterType = typeof(T);

            string response;
            var    status = Rest.HttpRest.Post(connection.GremlinUrl, script.GetScript(), out response);

            if (typeParameterType == typeof(Node))
            {
                return((IEnumerable <T>)RestNodeStore.ParseNodeJson(response));
            }

            if (typeParameterType == typeof(Relationship))
            {
                return((IEnumerable <T>)RestRelationshipStore.ParseRelationshipJson(response));
            }

            if (typeParameterType == typeof(Path))
            {
                return((IEnumerable <T>)Path.ParseJson(response));
            }

            throw new Exception("Return type " + typeParameterType + " not implemented");
        }
Пример #2
0
        public static DataTable GetTable(ConnectionElement connection, GremlinScript script)
        {
            string response;
            var    status = Rest.HttpRest.Post(connection.GremlinUrl, script.GetScript(), out response);

            var joResponse = JObject.Parse(response);
            var jaColumns  = (JArray)joResponse["columns"];
            var jaData     = (JArray)joResponse["data"];

            var dt = new DataTable();

            var initColumns = true;
            var colIndex    = 0;

            foreach (JArray jRow in jaData)
            {
                var row = new List <object>();
                foreach (var jCol in jRow)
                {
                    switch (jCol.Type)
                    {
                    case JTokenType.String:
                        row.Add(jCol.ToString());
                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(string));
                            colIndex++;
                        }
                        break;

                    case JTokenType.Object:
                        if (jCol["self"] == null)
                        {
                            row.Add(jCol.ToString());

                            if (initColumns)
                            {
                                dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(string));
                                colIndex++;
                            }
                        }
                        else
                        {
                            string   self      = jCol["self"].ToString();
                            string[] selfArray = self.Split('/');
                            if (selfArray.Length > 2 && selfArray[selfArray.Length - 2] == "node")
                            {
                                row.Add(RestNodeStore.CreateNodeFromJson((JObject)jCol));

                                if (initColumns)
                                {
                                    dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(Node));
                                    colIndex++;
                                }
                            }
                            else if (selfArray.Length > 2 && selfArray[selfArray.Length - 2] == "relationship")
                            {
                                row.Add(RestRelationshipStore.CreateRelationshipFromJson((JObject)jCol));

                                if (initColumns)
                                {
                                    dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(Relationship));
                                    colIndex++;
                                }
                            }
                            else
                            {
                                // Not a Node or Relationship - return as string
                                row.Add(jCol.ToString());

                                if (initColumns)
                                {
                                    dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(string));
                                    colIndex++;
                                }
                            }
                        }
                        break;

                    case JTokenType.Integer:
                        row.Add(jCol.ToString());
                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(int));
                            colIndex++;
                        }
                        break;

                    case JTokenType.Float:
                        row.Add(jCol.ToString());
                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(float));
                            colIndex++;
                        }
                        break;

                    case JTokenType.Date:
                        row.Add(jCol.ToString());
                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(DateTime));
                            colIndex++;
                        }
                        break;

                    case JTokenType.Boolean:
                        row.Add(jCol.ToString());
                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(bool));
                            colIndex++;
                        }
                        break;

                    default:
                        row.Add(jCol.ToString());

                        if (initColumns)
                        {
                            dt.Columns.Add(jaColumns[colIndex].ToString(), typeof(string));
                            colIndex++;
                        }
                        break;
                    }
                }

                initColumns = false;
                var dtRow = dt.NewRow();
                dtRow.ItemArray = row.ToArray();
                dt.Rows.Add(dtRow);
            }

            return(dt);
        }
Пример #3
0
        public static HttpStatusCode Post(GremlinScript script)
        {
            string response;
            var    status = Rest.HttpRest.Post(ConnectionManager.Connection().GremlinUrl, script.GetScript(), out response);

            return(status);
        }