Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. public final class AppStateReducer implements Reducer<AppState> {
  2. private final Reducer<List<TodoItem>> todoItemsReducer;
  3.  
  4. private final Reducer<TodoFilter> filterReducer;
  5.  
  6. private AppStateReducer(Reducer<List<TodoItem>> todoItemsReducer, Reducer<TodoFilter> filterReducer) {
  7. this.todoItemsReducer = todoItemsReducer;
  8. this.filterReducer = filterReducer;
  9. }
  10.  
  11. @Override
  12. public AppState reduce(AppState state, Action action) {
  13. List<TodoItem> todoItems = null;
  14. TodoFilter filter = null;
  15.  
  16. if (state != null) {
  17. todoItems = state.todoItems();
  18. filter = state.filter();
  19. }
  20.  
  21. List<TodoItem> todoItemsNext = todoItemsReducer.reduce(todoItems, action);
  22. TodoFilter filterNext = filterReducer.reduce(filter, action);
  23.  
  24. //If all values are the same there is no need to create an object
  25. if (state != null
  26. && todoItems == todoItemsNext
  27. && filter == filterNext) {
  28. return state;
  29. } else {
  30. return new AppStateImpl(todoItemsNext, filterNext);
  31. }
  32. }
  33.  
  34. public static Builder builder() {
  35. return new Builder();
  36. }
  37.  
  38. public static class Builder {
  39. private Reducer<List<TodoItem>> todoItemsReducer;
  40.  
  41. private Reducer<TodoFilter> filterReducer;
  42.  
  43. private Builder() {
  44. }
  45.  
  46. public Builder todoItemsReducer(Reducer<List<TodoItem>> todoItemsReducer) {
  47. this.todoItemsReducer = todoItemsReducer;
  48. return this;
  49. }
  50.  
  51. public Builder filterReducer(Reducer<TodoFilter> filterReducer) {
  52. this.filterReducer = filterReducer;
  53. return this;
  54. }
  55.  
  56. public AppStateReducer build() {
  57. if (todoItemsReducer == null) {
  58. throw new IllegalStateException("todoItemsReducer should not be null");
  59. }
  60. if (filterReducer == null) {
  61. throw new IllegalStateException("filterReducer should not be null");
  62. }
  63. return new AppStateReducer(todoItemsReducer, filterReducer);
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement