Example #1
0
        /// <summary>
        /// Creates a new sones GQL instance
        /// </summary>
        /// <param name="myIGraphDBInstace">The graph database instance on which the gql statements are executed</param>
        public SonesQueryLanguage(IGraphDB myIGraphDBInstace)
        {
            _IGraphDBInstance = myIGraphDBInstace;
            _settings         = new GraphApplicationSettings(SonesGQLConstants.ApplicationSettingsLocation);

            #region plugin manager

            _GQLPluginManager = new GQLPluginManager();

            #endregion

            #region create gql grammar and set extendable members

            _GQLGrammar = new SonesGQLGrammar(myIGraphDBInstace);

            SetExtendableMember(_GQLGrammar);

            #endregion

            //build parser
            _parser = new Parser(_GQLGrammar);

            //check language
            if (_parser.Language.ErrorLevel != GrammarErrorLevel.Warning && _parser.Language.ErrorLevel != GrammarErrorLevel.NoError)
            {
                throw new IronyInitializeGrammarException(_parser.Language.Errors, "");
            }
        }
        /// <summary>
        /// The returned IQueryResult contains vertices which are null if no Int64 is created,
        /// otherwise they contain a vertexview with a property dictionary, where in first position is the created Int64
        /// </summary>
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            var sw = Stopwatch.StartNew();

            var myToken = myGraphDB.BeginTransaction(mySecurityToken, IsLongRunning, Isolation);

            VertexView view = null;

            var readoutVals = new Dictionary <String, Object>();

            readoutVals.Add("TransactionID", myToken);
            readoutVals.Add("Created", TimeStamp);
            readoutVals.Add("Distributed", IsDistributed);
            readoutVals.Add("IsolationLevel", Isolation);
            readoutVals.Add("LongRunning", IsLongRunning);
            readoutVals.Add("Name", Name);

            view = new VertexView(readoutVals, null);

            sw.Stop();

            return(QueryResult.Success(myQuery, SonesGQLConstants.GQL, new List <IVertexView> {
                view
            }, Convert.ToUInt64(sw.ElapsedMilliseconds)));
        }
Example #3
0
        /// <summary>
        /// Creates the request for the graphdb
        /// </summary>
        /// <returns>The created vertex</returns>
        private RequestInsertVertex CreateRequest(GQLPluginManager myPluginManager,
                                                  IGraphDB myGraphDB,
                                                  SecurityToken mySecurityToken,
                                                  Int64 myTransactionToken)
        {
            #region data

            var result = new RequestInsertVertex(_TypeName);

            var vertexType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_TypeName),
                (stats, vtype) => vtype);

            #endregion

            if (_AttributeAssignList != null)
            {
                foreach (var aAttributeDefinition in _AttributeAssignList)
                {
                    ProcessAAttributeDefinition(myPluginManager,
                                                myGraphDB,
                                                mySecurityToken,
                                                myTransactionToken,
                                                vertexType,
                                                aAttributeDefinition,
                                                ref result);
                }
            }

            return(result);
        }
Example #4
0
        private IQueryResult ProcessInsert(IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            InsertNode insert = new InsertNode();

            insert.Init(_TypeName, _AttributeAssignList);
            return(insert.Execute(myGraphDB, null, myPluginManager, _query, mySecurityToken, myTransactionToken));
        }
Example #5
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            var sw = Stopwatch.StartNew();

            _query = myQuery;

            //prepare
            var vertexType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_SourceType),
                (stats, vtype) => vtype);

            //validate
            _Condition.Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, vertexType);

            //calculate
            var expressionGraph = _Condition.Calculon(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, new CommonUsageGraph(myGraphDB, mySecurityToken, myTransactionToken), false);

            //extract

            var myToBeUpdatedVertices = expressionGraph.Select(new LevelKey(vertexType.ID, myGraphDB, mySecurityToken, myTransactionToken), null, true).ToList();

            if (myToBeUpdatedVertices.Count > 0)
            {
                //update
                ProcessUpdate(myToBeUpdatedVertices, myGraphDB, myPluginManager, mySecurityToken, myTransactionToken);
            }

            sw.Stop();

            return(GenerateResult(sw.Elapsed.TotalMilliseconds));
        }
Example #6
0
 private static void ProcessAAttributeDefinition(GQLPluginManager myPluginManager,
                                                 IGraphDB myGraphDB,
                                                 SecurityToken mySecurityToken,
                                                 Int64 myTransactionToken,
                                                 IVertexType vertexType,
                                                 AAttributeAssignOrUpdate aAttributeDefinition,
                                                 ref RequestInsertVertex result)
 {
     if (vertexType.HasAttribute(aAttributeDefinition.AttributeIDChain.ContentString))
     {
         ProcessStructuredProperty(myPluginManager,
                                   myGraphDB,
                                   mySecurityToken,
                                   myTransactionToken,
                                   vertexType,
                                   aAttributeDefinition,
                                   ref result);
     }
     else
     {
         ProcessUnstructuredAttribute(vertexType,
                                      aAttributeDefinition,
                                      ref result);
     }
 }
Example #7
0
        public override IQueryResult Execute(IGraphDB myGraphDB,
                                             IGraphQL myGraphQL,
                                             GQLPluginManager myPluginManager,
                                             String myQuery,
                                             SecurityToken mySecurityToken,
                                             Int64 myTransactionToken)
        {
            Query = myQuery;

            var indexDef = new IndexPredefinition(_IndexName, _DBType)
                           .SetIndexType(_IndexType)
                           .SetEdition(_IndexEdition);

            //to be indices attributes
            foreach (var aIndexedProperty in _AttributeList)
            {
                indexDef.AddProperty(aIndexedProperty.IndexAttribute.ContentString);
            }

            //options for the index
            if (_options != null)
            {
                foreach (var aKV in _options)
                {
                    indexDef.AddOption(aKV.Key, aKV.Value);
                }
            }

            return(myGraphDB.CreateIndex <IQueryResult>(mySecurityToken, myTransactionToken, new RequestCreateIndex(indexDef), GenerateResult));
        }
Example #8
0
        /// <summary>
        /// Validates the id chain if it is not already validated and returns all errors and warnings.
        /// </summary>
        public void Validate(GQLPluginManager myPluginManager, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, Boolean allowUndefinedAttributes, params IVertexType[] validationTypes)
        {
            if (IsValidated)
            {
                return;
            }

            var listOfRefs = new Dictionary <String, IVertexType>();

            if (validationTypes == null || validationTypes.Count() == 0)
            {
                foreach (var type in _References)
                {
                    var vertexType = myGraphDB.GetVertexType <IVertexType>(
                        mySecurityToken,
                        myTransactionToken,
                        new GraphDB.Request.RequestGetVertexType(type.TypeName),
                        (stats, theVertexType) => theVertexType);

                    listOfRefs.Add(type.Reference, vertexType);
                }
            }
            else
            {
                foreach (var type in validationTypes)
                {
                    listOfRefs.Add(type.Name, type);
                }
            }

            Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, listOfRefs, allowUndefinedAttributes);
        }
Example #9
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            _query = myQuery;

            var vertexType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_typeName),
                (stats, vType) => vType);

            _WhereExpression.Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, vertexType);

            var expressionGraph = _WhereExpression.Calculon(myPluginManager, myGraphDB, mySecurityToken,
                                                            myTransactionToken,
                                                            new CommonUsageGraph(myGraphDB, mySecurityToken,
                                                                                 myTransactionToken));

            var toBeDeletedVertices =
                expressionGraph.Select(
                    new LevelKey(vertexType.ID, myGraphDB, mySecurityToken, myTransactionToken),
                    null, true);

            //TODO: do sth that is better than that: ew RequestDelete(new RequestGetVertices(_typeName, toBeDeletedVertices.Select(_ => _.VertexID))).
            return(myGraphDB.Delete <IQueryResult>(
                       mySecurityToken,
                       myTransactionToken,
                       new RequestDelete(new RequestGetVertices(_typeName, toBeDeletedVertices.Select(_ => _.VertexID))).AddAttributes(_toBeDeletedAttributes),
                       CreateQueryResult));
        }
Example #10
0
        public virtual void Validate(GQLPluginManager myPluginManager, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            if (myPluginManager.HasPlugin <IGQLFunction>(FuncName))
            {
                Function = myPluginManager.GetAndInitializePlugin <IGQLFunction>(FuncName);
            }
            else
            {
                throw new AggregateOrFunctionDoesNotExistException(FuncName);
            }

            #region parameter exceptions

            #region check number of parameters

            Boolean containsVariableNumOfParams = this.Function.GetParameters().Exists(p => p.VariableNumOfParams);

            if (this.Function.GetParameters().Count != Parameters.Count && (!containsVariableNumOfParams))
            {
                throw new FunctionParameterCountMismatchException(this.Function.PluginShortName, this.Function.GetParameters().Count, Parameters.Count);
            }
            else if (containsVariableNumOfParams && Parameters.Count == 0)
            {
                throw new FunctionParameterCountMismatchException(this.Function.PluginShortName, 1, Parameters.Count);
            }

            #endregion

            #endregion
        }
Example #11
0
        private static IEnumerable <IVertex> ProcessBinaryExpression(
            BinaryExpressionDefinition binExpression,
            GQLPluginManager myPluginManager,
            IGraphDB myGraphDB,
            SecurityToken mySecurityToken,
            Int64 myTransactionToken,
            IVertexType vertexType)
        {
            //validate
            binExpression.Validate(myPluginManager,
                                   myGraphDB,
                                   mySecurityToken,
                                   myTransactionToken,
                                   vertexType);

            //calculate
            var expressionGraph =
                binExpression.Calculon(myPluginManager,
                                       myGraphDB,
                                       mySecurityToken,
                                       myTransactionToken,
                                       new CommonUsageGraph(myGraphDB,
                                                            mySecurityToken,
                                                            myTransactionToken),
                                       false);

            //extract
            return
                (expressionGraph.Select(
                     new LevelKey(vertexType.ID,
                                  myGraphDB,
                                  mySecurityToken,
                                  myTransactionToken),
                     null, true));
        }
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            var sw = Stopwatch.StartNew();

            var _ReturnValues = new Dictionary <String, Object>();

            if (Command_Type == CommandType.Commit)
            {
                myGraphDB.CommitTransaction(mySecurityToken, myTransactionToken);
            }

            else
            {
                myGraphDB.RollbackTransaction(mySecurityToken, myTransactionToken);
            }

            _ReturnValues.Add("TransactionID", myTransactionToken);
            _ReturnValues.Add("ExecutedCommand", Command_Type);
            _ReturnValues.Add("Name", Name == null ? "" : Name);
            _ReturnValues.Add("ASync", ASync);

            return(QueryResult.Success(myQuery, SonesGQLConstants.GQL, new List <IVertexView> {
                new VertexView(_ReturnValues, null)
            }, Convert.ToUInt64(sw.ElapsedMilliseconds)));
        }
Example #13
0
        public override IQueryResult Execute(IGraphDB myGraphDB,
                                             IGraphQL myGraphQL,
                                             GQLPluginManager myPluginManager,
                                             String myQuery,
                                             SecurityToken mySecurityToken,
                                             Int64 myTransactionToken)
        {
            _queryString = myQuery;

            IQueryResult result;

            try
            {
                result = myGraphDB.Insert <IQueryResult>(
                    mySecurityToken,
                    myTransactionToken,
                    CreateRequest(myPluginManager,
                                  myGraphDB,
                                  mySecurityToken,
                                  myTransactionToken),
                    CreateQueryResult);
            }
            catch (ASonesException e)
            {
                result = new QueryResult(_queryString,
                                         SonesGQLConstants.GQL,
                                         0,
                                         ResultType.Failed,
                                         null,
                                         e);
            }

            return(result);
        }
        private AExpressionDefinition TryGetBinexpression(AExpressionDefinition expression,
                                                          GQLPluginManager myPluginManager,
                                                          IGraphDB myGraphDB,
                                                          SecurityToken mySecurityToken,
                                                          Int64 myTransactionToken,
                                                          params IVertexType[] types)
        {
            if (expression is BinaryExpressionDefinition)
            {
                (expression as BinaryExpressionDefinition).Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, types);
                return(expression as BinaryExpressionDefinition);
            }
            else
            {
                //for negative values like -U.Age
                if (expression is UnaryExpressionDefinition)
                {
                    var binExpr = (expression as UnaryExpressionDefinition).GetBinaryExpression(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken);
                    return(binExpr);
                }
                else
                {
                    if (expression is TupleDefinition)
                    {
                        return(TryGetBinexpression(((TupleDefinition)expression).First().Value, myPluginManager, myGraphDB, mySecurityToken, myTransactionToken));
                    }
                }
            }

            throw new NotImplementedQLException("");
        }
Example #15
0
 private void ProcessDelete(IVertex toBeDeletedVertexID, IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, Int64 myTransactionToken)
 {
     myGraphDB.Delete <bool>(
         mySecurityToken,
         myTransactionToken,
         new RequestDelete(new RequestGetVertices(toBeDeletedVertexID.VertexTypeID, new List <long> {
         toBeDeletedVertexID.VertexID
     })),
         (stats, attributes, vertices) => true);
 }
