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.HasAttribute(attributeName)) { ADBBaseObject objectValue = GraphDBTypeMapper.GetBaseObjectFromCSharpType(myDBObjectReadoutGroup.ObsoleteAttributes[attributeName]); simpleValue = new ValueDefinition(objectValue); return new Exceptional<bool>(true); } return new Exceptional<bool>(false); }