Commit 4f7c1f7

Jason Lepp <jlepp@arcresources.com>
2010-10-18 22:35:01
Remove Mappers from MVP
1 parent ec85c3e
src/MVPtoMVVM.mvp/mappers/ITodoItemMapper.cs
@@ -1,10 +0,0 @@
-using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.presenters;
-
-namespace MVPtoMVVM.mvp.mappers
-{
-    public interface ITodoItemMapper
-    {
-        TodoItem MapFrom(ITodoItemPresenter presenter);
-    }
-}
\ No newline at end of file
src/MVPtoMVVM.mvp/mappers/ITodoItemPresenterMapper.cs
@@ -1,12 +0,0 @@
-using System.Collections.Generic;
-using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.presenters;
-
-namespace MVPtoMVVM.mvp.mappers
-{
-    public interface ITodoItemPresenterMapper
-    {
-        ITodoItemPresenter MapFrom(TodoItem item);
-        IEnumerable<ITodoItemPresenter> MapAll(IEnumerable<TodoItem> items);
-    }
-}
\ No newline at end of file
src/MVPtoMVVM.mvp/mappers/TodoItemMapper.cs
@@ -1,13 +0,0 @@
-using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.presenters;
-
-namespace MVPtoMVVM.mvp.mappers
-{
-    public class TodoItemMapper : ITodoItemMapper
-    {
-        public TodoItem MapFrom(ITodoItemPresenter presenter)
-        {
-            return new TodoItem {Description = presenter.Description, DueDate = presenter.DueDate, Id = presenter.Id};
-        }
-    }
-}
\ No newline at end of file
src/MVPtoMVVM.mvp/mappers/TodoItemPresenterMapper.cs
@@ -1,25 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.presenters;
-using StructureMap;
-
-namespace MVPtoMVVM.mvp.mappers
-{
-    public class TodoItemPresenterMapper : ITodoItemPresenterMapper
-    {
-        public ITodoItemPresenter MapFrom(TodoItem item)
-        {
-            var presenter = ObjectFactory.GetInstance<ITodoItemPresenter>();
-            presenter.Id = item.Id;
-            presenter.Description = item.Description;
-            presenter.DueDate = item.DueDate;
-            return presenter;
-        }
-
-        public IEnumerable<ITodoItemPresenter> MapAll(IEnumerable<TodoItem> items)
-        {
-            return items.Select(todoItem => MapFrom(todoItem));
-        }
-    }
-}
\ No newline at end of file
src/MVPtoMVVM.mvp/presenters/MvpPresenter.cs
@@ -1,7 +1,6 @@
 using System;
 using System.Collections.Generic;
 using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.mappers;
 using MVPtoMVVM.mvp.views;
 using MVPtoMVVM.repositories;
 using System.Linq;
@@ -12,12 +11,10 @@ namespace MVPtoMVVM.mvp.presenters
     {
         private IMvpView view;
         private ITodoItemRepository itemRepository;
-        private ITodoItemPresenterMapper presenterMapper;
 
-        public MvpPresenter(ITodoItemRepository itemRepository, ITodoItemPresenterMapper presenterMapper)
+        public MvpPresenter(ITodoItemRepository itemRepository)
         {
             this.itemRepository = itemRepository;
-            this.presenterMapper = presenterMapper;
         }
 
         public void SetView(IMvpView view)
@@ -29,7 +26,7 @@ namespace MVPtoMVVM.mvp.presenters
         public void AddNewItem()
         {
             var items = new List<ITodoItemPresenter>(view.GetTodoItems());
-            var newItem = presenterMapper.MapFrom(new TodoItem { DueDate = DateTime.Today, Description = ""});
+            var newItem = new TodoItemPresenter(itemRepository) {Description = string.Empty, DueDate = DateTime.Today} ;
             items.Add(newItem);
             view.SetTodoItems(items);
         }
@@ -51,7 +48,12 @@ namespace MVPtoMVVM.mvp.presenters
 
         private void RefreshItems()
         {
-            view.SetTodoItems(presenterMapper.MapAll(itemRepository.GetAll()));
+            view.SetTodoItems(itemRepository.GetAll().Select(MapFrom));
+        }
+
+        private ITodoItemPresenter MapFrom(TodoItem todoItem)
+        {
+            return new TodoItemPresenter(itemRepository) { Description = todoItem.Description, DueDate = todoItem.DueDate, Id = todoItem.Id};
         }
     }
 }
\ No newline at end of file
src/MVPtoMVVM.mvp/presenters/TodoItemPresenter.cs
@@ -1,6 +1,5 @@
 using System;
 using MVPtoMVVM.domain;
-using MVPtoMVVM.mvp.mappers;
 using MVPtoMVVM.mvp.views;
 using MVPtoMVVM.repositories;
 
@@ -9,14 +8,12 @@ namespace MVPtoMVVM.mvp.presenters
     public class TodoItemPresenter : ITodoItemPresenter
     {
         private ITodoItemRepository itemRepository;
-        private ITodoItemMapper itemMapper;
         private ITodoItemView view;
         public int Id { get; set; }
 
-        public TodoItemPresenter(ITodoItemRepository itemRepository, ITodoItemMapper itemMapper)
+        public TodoItemPresenter(ITodoItemRepository itemRepository)
         {
             this.itemRepository = itemRepository;
-            this.itemMapper = itemMapper;
         }
 
         public void SetView(ITodoItemView view)
@@ -43,15 +40,20 @@ namespace MVPtoMVVM.mvp.presenters
 
         public void SaveItem()
         {
-            var item = itemMapper.MapFrom(this);
+            var item = GetTodoItem();
             itemRepository.Save(item);
             Id = item.Id;
             IsDirty = false;
         }
 
+        private TodoItem GetTodoItem()
+        {
+            return new TodoItem {Id = Id, Description = Description, DueDate = DueDate};
+        }
+
         public void DeleteItem()
         {
-            var item = itemMapper.MapFrom(this);
+            var item = GetTodoItem();
             view.Remove(item.Id);
             itemRepository.Delete(item);            
         }
@@ -75,6 +77,8 @@ namespace MVPtoMVVM.mvp.presenters
         }
 
         private bool isDirty;
+
+
         public bool IsDirty
         {
             get { return isDirty; }
src/MVPtoMVVM.mvp/MVPtoMVVM.mvp.csproj
@@ -59,10 +59,6 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </ApplicationDefinition>
-    <Compile Include="mappers\ITodoItemMapper.cs" />
-    <Compile Include="mappers\ITodoItemPresenterMapper.cs" />
-    <Compile Include="mappers\TodoItemMapper.cs" />
-    <Compile Include="mappers\TodoItemPresenterMapper.cs" />
     <Compile Include="presenters\IMvpPresenter.cs" />
     <Compile Include="presenters\ITodoItemPresenter.cs" />
     <Compile Include="presenters\MvpPresenter.cs" />
src/MVPtoMVVM.mvvm/viewmodels/MainWindowViewModel.cs
@@ -14,6 +14,10 @@ namespace MVPtoMVVM.mvvm.viewmodels
     {
         private ITodoItemRepository todoItemRepository;
         private Synchronizer<MainWindowViewModel> updater;
+        public event PropertyChangedEventHandler PropertyChanged = (o, e) => { };
+        public ICollection<TodoItemViewModel> TodoItems { get; set; }
+        public ICommand CancelChangesCommand { get; set; }
+        public ICommand AddNewItemCommand { get; set; }
 
         public MainWindowViewModel(ITodoItemRepository todoItemRepository)
         {
@@ -50,11 +54,6 @@ namespace MVPtoMVVM.mvvm.viewmodels
                        };
         }
 
-        public ICollection<TodoItemViewModel> TodoItems { get; set; }
-        public event PropertyChangedEventHandler PropertyChanged = (o,e)=> { };
-        public ICommand CancelChangesCommand { get; set; }
-        public ICommand AddNewItemCommand { get; set; }
-
         public void Update(Expression<Func<MainWindowViewModel, object>> property)
         {
             updater.Update(property);