Beispiel #1
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;
        }
Beispiel #2
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));
        }
        /// <summary>
        /// This will check all tupe value. If it contains only one value it will be converted to a ValueDefinition. If it contains a SelectDefinition it will be executed and the result added to the tuple.
        /// </summary>
        private AOperationDefinition AssignCorrectTuple(GQLPluginManager myPluginManager,
                                                        TupleDefinition myTupleDefinition,
                                                        BinaryOperator myOperator,
                                                        IGraphDB myGraphDB,
                                                        SecurityToken mySecurityToken,
                                                        Int64 myTransactionToken)
        {
            var retVal     = new TupleDefinition(myTupleDefinition.KindOfTuple);
            var validTuple = ABinaryOperator.GetValidTupleReloaded(myTupleDefinition, myGraphDB, mySecurityToken, myTransactionToken);

            if (validTuple is TupleDefinition)
            {
                foreach (var tupleVal in (validTuple as TupleDefinition))
                {
                    if (tupleVal.Value is ValueDefinition)
                    {
                        retVal.AddElement(tupleVal);
                    }
                    else if (tupleVal.Value is SelectDefinition)
                    {
                        #region partial select

                        var selectManager = new SelectManager(myGraphDB, myPluginManager);
                        var qresult       = selectManager.ExecuteSelect(mySecurityToken, myTransactionToken, (tupleVal.Value as SelectDefinition), String.Empty);
                        if (qresult.Error != null)
                        {
                            throw qresult.Error;
                        }

                        IAttributeDefinition curAttr = ((tupleVal.Value 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));
                                retVal.AddElement(new TupleElement(val));
                            }
                            else
                            {
                                throw new NotImplementedQLException("");
                            }
                        }


                        #endregion
                    }
                    else
                    {
                        throw new NotImplementedQLException("");
                    }
                }
            }
            else
            {
                return(validTuple);
            }

            return(retVal);
        }
        /// <summary>
        /// This will check all tupe value. If it contains only one value it will be converted to a ValueDefinition. If it contains a SelectDefinition it will be executed and the result added to the tuple.
        /// </summary>
        private AOperationDefinition AssignCorrectTuple(GQLPluginManager myPluginManager, 
                                                        TupleDefinition myTupleDefinition, 
                                                        BinaryOperator myOperator, 
                                                        IGraphDB myGraphDB, 
                                                        SecurityToken mySecurityToken, 
                                                        Int64 myTransactionToken)
        {
            var retVal = new TupleDefinition(myTupleDefinition.KindOfTuple);
            var validTuple = ABinaryOperator.GetValidTupleReloaded(myTupleDefinition, myGraphDB, mySecurityToken, myTransactionToken);

            if (validTuple is TupleDefinition)
            {
                foreach (var tupleVal in (validTuple as TupleDefinition))
                {
                    if (tupleVal.Value is ValueDefinition)
                    {
                        retVal.AddElement(tupleVal);
                    }
                    else if (tupleVal.Value is SelectDefinition)
                    {

                        #region partial select

                        var selectManager = new SelectManager(myGraphDB, myPluginManager);
                        var qresult = selectManager.ExecuteSelect(mySecurityToken, myTransactionToken, (tupleVal.Value as SelectDefinition), String.Empty);
                        if (qresult.Error !=  null)
                        {
                            throw qresult.Error;
                        }

                        IAttributeDefinition curAttr = ((tupleVal.Value 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));
                                retVal.AddElement(new TupleElement(val));
                            }
                            else
                            {
                                throw new NotImplementedQLException("");
                            }
                        }


                        #endregion
                    }
                    else
                    {
                        throw new NotImplementedQLException("");
                    }
                }
            }
            else
            {
                return validTuple;
            }

            return retVal;
        }
Beispiel #5
0
        public override QueryResult 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);
        }
        /// <summary>
        /// This will check all tupe value. If it contains only one value it will be converted to a ValueDefinition. If it contains a SelectDefinition it will be executed and the result added to the tuple.
        /// </summary>
        /// <param name="myTupleDefinition"></param>
        /// <param name="myOperator"></param>
        /// <param name="myDBContext"></param>
        /// <returns></returns>
        private Exceptional<AOperationDefinition> AssignCorrectTuple(TupleDefinition myTupleDefinition, ABinaryOperator myOperator, DBContext myDBContext)
        {
            var retVal = new TupleDefinition(myTupleDefinition.KindOfTuple);
            var validTuple = myOperator.GetValidTupleReloaded(myTupleDefinition, myDBContext);

            if (validTuple is TupleDefinition)
            {
                foreach (var tupleVal in (validTuple as TupleDefinition))
                {
                    if (tupleVal.Value is ValueDefinition)
                    {
                        retVal.AddElement(tupleVal);
                    }
                    else if (tupleVal.Value is SelectDefinition)
                    {

                        #region partial select

                        var selectManager = new SelectManager();
                        var qresult = selectManager.ExecuteSelect(myDBContext, (tupleVal.Value as SelectDefinition));
                        if (qresult.Failed)
                        {
                            return new Exceptional<AOperationDefinition>(qresult.Errors);
                        }

                        TypeAttribute curAttr = ((tupleVal.Value as SelectDefinition).SelectedElements.First().Item1 as IDChainDefinition).LastAttribute;

                        var dbTypeOfAttribute = curAttr.GetDBType(myDBContext.DBTypeManager);

                        var aTypeOfOperatorResult = GraphDBTypeMapper.ConvertGraph2CSharp(dbTypeOfAttribute.Name);

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

                            if (curAttr != null)
                            {
                                var val = new ValueDefinition(aTypeOfOperatorResult, _Vertex.ObsoleteAttributes[curAttr.Name]);
                                retVal.AddElement(new TupleElement(aTypeOfOperatorResult, val));
                            }
                            else
                            {
                                return new Exceptional<AOperationDefinition>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));
                            }
                        }

                        #endregion
                    }
                    else
                    {
                        return new Exceptional<AOperationDefinition>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));
                    }
                }
            }
            else
            {
                return new Exceptional<AOperationDefinition>(validTuple);
            }

            return new Exceptional<AOperationDefinition>(retVal);
        }