Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In Java: I need to write a pubslisher/subscriber (observer) based program. I wan

ID: 3582568 • Letter: I

Question

In Java:

I need to write a pubslisher/subscriber (observer) based program. I wanted to use the following skeleton. The code should modified how it works best to include an observer list with simple information (email, phone number) and should set event to active whenever program is run. Should have a system print of something generic like "notifying observers that event is active". The events are simple like an active shooter event or some other disaster.

public class ObserverPatternMain {
    public static void main(String[] args) {
        Subsystem airPortSecurity=new Subsystem("airPortSecurity");
        Subsystem airLine=new Subsystem("airline");
Subsystem localPolice=new Subsystem("localPolice");
       
        Alarm alarm=new Alarm("Alarm","Not Active");
         
        alarm.registerObserver(airPortSecurity);
        alarm.registerObserver(airLine);
alarm.registerobserver(localPolice);
       
        alarm.setAvailability("Active");
    }
}

public interface Observer {
    public void update(String availability);
}

public class Subsytem implements Observer{
    String subsystemname;
    public Person(String subsystemname) {
this.subsystemname = subsystemname;
    }
    public String getsubsystemname() {
return subsystemname;
    }
    public void setPersonName(String subsystemname) {
this.subsystemname = subsystemname;
    }
    public void update(String availabiliy) {
System.out.println("Hello "+subsystemname+", Alarm is now "+availabiliy+");
    }
}

import java.util.ArrayList;
public class Product implements Subject{
    private ArrayList<Observer> observers = new ArrayList<Observer>();
    private String productName;
    private String productType;
    String availability;
    public Product(String productName, String productType,String availability) {
super();
this.subsystemname = subsystemname;
this.subsystemname = subSystemType;public interface Subject {
    public void registerObserver(Observer observer);
    public void removeObserver(Observer observer);
    public void notifyObservers();
}


this.availability=availability;
    }
   
    public ArrayList<Observer> getObservers() {
return observers;
    }
    public void setObservers(ArrayList<Observer> observers) {
this.observers = observers;
    }

    public String getsubsystemname() {
return subsystemname;
    }
    public void setsubsystemname(String productName) {
this.subsystemname = subsystemname;
    }
    public String getsubSystemType() {
return subSystemType;
    }
    public void setProductType(String productType) {
this.subSystemType = subSystemType;
    }
   
    public String getAvailability() {
return availability;
    }
   
    public void setAvailability(String availability) {
this.availability = availability;
notifyObservers();
    }
   
    public void notifyObservers() {
System.out.println("Notifying to all of the Subsystems when alarm is active");
for (Observer ob : observers) {
     ob.update(this.availability );
}
    }
    public void registerObserver(Observer observer) {
observers.add(observer);
    }
    public void removeObserver(Observer observer) {
observers.remove(observer);
    }
}

Explanation / Answer

PROGRAM CODE:

Subsytem.java

package sample;

public class Subsytem implements Observer{

String subSystemName;

String email;

long phoneNumber;

  

public Subsytem(String subsystemname, String email, long Phonenumber) {

   this.subSystemName = subsystemname;

   this.email = email;

   this.phoneNumber = Phonenumber;

}

public String getSubsystemName() {

   return subSystemName;

}

public void setSubsytemName(String subsystemname) {

   this.subSystemName = subsystemname;

}

public String getEmail() {

       return email;

   }

   public void setEmail(String email) {

       this.email = email;

   }

   public long getPhoneNumber() {

       return phoneNumber;

   }

   public void setPhoneNumber(long phoneNumber) {

       this.phoneNumber = phoneNumber;

   }

   public void update(String availabiliy) {

   System.out.println("Hello "+subSystemName+", Alarm is now "+availabiliy);

}

}

Observer.java

package sample;

public interface Observer {

public void update(String availability);

}

Observation.java

package sample;

public interface Observation {

public void registerObserver(Observer observer);

public void removeObserver(Observer observer);

public void notifyObservers();

}

Alarm.java

package sample;

import java.util.ArrayList;

public class Alarm implements Observation{

   private String name;

   private String availability;

   private ArrayList<Observer> observers = new ArrayList<Observer>();

  

   public Alarm(String name, String availability) {

       this.name = name;

       this.availability = availability;

   }

  

  

   public String getName() {

       return name;

   }

   public void setName(String name) {

       this.name = name;

   }

   public String getAvailability() {

       return availability;

   }

   public void setAvailability(String availability) {

       this.availability = availability;

       if(availability.equals("Active"))

           notifyObservers();

   }

   public ArrayList<Observer> getObservers() {

       return observers;

   }

   public void setObservers(ArrayList<Observer> observers) {

       this.observers = observers;

   }

   @Override

   public void registerObserver(Observer observer) {

       observers.add(observer);

   }

   @Override

   public void removeObserver(Observer observer) {

       observers.remove(observer);

   }

   @Override

   public void notifyObservers() {

       System.out.println("Notifying to all of the Subsystems when alarm is active");

       for (Observer ob : observers) {

       ob.update(this.availability );

       }

      

   }

}

ObserverPatternMain.java

package sample;

public class ObserverPatternMain {

public static void main(String[] args) {

      

Subsytem airPortSecurity=new Subsytem("airPortSecurity", "security@airport.com", 777866238);

Subsytem airLine=new Subsytem("airline", "security@airline.com", 789299586);

Subsytem localPolice=new Subsytem("localPolice", "security@localpolice.com", 788998774);

Alarm alarm=new Alarm("Alarm","Not Active");

alarm.registerObserver(airPortSecurity);

alarm.registerObserver(airLine);

alarm.registerObserver(localPolice);

alarm.setAvailability("Active");

}

}

OUTPUT:

Notifying to all of the Subsystems when alarm is active

Hello airPortSecurity, Alarm is now Active

Hello airline, Alarm is now Active

Hello localPolice, Alarm is now Active

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote