Пример #1
0
        private Exceptional<Boolean> EvaluateHaving(Vertex myDBObjectReadoutGroup, AExpressionDefinition complexValue, out String attributeName, out ValueDefinition simpleValue, DBContext dbContext)
        {
            //GraphDBType graphDBType = null;
            attributeName = null;
            simpleValue = null;

            if (complexValue is IDChainDefinition)
            {
                if (((IDChainDefinition)complexValue).LastAttribute == null)
                {
                    if (((IDChainDefinition)complexValue).Last() is ChainPartFuncDefinition)
                    {
                        var func = (((IDChainDefinition)complexValue).Last() as ChainPartFuncDefinition);
                        if (func.Parameters.Count != 1)
                            return new Exceptional<Boolean>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));

                        attributeName = func.SourceParsedString;
                        //graphDBType = func.Parameters.First().LastAttribute.GetDBType(dbContext.DBTypeManager);
                    }
                    else if (((IDChainDefinition)complexValue).IsUndefinedAttribute)
                    {
                        attributeName = ((IDChainDefinition)complexValue).UndefinedAttribute;

                        //return new Exceptional<bool>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));
                    }
                    else
                    {
                        //return new Exceptional<bool>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));
                    }
                }
                else
                {
                    attributeName = ((IDChainDefinition)complexValue).LastAttribute.Name;
                    //graphDBType = ((IDChainDefinition)complexValue).LastAttribute.GetDBType(dbContext.DBTypeManager);
                }
            }
            else
            {
                if (complexValue is AggregateDefinition)
                {
                    var func = (complexValue as AggregateDefinition);
                    if (func.ChainPartAggregateDefinition.Parameters.Count != 1)
                        return new Exceptional<Boolean>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));

                    attributeName = func.ChainPartAggregateDefinition.SourceParsedString;
                    //graphDBType = func.ContainingIDNodes.First().LastAttribute.GetDBType(dbContext.DBTypeManager);
                }
                else
                {
                    return new Exceptional<bool>(new Error_NotImplemented(new System.Diagnostics.StackTrace(true)));
                }
            }

            if (myDBObjectReadoutGroup.IsAttribute(attributeName))
            {
                ADBBaseObject objectValue = GraphDBTypeMapper.GetBaseObjectFromCSharpType(myDBObjectReadoutGroup.ObsoleteAttributes[attributeName]);
                simpleValue = new ValueDefinition(objectValue);
                return new Exceptional<bool>(true);
            }

            return new Exceptional<bool>(false);
        }