Esempio n. 1
0
 /// <summary>
 /// Document visitor that handles generic dictionary properties
 /// </summary>
 /// <param name="mapper"></param>
 /// <param name="parser"></param>
 public GenericDictionaryDocumentVisitor(IReadOnlyMappingManager mapper, ISolrFieldParser parser)
 {
     this.mapper       = mapper;
     this.parser       = parser;
     memoCanHandleType = Memoizer.Memoize <Type, bool>(CanHandleType);
     memoGetThisField  = Memoizer.Memoize2 <Type, string, SolrFieldModel>(GetThisField);
 }
Esempio n. 2
0
 /// <summary>
 /// Default document visitor
 /// </summary>
 /// <param name="mapper"></param>
 /// <param name="parser"></param>
 public DefaultDocumentVisitor(IReadOnlyMappingManager mapper, ISolrFieldParser parser)
 {
     visitor = new AggregateDocumentVisitor(new ISolrDocumentPropertyVisitor[] {
         new RegularDocumentVisitor(parser, mapper),
         new GenericDictionaryDocumentVisitor(mapper, parser),
     });
 }
 /// <summary>
 /// Default document visitor
 /// </summary>
 /// <param name="mapper"></param>
 /// <param name="parser"></param>
 public DefaultDocumentVisitor(IReadOnlyMappingManager mapper, ISolrFieldParser parser)
 {
     visitor = new AggregateDocumentVisitor(new ISolrDocumentPropertyVisitor[] {
         new RegularDocumentVisitor(parser, mapper),
         new GenericDictionaryDocumentVisitor(mapper, parser),
     });
 }
 /// <summary>
 /// Document visitor that handles generic dictionary properties
 /// </summary>
 /// <param name="mapper"></param>
 /// <param name="parser"></param>
 public GenericDictionaryDocumentVisitor(IReadOnlyMappingManager mapper, ISolrFieldParser parser)
 {
     this.mapper = mapper;
     this.parser = parser;
     memoCanHandleType = Memoizer.Memoize<Type, bool>(CanHandleType);
     memoGetThisField = Memoizer.Memoize2<Type, string, SolrFieldModel>(GetThisField);
 }
 public InferringFieldParser(ISolrFieldParser parser)
 {
     this.parser = parser;
 }
Esempio n. 6
0
 public CollectionFieldParser(ISolrFieldParser valueParser)
 {
     this.valueParser = valueParser;
 }
 public CollectionFieldParser(ISolrFieldParser valueParser)
 {
     this.valueParser = valueParser;
 }
Esempio n. 8
0
 public SolrDictionaryDocumentResponseParser(ISolrFieldParser fieldParser)
 {
     this.fieldParser = fieldParser;
 }
 /// <summary>
 /// Document visitor that handles generic dictionary properties
 /// </summary>
 /// <param name="mapper"></param>
 /// <param name="parser"></param>
 public GenericDictionaryDocumentVisitor(IReadOnlyMappingManager mapper, ISolrFieldParser parser)
 {
     this.mapper = mapper;
     this.parser = parser;
 }
 /// <summary>
 /// Pass-through document visitor
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="mapper"></param>
 public RegularDocumentVisitor(ISolrFieldParser parser, IReadOnlyMappingManager mapper)
 {
     this.parser = parser;
     this.mapper = mapper;
 }
Esempio n. 11
0
 public NullableFieldParser(ISolrFieldParser parser)
 {
     this.parser = parser;
 }
Esempio n. 12
0
 /// <summary>
 /// Pass-through document visitor
 /// </summary>
 /// <param name="parser"></param>
 /// <param name="mapper"></param>
 public RegularDocumentVisitor(ISolrFieldParser parser, IReadOnlyMappingManager mapper)
 {
     this.parser = parser;
     this.mapper = mapper;
 }
Esempio n. 13
0
 public InferringFieldParser(ISolrFieldParser parser)
 {
     this.parser = parser;
 }
Esempio n. 14
0
 public NullableFieldParser(ISolrFieldParser parser)
 {
     this.parser = parser;
 }
        public static IExecuter <TNew> ChangeType <TNew, TOld>(
            this IExecuter <TOld> executer,
            MethodCallExpression expression,
            SelectExpressionsCollection selectExpressionsCollection)
        {
            if (executer == null)
            {
                throw new ArgumentNullException(nameof(executer));
            }
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }
            if (selectExpressionsCollection == null)
            {
                throw new ArgumentNullException(nameof(selectExpressionsCollection));
            }

            try
            {
                SolrQueryExecuter <TOld> oldExecuter = executer.Executer;

                ISolrConnection           connection           = oldExecuter.GetFieldRecursive <ISolrConnection>();
                ISolrQuerySerializer      serializer           = oldExecuter.GetFieldRecursive <ISolrQuerySerializer>();
                ISolrFacetQuerySerializer facetQuerySerializer = oldExecuter.GetFieldRecursive <ISolrFacetQuerySerializer>();

                ISolrDocumentResponseParser <TOld> oldParser =
                    oldExecuter.GetFieldRecursive <ISolrDocumentResponseParser <TOld> >();

                ISolrFieldParser fieldParser = oldParser.GetFieldRecursive <ISolrFieldParser>();
                SolrDictionaryDocumentResponseParser dictionaryParser = new SolrDictionaryDocumentResponseParser(fieldParser);

                ISolrDocumentResponseParser <TNew> docParser;

                if (expression.Method.DeclaringType == typeof(Queryable) && expression.Method.Name == nameof(Queryable.Cast))
                {
                    docParser = new CastResponseParser <TNew, TOld>(oldParser, dictionaryParser);
                }
                else if (expression.Method.DeclaringType == typeof(Queryable) && expression.Method.Name == nameof(Queryable.Select))
                {
                    docParser = new SelectResponseParser <TNew, TOld>(oldParser,
                                                                      dictionaryParser, expression,
                                                                      selectExpressionsCollection);
                }
                else
                {
                    throw new InvalidOperationException(
                              $"Unable to change query type from {typeof(TOld).Name} to {typeof(TNew).Name}. Method {expression.Method.Name} not supported");
                }

                ISolrAbstractResponseParser <TNew> parser = new DefaultResponseParser <TNew>(docParser);

                SolrQueryExecuter <TNew> newExecuter = new SolrQueryExecuter <TNew>(parser, connection, serializer,
                                                                                    facetQuerySerializer,
                                                                                    new SolrMoreLikeThisHandlerQueryResultsParser <TNew>(Enumerable.Repeat(parser, 1)));

                newExecuter.DefaultHandler      = oldExecuter.DefaultHandler;
                newExecuter.DefaultRows         = oldExecuter.DefaultRows;
                newExecuter.MoreLikeThisHandler = oldExecuter.MoreLikeThisHandler;

                return(new SelectQueryExecutor <TNew>(newExecuter));
            }
            catch (Exception e)
            {
                throw new InvalidOperationException(
                          $"Unable to change solr query executer from {typeof(TOld)} to {typeof(TNew)}.", e);
            }
        }
 public EquipmentDocumentVisitor(ISolrFieldParser parser, IReadOnlyMappingManager mapper)
 {
     _parser = parser;
     _mapper = mapper;
 }