public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var projection = EntityProjection.CreateInstance(objectType); serializer.Populate(reader, projection); return(projection); }
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)); } }
public static EntityResource ToEntityResource(this EntityProjection projection) { return(new EntityResource { Identity = projection.Identity, Name = projection.Name }); }
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; }
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()); }