timdebuyst

Mediator.java

Mar 7th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.42 KB | None | 0 0
  1. package hfdst3;
  2.  
  3. import java.util.*;
  4.  
  5. // // // // // //
  6.  
  7. class Mediator {
  8.     protected Map<Persoon, ArrayList<LogSysteem>> log = new HashMap<>();
  9.     protected Map<Persoon, ArrayList<Filter>> filter = new HashMap<>();
  10.     public void addLogSysteem(Persoon p, LogSysteem l){
  11.         if(log.get(p) == null) {
  12.             log.put(p,  new ArrayList<LogSysteem>());
  13.         }
  14.         log.get(p).add(l);
  15.     }
  16.     public void addFilter(Persoon p, Filter f){
  17.         if(filter.get(p) == null) {
  18.             filter.put(p,  new ArrayList<Filter>());
  19.         }
  20.         filter.get(p).add(f);
  21.     }
  22.     public void sendMessage(Persoon pers, String m){
  23.         for(Persoon p : pers.getVrienden()) {
  24.             boolean send=true;
  25.             for(Filter f : filter.get(pers))
  26.                 if(!(f.ok(pers, p, m)))
  27.                     send=false;
  28.             if(send) p.update(m);
  29.         }
  30.         for(LogSysteem l : log.get(pers)) l.update(""+pers+ " : " +m);
  31.     }
  32. }
  33.  
  34. abstract class Collega {
  35.     protected Mediator m;
  36.     public Collega(Mediator m) {
  37.         this.m = m;
  38.     }
  39.     public abstract void update(String m);
  40. }
  41.  
  42. // // // // // //
  43.  
  44. class Persoon extends Collega{
  45.     protected String id;
  46.     protected ArrayList<Persoon> vriend = new ArrayList<>();
  47.     protected ArrayList<LogSysteem> log = new ArrayList<>();
  48.     protected ArrayList<Filter> filter = new ArrayList<>();
  49.     public Persoon(Mediator m, String id){
  50.         super(m);
  51.         this.id = id;
  52.     }
  53.     public void addVriend(Persoon v){
  54.         vriend.add(v);
  55.     }
  56.     /* to Mediator
  57.     public void addLogSysteem(LogSysteem l){
  58.         log.add(l);
  59.     }
  60.     */
  61.     /* to Mediator
  62.     public void addFilter(Filter f){
  63.         filter.add(f);
  64.     }
  65.     */
  66.     // new method
  67.     public void update(String m) {
  68.         receiveMessage(m);
  69.     }
  70.     public void receiveMessage(String m){
  71.         System.out.println(id + " : Ontvangen : "+m);
  72.     }
  73.     /*
  74.     public void sendMessage(String m){
  75.         for(Persoon p : vriend) {
  76.             boolean send=true;
  77.             for(Filter f : filter)
  78.                 if(!(f.ok(this,p,m)))
  79.                     send=false;
  80.             if(send) p.receiveMessage(m);
  81.         }
  82.         for(LogSysteem l : log)
  83.             l.logMessage(this,m);
  84.     }
  85.     */
  86.     // changed method
  87.     public void sendMessage(String m) {
  88.         this.m.sendMessage(this, m);
  89.     }
  90.     public String toString(){
  91.         return "["+id+"]";
  92.     }
  93.     // new method
  94.     public ArrayList<Persoon> getVrienden() {
  95.         return vriend;
  96.     }
  97. }
  98.  
  99. class LogSysteem extends Collega {
  100.     protected String id;
  101.     protected ArrayList<String> messages = new ArrayList<>();
  102.     public LogSysteem(Mediator m, String id){
  103.         super(m);
  104.         this.id = id;
  105.     }
  106.     public String toString() {
  107.         return messages.toString();
  108.     }
  109.     // new method
  110.     public void update(String m) {
  111.         messages.add(m);
  112.     }
  113.     public void logMessage(Persoon p, String m){
  114.         messages.add(""+p+"-> "+ m);
  115.     }
  116. }
  117.  
  118. interface Filter {
  119.     // boolean ok(Persoon van, Persoon naar, String m);
  120.     boolean ok(Collega van, Collega naar, String m);
  121. }
  122.  
  123. class FilterLengte extends Collega implements Filter {
  124.     private int l;
  125.     public FilterLengte(Mediator m, int l){
  126.         super(m);
  127.         this.l = l;
  128.     }
  129.     public boolean ok(Collega van, Collega naar, String m){
  130.         return m.length() <= l;
  131.     }
  132.     public void update(String m) {
  133.         return;
  134.     }
  135. }
  136.  
  137. class FilterVerbodenKarakter extends Collega implements Filter {
  138.     private char c;
  139.     public FilterVerbodenKarakter(Mediator m, char c){
  140.         super(m);
  141.         this.c = c;
  142.     }
  143.     public boolean ok(Collega van, Collega naar, String m){
  144.         return m.indexOf(c) == -1;
  145.     }
  146.     public void update(String m) {
  147.         return;
  148.     }
  149. }
  150.  
  151. class TestMediator {
  152.     public static void main(String[] args){
  153.         Mediator m = new Mediator();
  154.         Persoon an = new Persoon(m,"an");
  155.         Persoon jan = new Persoon(m,"jan");
  156.         Persoon bruno = new Persoon(m,"bruno");
  157.         Persoon sofie = new Persoon(m,"sofie");
  158.         LogSysteem l1 = new LogSysteem(m,"l1");
  159.         LogSysteem l2 = new LogSysteem(m,"l2");
  160.         Filter f1 = new FilterLengte(m,20);
  161.         Filter f2 = new FilterVerbodenKarakter(m,'#');
  162.         an.addVriend(jan);
  163.         an.addVriend(bruno);
  164.         m.addLogSysteem(an, l1);
  165.         m.addLogSysteem(an, l2);
  166.         m.addFilter(an, f1);
  167.         m.addFilter(an, f2);
  168.         an.sendMessage("abcd");
  169.         an.sendMessage("abcd#");
  170.         System.out.println(l1);
  171.     }
  172. }
Add Comment
Please, Sign In to add comment