Advertisement
Guest User

MVC: Pass data from view to controller

a guest
May 25th, 2013
1,652
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * mvc.java
  3.  *
  4.  * Compile & run command:
  5.  *     javac mvc.java && java MVC
  6.  *
  7.  * Pass data from view to controller
  8.  *
  9.  * This is a very basic example of how you can achieve it in a clean way.
  10.  */
  11. import java.util.Map;
  12. import java.util.HashMap;
  13. import java.util.Observable;
  14. import java.util.Observer;
  15.  
  16. class Person {
  17.     private String name;
  18.     private int age;
  19.    
  20.     public Person(String name, int age) {
  21.         this.name = name;
  22.         this.age = age;
  23.     }
  24.    
  25.     public String getName() {
  26.         return name;
  27.     }
  28.    
  29.     public int getAge() {
  30.         return age;
  31.     }
  32.    
  33.     public String toString() {
  34.         return name + ". " + age + " years old.";
  35.     }
  36. }
  37.  
  38. class PersonService {
  39.     public Person create(String name, int age) {
  40.         return new Person(name, age);
  41.     }
  42. }
  43.  
  44. interface View {
  45.     public void display();
  46.     public void addObserver(Observer o);
  47. }
  48.  
  49. class CreatePersonView extends Observable implements View  {
  50.     public void display() {
  51.         System.out.println("\nWelcome to the create person view!");
  52.         System.out.println("----------------------------------");
  53.        
  54.         System.out.print("Name: ");
  55.         String name = System.console().readLine().trim();
  56.        
  57.         System.out.print("Age: "); 
  58.         int age = Integer.valueOf(System.console().readLine().trim());
  59.        
  60.         Map<String, Object> data = new HashMap<String, Object>();
  61.         data.put("name", name);
  62.         data.put("age", age);
  63.        
  64.         // generate the event
  65.         setChanged();
  66.         notifyObservers(data);
  67.     }
  68. }
  69.  
  70. class Controller implements Observer {
  71.    
  72.     PersonService service;
  73.    
  74.     public void setPersonService(PersonService service) {
  75.                 this.service = service;
  76.         }
  77.    
  78.     public void update(Observable sender, Object arg) {
  79.         Map data = (Map)arg;
  80.         Person p = service.create((String)data.get("name"), (Integer)data.get("age"));
  81.        
  82.         //debug
  83.         System.out.println("Created new person: " + p);
  84.     }
  85. }
  86.  
  87.  
  88. class MVC {
  89.     public static void main(String[] args) {
  90.         View view = new CreatePersonView();
  91.         Controller controller = new Controller();
  92.         controller.setPersonService(new PersonService());
  93.         view.addObserver(controller);
  94.         view.display();
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement