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; }
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; }
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); }