In this assignment, you will continue working on the Smart Home Controller challenge playing the role of "Smart Builders", i.e., a bunch of developers who develop custom smart homes by putting together various components. You will now face three challenges:
•Adapting an Old Sensor. You are given an temperature sensor driver that does not satisfy the Simple Smart Device Collaboration Standard (SSDCS). You will need to use the adapter pattern so that you bring it up to SSDCS standards.
•Adapting a Sensor with inverted control. You are also given a temperature sensor that not only does not support SSDCS but it generates messages in response to temperature events, following the observer pattern. You will need to combine observer and adapter pattern to use this new sensor in your project.
•A Customizable Furnace. You are building your own family of SSDCS-compliant furnaces with various extra's and components. You will need to apply the decorator pattern in order to makes sure that the furnace always initializes the appropriate components when it is turned on.
Recall: Sensors, Controllers and Actuators of various vendors are able to work together through the use of Interfaces. Specifically a consortium of smart home vendors, called "ITEC3030 Smart Home Consortium” worked together to produce the Simple Smart Device Collaboration Standard (SSDCS) in form of a set of Java Interfaces. The Interfaces can be freely downloaded from here (jar) and the JavaDoc-generated Documentation can be found here (zip).
•Controller.java [you will need to rename the file or class], as in the exercise the controller device collects data from sensors and sends commands to actuators. Here it is simplified to exclude Rooms, Buildings etc.
•Main.java [you will need to rename the file or class], a test bed where various sensors can be created and controlled/tested.
OldTemp Inc. is a company that was developing sensors before Ssdcs existed. You need to use one of their sensors OldyTempSensorOld3 which obviously does not comply with Ssdcs. The company offers you a jar of the sensor driver and a JavaDoc for the Driver. Use the adapter pattern to use OldyTempSensorOld3 in your integration project so that it complies with Ssdcs. Name your Adapter OldyTempSensorAdapter;
1.A run of scenario 1 (see Main.java).
2.A 2-3 minute uninterrupted video presenting your solutions and demonstrating the code.
(i) How you set up your Eclipse project from scratch and import the Java files,
(ii) How you import the driver in the project (including showing that it does not work without the import), and
(iii) How you run it.
3.The Java files relating to your solution.
4.A link to a JavaDoc describing your classes.
5.A class diagram demonstrating your solution.
NewTemp Inc. is a company that is developing sensors just ignoring SSDCS. Instead they implement part of an observer pattern in which the sensor is a Subject generating notifications. The company offers you a JAR of the sensor driver and a JavaDoc where the observer implementation is described. Use the adapter pattern to comply with the observer pattern that NewTemp imposes. [hint: simply let the adapter keep track of the latest temperature it received]. Name your Adapter Newly Temp Sensor Adapter.
1.A run of scenario 2 (see Main.java)
2.A 2-3 minute uninterrupted video presenting your solutions and demonstrating the code.
(i) How you set up your Eclipse project from scratch and import the Java files,
(ii) How you import the driver in the project (including showing that it does not work without the import), and
(iii) How you run it.
3.The JAVA files relating to your solution.
4.A link to a JavaDoc describing your classes.
5.A sequence diagram showing what happens when newTemperature(0) is called from Main.
Smart Builders also decided to start building furnaces. They call their family of furnaces OurFurnace and they are SSDCS compliant. The basic furnace (which includes the basic components of a furnace) can be augmented with a Humidifier and a WiFi (for smartphone control). Depending on whether the furnace has these components, they must turn on when the furnace turns on. As it stands they only have one model PlainGasF1, and when it turns on it simply prints "PlainGasF1: Up and Running". The WiFi component prints "Wifi: Initialized" and the Humidifier prints "Humidifier: On".
Depending on what, if any, add-ons are considered, the start sequence will print different messages. For example, PlainGasF1 with Wifi will print:
"Wifi: Initialized".
"PlainGasF1: Up and Running".
... when turned on (i.e. method turnOn()).
Implement the product family using the decorator pattern, and show that turnOn() behaves accordingly.
1.A 2-3 minute uninterrupted video presenting your solutions and demonstrating the code.
(i) How you set up your Eclipse project from scratch and import the Java files,
(ii) How you import the driver in the project (including showing that it does not work without the import), and
(iii) How you run it.
2.The java files relating to your solution.
3.A link to a JavaDoc describing your classes.