public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var projection = EntityProjection.CreateInstance(objectType);

            serializer.Populate(reader, projection);
            return(projection);
        }
Example #2
0
        public IEnumerable <Field> ToFields(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values)
        {
            yield return(new Field(FIELD_ID, entity.Identity.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));

            yield return(new Field(FIELD_NAME, entity.Name, Field.Store.YES, Field.Index.ANALYZED));

            yield return(new Field(FIELD_NAME_RAW, entity.Name, Field.Store.NO, Field.Index.NOT_ANALYZED));

            if (group != null)
            {
                yield return(new Field(FIELD_GROUP_ID, group.Identity.ToString(), Field.Store.YES, Field.Index.ANALYZED));

                yield return(new Field(FIELD_GROUP_NAME, group.Name, Field.Store.YES, Field.Index.ANALYZED));
            }

            foreach (var value in values)
            {
                foreach (var keyword in MetadataDefinition.KeywordDefinitions.Where(x => x.Equals(value.Name, StringComparison.InvariantCultureIgnoreCase)))
                {
                    yield return(new Field(keyword, value.Value, Field.Store.YES, Field.Index.ANALYZED));
                }

                yield return(new Field(FIELD_METADATA, value.Value, Field.Store.YES, Field.Index.ANALYZED));
            }
        }
Example #3
0
 public static EntityResource ToEntityResource(this EntityProjection projection)
 {
     return(new EntityResource
     {
         Identity = projection.Identity,
         Name = projection.Name
     });
 }
Example #4
0
        private Document ToDocument(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values)
        {
            var doc = new Document();

            foreach (var field in ToFields(entity, group, values))
            {
                doc.Add(field);
            }
            return(doc);
        }
        public DomainTypesSerializerSelector(
            ICommunicationModel communicationModel,
            EntityProjectionSerializer entityProjectionSerializer)
        {
            _knownEntityProjectionInterfaces = new HashSet <Type>(
                communicationModel.EntityProjections
                .Select(d => d.InterfaceType)
                .Where(i => EntityProjection.IsProjectionInterface(i)));

            _entityProjectionSerializer = entityProjectionSerializer;
            _entityProjectionSerializer.KnownEntityProjectionInterfaces = _knownEntityProjectionInterfaces;
        }
Example #6
0
        public void SaveIndex(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values)
        {
            var doc  = ToDocument(entity, group, values);
            var term = new Term(FIELD_ID, entity.Identity.ToString());

            using (var writer = OpenWriter())
            {
                writer.UpdateDocument(term, doc);
                writer.Commit();
                writer.Optimize();
            }
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var  interfaces     = value.GetType().GetInterfaces();
            Type projectionType = null;

            for (var i = 0; i < interfaces.Length; i++)
            {
                if (_knownProjectionInterfaces.Contains(interfaces[i]))
                {
                    projectionType = interfaces[i];
                    break;
                }
            }

            var projection = EntityProjection.CreateInstance(projectionType);

            foreach (var targetPropertyInfo in projectionType.GetProperties())
            {
                var sourcePropertyInfo = value.GetType().GetProperty(targetPropertyInfo.Name);
                var propertyValue      = sourcePropertyInfo.GetValue(value);
                EntityProjection.SetValue(projection, targetPropertyInfo.Name, propertyValue);
            }
            serializer.Serialize(writer, projection);
        }
 public void RegisterEntityProjection(EntityProjection projection)
 {
     entityProjections.Add(projection);
 }
        public void Handle(EntityCreatedEvent @event)
        {
            var projection = new EntityProjection(@event.AggregateIdentity, @event.MetadataDefinitionGroupIdentity, @event.Name.Name);

            _readStore.Save(projection.ToMaybe());
        }