public override IEnumerable<IVertexView> GetResult( GQLPluginManager myPluginManager, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken) { var resultingVertices = new List<IVertexView>(); if (!String.IsNullOrEmpty(_FuncName)) { #region Specific function //aggregate is user defined z.b. sones.exist or another.exist if (_FuncName.Contains(".")) { //get plugin var func = myPluginManager.GetAndInitializePlugin<IGQLFunction>(_FuncName); if (func != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(func, _FuncName) }; } else { throw new AggregateOrFunctionDoesNotExistException(typeof(IGQLFunction), _FuncName, ""); } } //try get function else { try { //get plugin var func = myPluginManager.GetAndInitializePlugin<IGQLFunction>(_FuncName); if (func != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(func, _FuncName) }; } else { throw new AggregateOrFunctionDoesNotExistException(typeof(IGQLFunction), _FuncName, ""); } } catch (ASonesException e) { //maybe user forgot prefix 'sones.' //get plugin var func = myPluginManager.GetAndInitializePlugin<IGQLFunction>("SONES." + _FuncName); if (func != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(func, "SONES." + _FuncName) }; } else { throw new AggregateOrFunctionDoesNotExistException(typeof(IGQLFunction), _FuncName, ""); } } } #endregion } else { #region All functions myPluginManager.GetPluginNameForType<IGQLFunction>(); foreach (var funcName in myPluginManager.GetPluginNameForType<IGQLFunction>()) { //get plugin var func = myPluginManager.GetAndInitializePlugin<IGQLFunction>(funcName); if (func != null) { resultingVertices.Add(GenerateOutput(func, funcName)); } else { throw new AggregateOrFunctionDoesNotExistException(typeof(IGQLFunction), funcName, ""); } } #endregion } return resultingVertices; }
/// <summary> /// <seealso cref=" ADescribeDefinition"/> /// </summary> public override QueryResult GetResult( GQLPluginManager myPluginManager, IGraphDB myGraphDB, SecurityToken mySecurityToken, Int64 myTransactionToken) { var resultingVertices = new List<IVertexView>(); ASonesException error = null; //aggregate name is not empty if (!String.IsNullOrEmpty(_AggregateName)) { #region Specific aggregate //aggregate is user defined if (_AggregateName.Contains(".")) { try { //get plugin var aggregate = myPluginManager.GetAndInitializePlugin<IGQLAggregate>(_AggregateName); if (aggregate != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(aggregate, _AggregateName) }; } else { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, ""); } } catch (ASonesException e) { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, "", e); } } //try get aggregate else { try { //get plugin var aggregate = myPluginManager.GetAndInitializePlugin<IGQLAggregate>(_AggregateName); if (aggregate != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(aggregate, _AggregateName) }; } else { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, ""); } } catch (ASonesException e) { //maybe user forgot prefix 'sones.' try { //get plugin var aggregate = myPluginManager.GetAndInitializePlugin<IGQLAggregate>("SONES." + _AggregateName); if (aggregate != null) { resultingVertices = new List<IVertexView>() { GenerateOutput(aggregate, "SONES." + _AggregateName) }; } else { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, ""); } } catch (ASonesException) { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, "", e); } } } #endregion } else { #region All aggregates myPluginManager.GetPluginNameForType<IGQLAggregate>(); foreach (var aggregateName in myPluginManager.GetPluginNameForType<IGQLAggregate>()) { try { var aggregate = myPluginManager.GetAndInitializePlugin<IGQLAggregate>(aggregateName); if (aggregate != null) { resultingVertices.Add(GenerateOutput(aggregate, aggregateName)); } else { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, ""); } } catch (ASonesException e) { error = new AggregateOrFunctionDoesNotExistException(typeof(IGQLAggregate), _AggregateName, "", e); } } #endregion } //an error occured if(error != null) return new QueryResult("", SonesGQLConstants.GQL, 0L, ResultType.Failed, resultingVertices, error); else return new QueryResult("", SonesGQLConstants.GQL, 0L, ResultType.Successful, resultingVertices); }