Пример #1
0
        /*--------------------------------------------------------------------------------------------*/
        protected ITravPathItem ConsumeFirstPathItem(ITravPath pPath, Type pToType)
        {
            ITravPathItem item = pPath.ConsumeSteps(1, pToType)[0];

            item.VerifyParamCount(Params.Count);
            return(item);
        }
Пример #2
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pIgnoredToType)
        {
            ITravPathItem  item  = ConsumeFirstPathItem(pPath, ToType);
            string         alias = ParamAt <string>(item, 0);
            ITravStepParam p     = Params[0];
            string         conflictAlias;

            if (!pPath.HasAlias(alias))
            {
                throw item.NewStepFault(FabFault.Code.IncorrectParamValue,
                                        p.Name + " '" + alias + "' could not be found.", 0);
            }

            if (pPath.DoesBackTouchAs(alias))
            {
                throw item.NewStepFault(FabFault.Code.InvalidStep,
                                        "Back('" + alias + "') cannot occur directly after the As(" + alias + ").", 0);
            }

            if (!pPath.AllowBackToAlias(alias, out conflictAlias))
            {
                throw item.NewStepFault(FabFault.Code.InvalidStep, "Cannot traverse back to " +
                                        "the As(" + alias + ") step; it exists within the As(" + conflictAlias + ") and " +
                                        "Back(" + conflictAlias + ") traversal path.", 0);
            }

            pPath.AddBackToAlias(alias);
            pPath.AddScript(".back(" + pPath.AddParam(alias) + ")");
        }
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem item = ConsumeFirstPathItem(pPath, pToType);
            string        op   = ParamAt <string>(item, 0);

            var ev = new CreateFabEventor();

            ev.Type   = (byte)EventorType.Id.Start;           //to make validator happy
            ev.Year   = ParamAt <long>(item, 1);
            ev.Month  = ParamAt <byte>(item, 2);
            ev.Day    = ParamAt <byte>(item, 3);
            ev.Hour   = ParamAt <byte>(item, 4);
            ev.Minute = ParamAt <byte>(item, 5);
            ev.Second = ParamAt <byte>(item, 6);

            var validator = new CreateFabEventorValidator(ev);

            validator.Validate();

            long evDateTime = DataUtil.EventorTimesToLong(
                ev.Year, ev.Month, ev.Day, ev.Hour, ev.Minute, ev.Second);

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(DbName.Vert.Factor.EventorDateTime) + ", " +
                GremlinUtil.GetStandardCompareOperation(op) + ", " +
                pPath.AddParam(evDateTime) +
                ")"
                );
        }
Пример #4
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ConsumeFirstPathItem(pPath, pToType);

            pPath.AddScript(
                ".outE(" + pPath.AddParam(vEdgeDbName) + ")" +
                (vInVertex ? ".inV" : "")
                );
        }
Пример #5
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ConsumeFirstPathItem(pPath, pToType);

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(DbName.Vert.Vertex.VertexType) + ", " +
                GremlinUtil.GetStandardCompareOperation(GremlinUtil.Equal) + ", " +
                pPath.AddParam(vType) +
                ")"
                );
        }
Пример #6
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem item = ConsumeFirstPathItem(pPath, pToType);
            string        val  = ParamAt <string>(item, 0);

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(vPropDbName) + ", " +
                GremlinUtil.GetElasticContainsOperation() + ", " +
                pPath.AddParam(val) +
                ")"
                );
        }
Пример #7
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem  item  = ConsumeFirstPathItem(pPath, pToType);
            string         alias = ParamAt <string>(item, 0);
            ITravStepParam p     = Params[0];

            if (pPath.HasAlias(alias))
            {
                throw item.NewStepFault(FabFault.Code.IncorrectParamValue,
                                        p.Name + " '" + alias + "' is already in use.", 0);
            }

            pPath.AddAlias(alias);
            pPath.AddScript(".as(" + pPath.AddParam(alias) + ")");
        }
Пример #8
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem item = ConsumeFirstPathItem(pPath, pToType);

            if (pPath.MemberId == null)
            {
                throw item.NewStepFault(FabFault.Code.InvalidStep, "There is no active Member.");
            }

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(DbName.Vert.Vertex.VertexId) + ", " +
                pPath.AddParam(pPath.MemberId) +
                ")"
                );
        }
Пример #9
0
        /*--------------------------------------------------------------------------------------------*/
        public bool AcceptsPath(ITravPath pPath)
        {
            if (!pPath.IsAcceptableType(FromType, FromExactType))
            {
                return(false);
            }

            IList <ITravPathItem> steps = pPath.GetSteps(1);

            if (steps != null)
            {
                ITravPathItem s = steps[0];
                return(s.Command == CommandLow);
            }

            return(false);
        }
Пример #10
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public static void AddTypeFilterIfNecessary(ITravPath pPath, Type pStepType, Type pPathType)
        {
            if (pStepType != typeof(FabVertex) || pPathType == typeof(FabVertex))
            {
                return;
            }

            //TODO: BUG this doesn't work for 'artifacts' and 'vertices' traversals

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(DbName.Vert.Vertex.VertexType) + ", " +
                GremlinUtil.GetStandardCompareOperation(GremlinUtil.Equal) + ", " +
                pPath.AddParam((byte)ApiToDomain.GetVertexTypeId(pPathType)) +
                ")"
                );
        }
Пример #11
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem item = ConsumeFirstPathItem(pPath, pToType);
            TVal          val  = ParamAt <TVal>(item, 0);

            if (UpdateValue != null)
            {
                val = UpdateValue(val);
            }

            pPath.AddScript(
                ".has(" +
                pPath.AddParam(vPropDbName) + ", " +
                GetGremlinEqualOp() + ", " +
                pPath.AddParam(val) +
                ")"
                );
        }
Пример #12
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void BuildPath(string pPath)
        {
            vPathData = new TravPathData(pPath, vOpCtx.Auth.ActiveMemberId);
            vPath     = new TravPath(vPathData);

            ITravPathItem tps  = vPath.GetNextStep();
            ITravRule     rule = null;

            while (tps != null)
            {
                rule = FindRuleForStep(tps);
                rule.Step.ConsumePath(vPath, rule.ToType);
                tps = vPath.GetNextStep();
            }

            if (rule == null || !rule.Step.EndsWithRangeFilter)
            {
                vPathData.AddScript("[0.." + (TravStepTake.Maximum - 1) + "]");
            }
        }
Пример #13
0
 /*--------------------------------------------------------------------------------------------*/
 public override void ConsumePath(ITravPath pPath, Type pToType)
 {
     ConsumeFirstPathItem(pPath, pToType);
 }
Пример #14
0
 /*--------------------------------------------------------------------------------------------*/
 public override void ConsumePath(ITravPath pPath, Type pToType)
 {
     base.ConsumePath(pPath, pToType);
     TravStepEntry.AddTypeFilterIfNecessary(pPath, ToType, pToType);
 }
Пример #15
0
 /*--------------------------------------------------------------------------------------------*/
 public abstract void ConsumePath(ITravPath pPath, Type pToType);