Example #16
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            _query = myQuery;

            return(myGraphDB.AlterVertexType <IQueryResult>(
                       mySecurityToken,
                       myTransactionToken,
                       CreateNewRequest(myGraphDB, myPluginManager, mySecurityToken, myTransactionToken),
                       CreateOutput));
        }
Example #17
0
 private void ProcessDelete(IVertex toBeDeletedVertexID, IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, Int64 myTransactionToken)
 {
     //TODO: new RequestDelete(new RequestGetVertices( --> change to sth that uses the IVertex directly
     var stat = myGraphDB.Delete(mySecurityToken,
                                 myTransactionToken,
                                 new RequestDelete(new RequestGetVertices(toBeDeletedVertexID.VertexTypeID, new List <long> {
         toBeDeletedVertexID.VertexID
     })),
                                 (stats, attributes, vertices) => stats);
 }
Example #18
0
        internal void ConvertToAttributeType(GQLPluginManager myPluginManager, IAttributeDefinition typeAttribute, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            var newTuple = new List <TupleElement>();

            for (int i = 0; i < TupleElements.Count; i++)
            {
                var tupleElement = TupleElements[i].Value;

                if (tupleElement is SelectDefinition)
                {
                    #region partial select

                    var selectManager = new SelectManager(myGraphDB, myPluginManager);

                    var          selectDefinition = (tupleElement as SelectDefinition);
                    IQueryResult qresult          = selectManager.ExecuteSelect(mySecurityToken, myTransactionToken, selectDefinition, String.Empty);
                    if (qresult.Error != null)
                    {
                        throw qresult.Error;
                    }

                    IAttributeDefinition curAttr = ((tupleElement as SelectDefinition).SelectedElements.First().Item1 as IDChainDefinition).LastAttribute;

                    foreach (var _Vertex in qresult.Vertices)
                    {
                        if (!(_Vertex.HasProperty(curAttr.Name)))
                        {
                            continue;
                        }

                        if (curAttr != null)
                        {
                            var val = new ValueDefinition(_Vertex.GetProperty <Object>(curAttr.Name));
                            newTuple.Add(new TupleElement(val));
                        }
                        else
                        {
                            throw new NotImplementedQLException("");
                        }
                    }

                    #endregion
                }
                else if (TupleElements[i].Value is ValueDefinition)
                {
                    newTuple.Add(new TupleElement(new ValueDefinition((TupleElements[i].Value as ValueDefinition).Value)));
                }
                else
                {
                    throw new InvalidTupleException(TupleElements[i].Value.GetType().Name);
                }
            }

            TupleElements = newTuple;
        }
Example #19
0
        private RequestAlterVertexType CreateNewRequest(IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            RequestAlterVertexType result = new RequestAlterVertexType(_TypeName);

            foreach (var aAlterCommand in _AlterTypeCommand)
            {
                ProcessAlterCommand(aAlterCommand, ref result);
            }

            return(result);
        }
Example #20
0
 private void ProcessUpdate(IVertexType vertexType,
                            GQLPluginManager myPluginManager,
                            IGraphDB myGraphDB,
                            SecurityToken mySecurityToken,
                            Int64 myTransactionToken,
                            AAttributeAssignOrUpdateOrRemove aUpdate,
                            ref RequestUpdate result)
 {
     if (aUpdate is AttributeAssignOrUpdateValue)
     {
         ProcessAttributeAssignOrUpdateValue((AttributeAssignOrUpdateValue)aUpdate, ref result);
     }
     else if (aUpdate is AttributeAssignOrUpdateList)
     {
         ProcessAttributeAssignOrUpdateList(vertexType,
                                            myPluginManager,
                                            myGraphDB,
                                            mySecurityToken,
                                            myTransactionToken,
                                            (AttributeAssignOrUpdateList)aUpdate,
                                            ref result);
     }
     else if (aUpdate is AttributeAssignOrUpdateSetRef)
     {
         ProcessAttributeAssignOrUpdateSetRef(vertexType,
                                              myPluginManager,
                                              myGraphDB,
                                              mySecurityToken,
                                              myTransactionToken,
                                              (AttributeAssignOrUpdateSetRef)aUpdate,
                                              ref result);
     }
     else if (aUpdate is AttributeRemove)
     {
         foreach (var aToBeRemovedAttribute in ((AttributeRemove)aUpdate).ToBeRemovedAttributes)
         {
             result.RemoveAttribute(aToBeRemovedAttribute);
         }
     }
     else if (aUpdate is AttributeRemoveList)
     {
         ProcessAttributeRemoveList(vertexType,
                                    myPluginManager,
                                    myGraphDB,
                                    mySecurityToken,
                                    myTransactionToken,
                                    (AttributeRemoveList)aUpdate,
                                    ref result);
     }
     else
     {
         throw new NotImplementedQLException("");
     }
 }
