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