Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hfdst3;
- import java.util.*;
- // // // // // //
- class Mediator {
- protected Map<Persoon, ArrayList<LogSysteem>> log = new HashMap<>();
- protected Map<Persoon, ArrayList<Filter>> filter = new HashMap<>();
- public void addLogSysteem(Persoon p, LogSysteem l){
- if(log.get(p) == null) {
- log.put(p, new ArrayList<LogSysteem>());
- }
- log.get(p).add(l);
- }
- public void addFilter(Persoon p, Filter f){
- if(filter.get(p) == null) {
- filter.put(p, new ArrayList<Filter>());
- }
- filter.get(p).add(f);
- }
- public void sendMessage(Persoon pers, String m){
- for(Persoon p : pers.getVrienden()) {
- boolean send=true;
- for(Filter f : filter.get(pers))
- if(!(f.ok(pers, p, m)))
- send=false;
- if(send) p.update(m);
- }
- for(LogSysteem l : log.get(pers)) l.update(""+pers+ " : " +m);
- }
- }
- abstract class Collega {
- protected Mediator m;
- public Collega(Mediator m) {
- this.m = m;
- }
- public abstract void update(String m);
- }
- // // // // // //
- class Persoon extends Collega{
- protected String id;
- protected ArrayList<Persoon> vriend = new ArrayList<>();
- protected ArrayList<LogSysteem> log = new ArrayList<>();
- protected ArrayList<Filter> filter = new ArrayList<>();
- public Persoon(Mediator m, String id){
- super(m);
- this.id = id;
- }
- public void addVriend(Persoon v){
- vriend.add(v);
- }
- /* to Mediator
- public void addLogSysteem(LogSysteem l){
- log.add(l);
- }
- */
- /* to Mediator
- public void addFilter(Filter f){
- filter.add(f);
- }
- */
- // new method
- public void update(String m) {
- receiveMessage(m);
- }
- public void receiveMessage(String m){
- System.out.println(id + " : Ontvangen : "+m);
- }
- /*
- public void sendMessage(String m){
- for(Persoon p : vriend) {
- boolean send=true;
- for(Filter f : filter)
- if(!(f.ok(this,p,m)))
- send=false;
- if(send) p.receiveMessage(m);
- }
- for(LogSysteem l : log)
- l.logMessage(this,m);
- }
- */
- // changed method
- public void sendMessage(String m) {
- this.m.sendMessage(this, m);
- }
- public String toString(){
- return "["+id+"]";
- }
- // new method
- public ArrayList<Persoon> getVrienden() {
- return vriend;
- }
- }
- class LogSysteem extends Collega {
- protected String id;
- protected ArrayList<String> messages = new ArrayList<>();
- public LogSysteem(Mediator m, String id){
- super(m);
- this.id = id;
- }
- public String toString() {
- return messages.toString();
- }
- // new method
- public void update(String m) {
- messages.add(m);
- }
- public void logMessage(Persoon p, String m){
- messages.add(""+p+"-> "+ m);
- }
- }
- interface Filter {
- // boolean ok(Persoon van, Persoon naar, String m);
- boolean ok(Collega van, Collega naar, String m);
- }
- class FilterLengte extends Collega implements Filter {
- private int l;
- public FilterLengte(Mediator m, int l){
- super(m);
- this.l = l;
- }
- public boolean ok(Collega van, Collega naar, String m){
- return m.length() <= l;
- }
- public void update(String m) {
- return;
- }
- }
- class FilterVerbodenKarakter extends Collega implements Filter {
- private char c;
- public FilterVerbodenKarakter(Mediator m, char c){
- super(m);
- this.c = c;
- }
- public boolean ok(Collega van, Collega naar, String m){
- return m.indexOf(c) == -1;
- }
- public void update(String m) {
- return;
- }
- }
- class TestMediator {
- public static void main(String[] args){
- Mediator m = new Mediator();
- Persoon an = new Persoon(m,"an");
- Persoon jan = new Persoon(m,"jan");
- Persoon bruno = new Persoon(m,"bruno");
- Persoon sofie = new Persoon(m,"sofie");
- LogSysteem l1 = new LogSysteem(m,"l1");
- LogSysteem l2 = new LogSysteem(m,"l2");
- Filter f1 = new FilterLengte(m,20);
- Filter f2 = new FilterVerbodenKarakter(m,'#');
- an.addVriend(jan);
- an.addVriend(bruno);
- m.addLogSysteem(an, l1);
- m.addLogSysteem(an, l2);
- m.addFilter(an, f1);
- m.addFilter(an, f2);
- an.sendMessage("abcd");
- an.sendMessage("abcd#");
- System.out.println(l1);
- }
- }
Add Comment
Please, Sign In to add comment