Example #21
0
        public override IEnumerable <IVertexView> GetResult(
            GQLPluginManager myPluginManager,
            IGraphDB myGraphDB,
            SecurityToken mySecurityToken,
            Int64 myTransactionToken)
        {
            var resultingVertices = new List <IVertexView>();

            if (!String.IsNullOrEmpty(_EdgeName))
            {
                #region Specific edge

                var request = new RequestGetEdgeType(_EdgeName);
                var edge    = myGraphDB.GetEdgeType <IEdgeType>(mySecurityToken,
                                                                myTransactionToken,
                                                                request,
                                                                (stats, edgeType) => edgeType);

                if (edge != null)
                {
                    resultingVertices = new List <IVertexView>()
                    {
                        GenerateOutput(edge, _EdgeName)
                    };
                }
                else
                {
                    throw new EdgeTypeDoesNotExistException(_EdgeName);
                }

                #endregion
            }
            else
            {
                #region All edges

                var resultingReadouts = new List <IVertexView>();

                var request = new RequestGetAllEdgeTypes();

                foreach (var edge in myGraphDB.GetAllEdgeTypes <IEnumerable <IEdgeType> >(mySecurityToken,
                                                                                          myTransactionToken,
                                                                                          request,
                                                                                          (stats, edgeTypes) => edgeTypes))
                {
                    resultingReadouts.Add(GenerateOutput(edge, edge.Name));
                }


                #endregion
            }

            return(resultingVertices);
        }
Example #22
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            try
            {
                var stat = myGraphDB.DropIndex(mySecurityToken, myTransactionToken, new RequestDropIndex(_TypeName, _IndexName, _IndexEdition), (stats) => stats);

                return(QueryResult.Success(myQuery, SonesGQLConstants.GQL, null, Convert.ToUInt64(stat.ExecutionTime.Milliseconds)));
            }
            catch (ASonesException ex)
            {
                return(QueryResult.Failure(myQuery, SonesGQLConstants.GQL, ex));
            }
        }
Example #23
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            try
            {
                var request = new RequestRebuildIndices(_Types);

                return(myGraphDB.RebuildIndices <IQueryResult>(mySecurityToken, myTransactionToken, request, _ => GenerateOutput(myQuery, _)));
            }
            catch (ASonesException ex)
            {
                return(QueryResult.Failure(myQuery, SonesGQLConstants.GQL, ex));
            }
        }
Example #24
0
        public override IQueryResult Execute(IGraphDB myGraphDB, IGraphQL myGraphQL, GQLPluginManager myPluginManager, String myQuery, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            var sw = Stopwatch.StartNew();

            IQueryResult result = null;

            _query = myQuery;
            String myAction = "";
            IEnumerable <IVertex> myToBeUpdatedVertices = null;

            //prepare
            var vertexType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_Type),
                (stats, vtype) => vtype);

            if (_WhereExpression != null)
            {
                //validate
                _WhereExpression.Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, vertexType);

                //calculate
                var expressionGraph = _WhereExpression.Calculon(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, new CommonUsageGraph(myGraphDB, mySecurityToken, myTransactionToken), false);

                //extract
                myToBeUpdatedVertices = expressionGraph.Select(new LevelKey(vertexType.ID, myGraphDB, mySecurityToken, myTransactionToken), null, true).ToList();
            }

            if (myToBeUpdatedVertices != null && myToBeUpdatedVertices.Count() > 0)
            {
                //update
                result   = ProcessUpdate(myToBeUpdatedVertices, myGraphDB, myPluginManager, mySecurityToken, myTransactionToken);
                myAction = "Updated";
            }
            else
            {
                //insert
                result   = ProcessInsert(myGraphDB, myPluginManager, mySecurityToken, myTransactionToken);
                myAction = "Inserted";
            }

            if (result.Error != null)
            {
                throw result.Error;
            }

            sw.Stop();

            return(GenerateResult(sw.Elapsed.TotalMilliseconds, result, myAction));
        }
Example #25
0
        public override IQueryResult Execute(IGraphDB myGraphDB,
                                             IGraphQL myGraphQL,
                                             GQLPluginManager myPluginManager,
                                             String myQuery,
                                             SecurityToken mySecurityToken,
                                             Int64 myTransactionToken)
        {
            var selectManager = new SelectManager(myGraphDB, myPluginManager);

            return(selectManager.ExecuteSelect(mySecurityToken, myTransactionToken,
                                               new SelectDefinition(TypeList, SelectedElements,
                                                                    WhereExpressionDefinition, GroupByIDs, Having, Limit,
                                                                    Offset, OrderByDefinition, ResolutionDepth), myQuery));
        }
Example #26
0
        public override IQueryResult Execute(IGraphDB myGraphDB,
                                             IGraphQL myGraphQL,
                                             GQLPluginManager myPluginManager,
                                             String myQuery,
                                             SecurityToken mySecurityToken,
                                             Int64 myTransactionToken)
        {
            _query = myQuery;

            return(myGraphDB.DropEdgeType(mySecurityToken,
                                          myTransactionToken,
                                          new RequestDropEdgeType(_TypeName),
                                          GenerateOutput));
        }
Example #27
0
        /// <summary>
        /// Executes the statement and returns a IQueryResult.
        /// </summary>
        public override IQueryResult Execute(IGraphDB myGraphDB,
                                             IGraphQL myGraphQL,
                                             GQLPluginManager myPluginManager,
                                             String myQuery,
                                             SecurityToken mySecurityToken,
                                             Int64 myTransactionToken)
        {
            Query = myQuery;

            return(myGraphDB.Update(mySecurityToken,
                                    myTransactionToken,
                                    GenerateUpdateRequest(myGraphDB,
                                                          myPluginManager,
                                                          mySecurityToken,
                                                          myTransactionToken),
                                    GenerateOutput));
        }
        /// <summary>
        /// <seealso cref=" ADescribeDefinition"/>
        /// </summary>
        public override IEnumerable <IVertexView> GetResult(GQLPluginManager myPluginManager,
                                                            IGraphDB myGraphDB,
                                                            SecurityToken mySecurityToken,
                                                            Int64 myTransactionToken)
        {
            var resultingVertices = new List <IVertexView>();

            if (!String.IsNullOrEmpty(_TypeName))
            {
                #region Specific type

                var request = new RequestGetVertexType(_TypeName);
                var type    = myGraphDB.GetVertexType <IVertexType>(mySecurityToken, myTransactionToken, request, (stats, vertexType) => vertexType);

                if (type != null)
                {
                    resultingVertices = new List <IVertexView>()
                    {
                        (GenerateOutput(type, 1))
                    };
                }
                else
                {
                    throw new VertexTypeDoesNotExistException(_TypeName, "");
                }

                #endregion
            }
            else
            {
                #region All types

                foreach (var type in myGraphDB.GetAllVertexTypes <IEnumerable <IVertexType> >(mySecurityToken,
                                                                                              myTransactionToken,
                                                                                              new RequestGetAllVertexTypes(),
                                                                                              (stats, vertexTypes) => vertexTypes))
                {
                    resultingVertices.Add(GenerateOutput(type));
                }

                #endregion
            }

            return(resultingVertices);
        }
Example #29
0
 private void ProcessListOfUpdates(IVertexType vertexType,
                                   GQLPluginManager myPluginManager,
                                   IGraphDB myGraphDB,
                                   SecurityToken mySecurityToken,
                                   Int64 myTransactionToken,
                                   ref RequestUpdate result)
 {
     foreach (var aUpdate in _listOfUpdates)
     {
         ProcessUpdate(vertexType,
                       myPluginManager,
                       myGraphDB,
                       mySecurityToken,
                       myTransactionToken,
                       aUpdate,
                       ref result);
     }
 }
Example #30
0
        public BinaryExpressionDefinition GetBinaryExpression(GQLPluginManager myPluginManager, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            AExpressionDefinition right;
            var op = GetOperatorBySymbol(_OperatorSymbol);

            if (op == null)
            {
                throw new OperatorDoesNotExistException(_OperatorSymbol);
            }

            right = new ValueDefinition(1);

            var binExpr = new BinaryExpressionDefinition("*", _Expression, right);

            binExpr.Validate(myPluginManager, myGraphDB, mySecurityToken, myTransactionToken);

            return(binExpr);
        }