コード例 #1
0
ファイル: GraphDSServer.cs プロジェクト: alrehamy/sones
 public TResult GetVertices <TResult>(sones.Library.Commons.Security.SecurityToken mySecurityToken, Int64 myTransactionToken, RequestGetVertices myRequestGetVertices, Converter.GetVerticesResultConverter <TResult> myOutputconverter)
 {
     return(_iGraphDB.GetVertices <TResult>(mySecurityToken,
                                            myTransactionToken,
                                            myRequestGetVertices,
                                            myOutputconverter));
 }
コード例 #2
0
        private static void MatchData(DataContainer data,
                                      IExpressionGraph resultGraph,
                                      IGraphDB myGraphDB,
                                      SecurityToken mySecurityToken,
                                      Int64 myTransactionToken,
                                      TypesOfOperators myTypeOfOperator,
                                      BinaryOperator myOperator,
                                      String myExpressionIndex)
        {
            #region data

            LevelKey myLevelKey = CreateLevelKey(data.IDChainDefinitions.Item1, myGraphDB, mySecurityToken, myTransactionToken);

            #endregion

            var vertices = myGraphDB.GetVertices <List <IVertex> >(
                mySecurityToken,
                myTransactionToken,
                new GraphDB.Request.RequestGetVertices(
                    new BinaryExpression(
                        new PropertyExpression(data.IDChainDefinitions.Item1.LastType.Name, data.IDChainDefinitions.Item1.LastAttribute.Name),
                        myOperator,
                        GenerateLiteral(data.Operands.Item1, ((IPropertyDefinition)data.IDChainDefinitions.Item1.LastAttribute).BaseType),
                        myExpressionIndex)),
                (stats, vertexEnumerable) => vertexEnumerable.ToList());

            foreach (var aVertex in vertices)
            {
                IntegrateInGraph(aVertex, resultGraph, myLevelKey, myTypeOfOperator);
            }

            if (resultGraph.ContainsLevelKey(myLevelKey))
            {
                #region clean lower levels

                if (myTypeOfOperator == TypesOfOperators.AffectsLowerLevels)
                {
                    CleanLowerLevel(myLevelKey, resultGraph, myGraphDB, mySecurityToken, myTransactionToken);
                }

                #endregion
            }
            else
            {
                resultGraph.AddEmptyLevel(myLevelKey);
            }
        }
コード例 #3
0
ファイル: UpdateNode.cs プロジェクト: loubo/sones
        private RequestUpdate GenerateUpdateRequest(IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, TransactionToken myTransactionToken)
        {
            IEnumerable<IVertex> toBeupdatedVertices = null;
            //prepare
            var vertexType = myGraphDB.GetVertexType<IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_TypeName),
                (stats, vtype) => vtype);

            if (_vertexIDs == null)
            {
                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

                    toBeupdatedVertices = expressionGraph.Select(new LevelKey(vertexType.ID, myGraphDB, mySecurityToken, myTransactionToken), null, true);
                }
                else
                {
                    toBeupdatedVertices = myGraphDB.GetVertices<IEnumerable<IVertex>>(
                        mySecurityToken,
                        myTransactionToken,
                        new RequestGetVertices(vertexType.ID),
                        (stats, vertices) => vertices);
                }

            }
            else
            {
                toBeupdatedVertices = _vertexIDs;
            }

            var result = new RequestUpdate(new RequestGetVertices(vertexType.ID, toBeupdatedVertices.Select(_ => _.VertexID) , false));

            ProcessListOfUpdates(vertexType, myPluginManager, myGraphDB, mySecurityToken, myTransactionToken, ref result);

            return result;
        }
コード例 #4
0
        private RequestUpdate GenerateUpdateRequest(IGraphDB myGraphDB, GQLPluginManager myPluginManager, SecurityToken mySecurityToken, Int64 myTransactionToken)
        {
            IEnumerable <IVertex> toBeupdatedVertices = null;
            //prepare
            var vertexType = myGraphDB.GetVertexType <IVertexType>(
                mySecurityToken,
                myTransactionToken,
                new RequestGetVertexType(_TypeName),
                (stats, vtype) => vtype);

            RequestUpdate result = null;

            if (_vertexIDs == null)
            {
                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
                    toBeupdatedVertices = expressionGraph.Select(new LevelKey(vertexType.ID, myGraphDB,
                                                                              mySecurityToken,
                                                                              myTransactionToken),
                                                                 null, true);

                    result = new RequestUpdate(
                        new RequestGetVertices(toBeupdatedVertices
                                               .Select(_ => _.VertexTypeID)
                                               .FirstOrDefault(),
                                               toBeupdatedVertices.Select(_ => _.VertexID), false));
                }
                else
                {
                    toBeupdatedVertices = myGraphDB.GetVertices <IEnumerable <IVertex> >(
                        mySecurityToken,
                        myTransactionToken,
                        new RequestGetVertices(vertexType.ID),
                        (stats, vertices) => vertices);
                }
            }
            else
            {
                toBeupdatedVertices = _vertexIDs;
            }

            if (result == null)
            {
                result = new RequestUpdate(new RequestGetVertices(vertexType.ID,
                                                                  toBeupdatedVertices
                                                                  .Select(_ => _.VertexID),
                                                                  false));
            }

            ProcessListOfUpdates(vertexType,
                                 myPluginManager,
                                 myGraphDB,
                                 mySecurityToken,
                                 myTransactionToken,
                                 ref result);

            return(result);
        }
コード例 #5
0
ファイル: ABinaryCompareOperator.cs プロジェクト: ramz/sones
        private static void MatchData(DataContainer data, IExpressionGraph resultGraph, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken, TypesOfOperators myTypeOfOperator, BinaryOperator myOperator)
        {
            #region data

            LevelKey myLevelKey = CreateLevelKey(data.IDChainDefinitions.Item1, myGraphDB, mySecurityToken, myTransactionToken);

            #endregion

            var vertices = myGraphDB.GetVertices<List<IVertex>>(
                mySecurityToken,
                myTransactionToken,
                new GraphDB.Request.RequestGetVertices(
                    new BinaryExpression(
                        new PropertyExpression(data.IDChainDefinitions.Item1.LastType.Name, data.IDChainDefinitions.Item1.LastAttribute.Name),
                        myOperator,
                        GenerateLiteral(data.Operands.Item1, ((IPropertyDefinition)data.IDChainDefinitions.Item1.LastAttribute).BaseType))),
                        (stats, vertexEnumerable) => vertexEnumerable.ToList());

            foreach (var aVertex in vertices)
            {
                IntegrateInGraph(aVertex, resultGraph, myLevelKey, myTypeOfOperator);
            }

            if (resultGraph.ContainsLevelKey(myLevelKey))
            {
                #region clean lower levels

                if (myTypeOfOperator == TypesOfOperators.AffectsLowerLevels)
                {
                    CleanLowerLevel(myLevelKey, resultGraph, myGraphDB, mySecurityToken, myTransactionToken);
                }

                #endregion

            }
            else
            {
                resultGraph.AddEmptyLevel(myLevelKey);
            }
        }