Runner modificado
package es.unican.docencia.y2012.ed.practica10;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* Clase que sirve como punto de entrada a la aplicaci�n
* y que contiene metodos de prueba
* @author Pablo Sanchez (p.sanchez@unican.es)
* http://personales.unican.es/sanchezbp
*/
public class Runner {
public enum HouseObject {FLOOR, ROOM, HEATER, THERMOMETER}
/**
* Punto de entrada a la aplicacion
* @param args Argumentos de la l�nea de comandos. Simplemente se ignoran
*/
public static void main(String[] args) {
Map<HouseObject,Map<String,Object>> houseObjects = new HashMap<HouseObject,Map<String,Object>>();
houseObjects.put(HouseObject.FLOOR, new HashMap<String,Object>());
houseObjects.put(HouseObject.ROOM, new HashMap<String,Object>());
houseObjects.put(HouseObject.HEATER, new HashMap<String,Object>());
houseObjects.put(HouseObject.THERMOMETER, new HashMap<String,Object>());
feedHouseObjects(houseObjects);
// Estructura de la casa. La guardamos para trabajar con ella
Gateway gtw = houseStructureTest(houseObjects);
// Comprobamos que no se admitan duplicados
testDuplicates(gtw);
// Comprobamos que no las habitaciones se han anhadido correctamente
testFloorsAdded(gtw);
testRoomsAdded(gtw);
Map<String,Heater> heaters = addHeatersTest(gtw, houseObjects);
testHeatersDuplicated(gtw);
heaters = testRemoveHeater(gtw, houseObjects);
Map<String,Thermometer> thermos = addThermosTest(gtw,houseObjects);
testThermosDuplicated(gtw);
thermos = testRemoveThermos(gtw, houseObjects);
// testActivateHeatersPerFloor(gtw,heaters);
// testDeactivateHeatersPerFloor(gtw,heaters);
// testActivateHeatersPerRoom(gtw,heaters);
// testDeactivateHeatersPerRoom(gtw,heaters);
// testActivateSingleHeater(gtw,heaters);
// testDeactivateSingleHeater(gtw,heaters);
// testSetTemperaturePerFloor(gtw,heaters);
// testSetTemperaturePerRoom(gtw,heaters);
// testSetTemperatureSingleHeater(gtw,heaters);
testTempChangesHeaterInactive(gtw, heaters, thermos);
testActivatingHeater(gtw, heaters, thermos, 25.0,25.0);
testActivatingHeater(gtw, heaters, thermos, 12.0,25.0);
testActivatingHeater(gtw, heaters, thermos, 25.0,12.0);
testChangeActiveInactive(gtw, heaters, thermos);
} // main
protected static void feedHouseObjects(Map<HouseObject,Map<String,Object>> ho) {
Floor ground = new Floor("Ground");
ho.get(HouseObject.FLOOR).put(ground.getId(), ground);
Floor first = new Floor("First");
ho.get(HouseObject.FLOOR).put(first.getId(), first);
Room kitchen = new Room("Kitchen",ground);
Room living = new Room("Living",ground);
Room groundBathroom = new Room("GroundBathroom",ground);
Room mainBedroom = new Room("MainBedroom",first);
Room firstBedroom = new Room("FirstBedroom",first);
Room secondBedroom = new Room("SecondBedroom",first);
ho.get(HouseObject.ROOM).put(kitchen.getId(), kitchen);
ho.get(HouseObject.ROOM).put(living.getId(), living);
ho.get(HouseObject.ROOM).put(groundBathroom.getId(), groundBathroom);
ho.get(HouseObject.ROOM).put(mainBedroom.getId(), mainBedroom);
ho.get(HouseObject.ROOM).put(firstBedroom.getId(), firstBedroom);
ho.get(HouseObject.ROOM).put(secondBedroom.getId(), secondBedroom);
} // feedHouseObject
protected static Gateway houseStructureTest(Map<HouseObject,Map<String,Object>> ho) {
Gateway gtw = new Gateway();
System.out.println(" Creating the structure of the house ");
System.out.println("=======================================");
testAddFloor(gtw, (Floor) ho.get(HouseObject.FLOOR).get("Ground"));
testAddFloor(gtw, (Floor) ho.get(HouseObject.FLOOR).get("First"));
System.out.println("");
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("Kitchen"));
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("Living"));
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("GroundBathroom"));
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("MainBedroom"));
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("FirstBedroom"));
testAddRoom(gtw, (Room) ho.get(HouseObject.ROOM).get("SecondBedroom"));
System.out.println("=======================================");
System.out.println(" Structure sucessfully created");
System.out.println("");
return gtw;
} // houseStructureTest
protected static void testAddRoom(Gateway gtw, Room room) {
if (gtw.addRoom(room)) {
System.out.println(room.getId() + " room added");
} else {
System.out.println("Failure adding " + room.getId() + " room");
} // if
} // testAddRoom
protected static void testAddFloor(Gateway gtw, Floor floor) {
if (gtw.addFloor(floor)) {
System.out.println(floor.getId() + " floor added");
} else {
System.out.println("Failure adding " + floor.getId() + " floor");
} // if
} // houseStructureTest
protected static void testDuplicates(Gateway gtw) {
Floor first = new Floor("First");
Room mr = new Room("MainBedroom",first);
Room kitchen = new Room("Kitchen",first);
System.out.println("");
System.out.println("Adding some duplicates");
System.out.println("");
testAddFloor(gtw,first);
testAddRoom(gtw,kitchen);
testAddRoom(gtw,mr);
System.out.println("");
} // testDuplicates
protected static void testFloorsAdded(Gateway gtw) {
Collection<Floor> floors = gtw.getFloors();
System.out.println("");
System.out.println("Floors in the house ");
System.out.println("=======================");
for (Floor f : floors) {
System.out.println("Floor " + f.getId() + " included in the house");
} // for
System.out.println("");
} // testFloorsAdded
protected static void testRoomsAdded(Gateway gtw) {
Collection<Floor> floors = gtw.getFloors();
System.out.println("");
System.out.println("Rooms in the house ");
System.out.println("=======================");
System.out.println("");
for (Floor f : floors) {
System.out.println("Floor " + f.getId());
System.out.println("-------------------------------");
Collection<Room> rooms = f.getRooms();
for (Room r : rooms) {
System.out.println("Room " + r.getId());
} // for
System.out.println("");
} // for
System.out.println("");
} // testFloorsAdded
protected static Map<String,Heater> addHeatersTest(Gateway gtw,
Map<HouseObject,Map<String,Object>> ho) {
Map<String,Heater> result = new HashMap<String,Heater>();
Heater h1 = new Heater("FirstLiving", (Room) ho.get(HouseObject.ROOM).get("Living"));
Heater h2 = new Heater("SecondLiving",(Room) ho.get(HouseObject.ROOM).get("Living"));
Heater h3 = new Heater("Kitchen",(Room) ho.get(HouseObject.ROOM).get("Kitchen"));
System.out.println("Adding some heaters");
System.out.println("=======================");
System.out.println("");
if (testAddHeater(gtw,h1)) {
result.put(h1.getId(), h1);
} // if
if (testAddHeater(gtw,h2)) {
result.put(h2.getId(), h2);
} // if
if (testAddHeater(gtw,h3)) {
result.put(h3.getId(), h3);
} // if
System.out.println("");
return result;
} // addHeaters
protected static boolean testAddHeater(Gateway gtw, Heater h) {
boolean result = true;
if (gtw.addHeater(h)) {
System.out.println(h.getId() + " heater added");
result = true;
} else {
System.out.println("Failure when adding the " + h.getId() + " heater");
result = false;
} // if
return result;
} // houseStructureTest
protected static void testHeatersDuplicated(Gateway gtw) {
Floor ground = new Floor("Ground");
Room living = new Room("Living",ground);
Heater h1 = new Heater("FirstLiving",living);
Heater h2 = new Heater("SecondLiving",living);
System.out.println("");
System.out.println("Adding some duplicates");
System.out.println("");
testAddHeater(gtw,h1);
testAddHeater(gtw,h2);
System.out.println("");
} // testHeatersDuplicated
protected static Map<String,Heater> testRemoveHeater(Gateway gtw,
Map<HouseObject,Map<String,Object>> ho) {
Map<String,Heater> result = null;
System.out.println("");
System.out.println("Removing some heaters");
System.out.println("");
gtw.removeHeater("UnexistingHeater");
gtw.removeHeater("FirstLiving");
gtw.removeHeater("SecondLiving");
gtw.removeHeater("Kitchen");
System.out.println("Heaters should have been removed, so we can add them again");
System.out.println("");
result = addHeatersTest(gtw,ho);
System.out.println("");
return result;
} // testRemoveHeater
protected static void testActivateHeatersPerFloor(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Activating all heaters in the ground floor");
gtw.activateHeatersPerFloor("Ground");
System.out.println("Heaters sucessfully activated");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static void testDeactivateHeatersPerFloor(Gateway gtw, Map<String,Heater> heaters) {
System.out.println("Deactivating all heaters in the ground floor");
gtw.deactivateHeatersPerFloor("Ground");
System.out.println("Heaters sucessfully deactivated");
System.out.println("");
printHeatersStatus(heaters);
} // testDeactivateHeatersPerFloor
protected static void testActivateHeatersPerRoom(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Activating all heaters in the living room");
gtw.activateHeatersPerRoom("Living");
System.out.println("Heaters sucessfully activated");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static void testDeactivateHeatersPerRoom(Gateway gtw, Map<String,Heater> heaters) {
System.out.println("Deactivating all heaters in the living room");
gtw.deactivateHeatersPerRoom("Living");
System.out.println("Heaters sucessfully deactivated");
System.out.println("");
printHeatersStatus(heaters);
} // testDeactivateHeatersPerFloor
protected static void testActivateSingleHeater(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Activating the kitchen heater");
gtw.activate("Kitchen");
System.out.println("Heater sucessfully activated");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static void testDeactivateSingleHeater(Gateway gtw, Map<String,Heater> heaters) {
System.out.println("Deactivating the kitchen heater");
gtw.deactivate("Kitchen");
System.out.println("Heater sucessfully deactivated");
System.out.println("");
printHeatersStatus(heaters);
} // testDeactivateHeatersPerFloor
protected static void testSetTemperaturePerFloor(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Setting all heaters in the first floor to 10 celsius");
gtw.setTemperaturePerFloor("Ground",10.0);
System.out.println("Heaters sucessfully set");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static void testSetTemperaturePerRoom(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Setting all heaters in the living to 10 celsius");
gtw.setTemperaturePerRoom("Living",10.0);
System.out.println("Heaters sucessfully set");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static void testSetTemperatureSingleHeater(Gateway gtw, Map<String,Heater> heaters) {
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Setting the kitchen heater to 10 celsius");
gtw.setTemperature("Kitchen",10.0);
System.out.println("Heater sucessfully set");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
} // testActivateHeatersPerFloor
protected static Map<String,Thermometer> addThermosTest(Gateway gtw,
Map<HouseObject,Map<String,Object>> ho) {
Map<String,Thermometer> map4Thermos = new HashMap<String,Thermometer>();
Room living = (Room) ho.get(HouseObject.ROOM).get("Living");
Room kitchen = (Room) ho.get(HouseObject.ROOM).get("Kitchen");
Thermometer t1 = new Thermometer("FirstLiving",living);
Thermometer t2 = new Thermometer("SecondLiving",living);
Thermometer t3 = new Thermometer("Kitchen",kitchen);
System.out.println("Adding some thermomemters");
System.out.println("=========================");
System.out.println("");
if (testAddThermometer(gtw,t1)) {
map4Thermos.put(t1.getId(), t1);
} // if
if (testAddThermometer(gtw,t2)) {
map4Thermos.put(t2.getId(), t2);
} // if
if (testAddThermometer(gtw,t3)) {
map4Thermos.put(t3.getId(), t3);
} // if
System.out.println("");
return map4Thermos;
} // addThermosTest
protected static boolean testAddThermometer(Gateway gtw, Thermometer t) {
boolean result = false;
if (gtw.addThermometer(t)) {
System.out.println(t.getId() + " thermometer added");
result = true;
} else {
System.out.println("Failure when adding the " + t.getId() + " thermometer");
result = false;
} // if
return result;
} // testAddThermometer
protected static Map<String,Thermometer> testRemoveThermos(Gateway gtw, Map<HouseObject,Map<String,Object>> ho) {
System.out.println("");
System.out.println("Removing some thermos");
System.out.println("");
gtw.removeThermometer("UnexistingThermo");
gtw.removeThermometer("FirstLiving");
gtw.removeThermometer("SecondLiving");
gtw.removeThermometer("Kitchen");
System.out.println("Thermos should have been removed, so we can add them again");
System.out.println("");
Map<String,Thermometer> result = addThermosTest(gtw,ho);
System.out.println("");
return result;
} // testRemoveHeater
protected static void testThermosDuplicated(Gateway gtw) {
Floor ground = new Floor("Ground");
Room living = new Room("Living",ground);
Thermometer t1 = new Thermometer("FirstLiving",living);
Thermometer t2 = new Thermometer("SecondLiving",living);
System.out.println("");
System.out.println("Adding some duplicates");
System.out.println("");
testAddThermometer(gtw,t1);
testAddThermometer(gtw,t2);
System.out.println("");
} // testHeatersDuplicated
protected static void printHeatersStatus(Map<String,Heater> heaters) {
Collection<Heater> heatersList = heaters.values();
for (Heater h : heatersList) {
System.out.println(h);
} // for
} // printHeatersStatus
protected static void printThermosStatus(Map<String,Thermometer> thermos) {
Collection<Thermometer> thermoList = thermos.values();
for (Thermometer t : thermoList) {
System.out.println(t);
} // for
} // printHeatersStatus
protected static void allHeatersInactive(Gateway gtw) {
for(Floor f : gtw.getFloors()) {
gtw.deactivateHeatersPerFloor(f.getId());
} // for
} // allHeatersInactive
protected static void testTempChangesHeaterInactive(Gateway gtw,
Map<String,Heater> heaters,
Map<String,Thermometer> thermos) {
printHeatersStatus(heaters);
System.out.println("");
printThermosStatus(thermos);
System.out.println("");
Thermometer living = thermos.get("Kitchen");
living.setTemperature(12.0);
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
printThermosStatus(thermos);
} // testTempChangesHeaterInactive
protected static void testActivatingHeater(Gateway gtw, Map<String,Heater> heaters,
Map<String,Thermometer> thermos,
double thermoTemp, double heaterTemp) {
printHeatersStatus(heaters);
System.out.println("");
printThermosStatus(thermos);
System.out.println("");
Heater h = heaters.get("Kitchen");
h.deactive();
Thermometer living = thermos.get("Kitchen");
living.setTemperature(thermoTemp);
System.out.println("Cambiada la temperatura del termometro de la cocina a " + thermoTemp);
h.setTemperature(heaterTemp);
gtw.activate(h.getId());
System.out.println("Heater de la cocina activado " + heaterTemp);
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
printThermosStatus(thermos);
} // testTempChangesHeaterInactive
protected static void testChangeActiveInactive(Gateway gtw, Map<String,Heater> heaters,
Map<String,Thermometer> thermos) {
printThermosStatus(thermos);
System.out.println("");
allHeatersInactive(gtw);
System.out.println("Ponemos los heaters del sal�n a 22 grados.");
gtw.setTemperaturePerRoom("Living", 22.0);
System.out.println("Activamos los heaters del salon.");
gtw.activateHeatersPerRoom("Living");
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
Thermometer living = thermos.get("FirstLiving");
System.out.println("Cambiamos la temperatura del termometro del salon a 18");
living.setTemperature(18.0);
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
System.out.println("Desactivamos los heaters del salon");
gtw.deactivateHeatersPerRoom("Living");
System.out.println("");
System.out.println("Cambiamos la temperatura del termometro del salon a 30");
living.setTemperature(30.0);
System.out.println("");
printHeatersStatus(heaters);
System.out.println("");
printThermosStatus(thermos);
} // testChangeInactive
} // Runner