Mercurial > altnet-hispano
changeset 56:65bbcdd5d357
Pasando la responsabilidad de generar el Id al repositorio
author | nelopauselli |
---|---|
date | Mon, 16 May 2011 20:15:05 -0300 |
parents | 39f5258ebdcf |
children | 3d9e6d56d903 |
files | Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Agendas/trunk/src/Agendas.Domain/Evento.cs Agendas/trunk/src/Agendas.Domain/Identificable.cs Agendas/trunk/src/Agendas.Domain/Ponente.cs Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Agendas/trunk/src/Agendas.Repositories.Memory/RepositoryBase.cs |
diffstat | 7 files changed, 28 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agendas.Domain.csproj Mon May 16 20:15:05 2011 -0300 @@ -46,6 +46,7 @@ <Compile Include="Exceptions\EventoNotFoundException.cs" /> <Compile Include="Exceptions\IdentityContextNotConfiguredException.cs" /> <Compile Include="Exceptions\UsuarioNoAutenticadoException.cs" /> + <Compile Include="Identificable.cs" /> <Compile Include="IdentityContext.cs" /> <Compile Include="IRecordador.cs" /> <Compile Include="ISeguridad.cs" />
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 16 20:15:05 2011 -0300 @@ -3,21 +3,19 @@ namespace AltNetHispano.Agendas.Domain { - public class Evento + public class Evento : Identificable { private readonly IList<Track> _tracks; private IList<string> _enlaces; public Evento(string titulo) { - Id = Guid.NewGuid(); Titulo = titulo; _enlaces = new List<string>(); _tracks = new List<Track>(); } - public Guid Id { get; private set; } public string Titulo { get; private set; } public DateTime? Fecha { get; private set; } public string Sintesis { get; private set; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Domain/Identificable.cs Mon May 16 20:15:05 2011 -0300 @@ -0,0 +1,9 @@ +using System; + +namespace AltNetHispano.Agendas.Domain +{ + public class Identificable + { + public Guid Id { get; private set; } + } +} \ No newline at end of file
--- a/Agendas/trunk/src/Agendas.Domain/Ponente.cs Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Ponente.cs Mon May 16 20:15:05 2011 -0300 @@ -1,8 +1,6 @@ -using System; - -namespace AltNetHispano.Agendas.Domain +namespace AltNetHispano.Agendas.Domain { - public class Ponente + public class Ponente : Identificable { public Ponente(string nombre, string mail, string twitter, string blog) : this(nombre) @@ -14,12 +12,9 @@ public Ponente(string nombre) { - Id = Guid.NewGuid(); Nombre = nombre; } - public Guid Id { get; private set; } - public string Nombre { get; private set; } public string Mail { get; private set; }
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/EventoRepository.cs Mon May 16 20:15:05 2011 -0300 @@ -8,12 +8,6 @@ { public class EventoRepository : RepositoryBase<Evento>, IEventoRepository { - public void Save(Evento evento) - { - if (!Objects.Keys.Contains(evento.Id)) - Objects.Add(evento.Id, evento); - } - public void Update(Evento evento) { //nada que hacer en este método para este repositorio
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/PonenteRepository.cs Mon May 16 20:15:05 2011 -0300 @@ -7,12 +7,6 @@ { public class PonenteRepository : RepositoryBase<Ponente>, IPonenteRepository { - public void Save(Ponente ponente) - { - if (!Objects.Keys.Contains(ponente.Id)) - Objects.Add(ponente.Id, ponente); - } - public Ponente GetByNombre(string nombre) { return Objects.Values.SingleOrDefault(p => p.Nombre == nombre);
--- a/Agendas/trunk/src/Agendas.Repositories.Memory/RepositoryBase.cs Mon May 16 20:10:45 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Repositories.Memory/RepositoryBase.cs Mon May 16 20:15:05 2011 -0300 @@ -1,10 +1,24 @@ using System; using System.Collections.Generic; +using AltNetHispano.Agendas.Domain; namespace AltNetHispano.Agendas.Repositories.Memory { - public class RepositoryBase<T> + public class RepositoryBase<T> where T : Identificable { protected static readonly IDictionary<Guid, T> Objects = new Dictionary<Guid, T>(); + + public void Save(T obj) + { + if (obj.Id==Guid.Empty) + { + var setter = typeof (Identificable).GetProperty("Id"); + setter.SetValue(obj, Guid.NewGuid(), null); + } + + if (!Objects.Keys.Contains(obj.Id)) + Objects.Add(obj.Id, obj); + } + } } \ No newline at end of file