How jose-289/smart-home works
This is a JavaFX smart-home management application for controlling lights, thermostats, smart locks, and device groups. The main workflow is user actions in the desktop controllers, routed through SmartHomeFacade to create devices or operate them; grouped operations become composite-generated commands executed through command history. Climate strategies, lock states, mediator coordination, and device event observers provide supporting behavior. Relationships below are limited to the README and sampled source/index evidence; unsampled wiring is not assumed.
Main entry points: SmartHomeFacade.java Home Facade · SmartHomeMediator.java Home Mediator · Device.java Device Base · HomeController.java Home Controls
Components 24
Desktop Interface
- JavaFX Application
src/main/java/edu/smarthome/app/SmartHomeApplication.java - Home Controls
src/main/java/edu/smarthome/controller/HomeController.java - Device Controls
src/main/java/edu/smarthome/controller/DeviceController.java - Light Controls
src/main/java/edu/smarthome/controller/LightController.java - Climate Controls
src/main/java/edu/smarthome/controller/ThermostatController.java - Lock Controls
src/main/java/edu/smarthome/controller/SmartLockController.java - Security Controls
src/main/java/edu/smarthome/controller/SecurityController.java - Group Controls
src/main/java/edu/smarthome/controller/GroupController.java
Home Services
- Home Facade
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Device Factory
src/main/java/edu/smarthome/pattern/creational/factory/DeviceCreator.java
Device Domain
- Light Device
src/main/java/edu/smarthome/model/Light.java - Thermostat Device
src/main/java/edu/smarthome/model/Thermostat.java - Smart Lock
src/main/java/edu/smarthome/model/SmartLock.java - Device Base
src/main/java/edu/smarthome/model/Device.java - Device Events
src/main/java/edu/smarthome/model/DeviceEvent.java
Behavior Patterns
- Device Groups
src/main/java/edu/smarthome/pattern/structural/composite/DeviceGroup.java - Commands
src/main/java/edu/smarthome/pattern/behavior/command/Command.java - Command History
src/main/java/edu/smarthome/pattern/behavior/command/CommandHistory.java - Macro Commands
src/main/java/edu/smarthome/pattern/behavior/command/MacroCommand.java - Home Mediator
src/main/java/edu/smarthome/pattern/behavior/mediator/SmartHomeMediator.java - Event Observer
src/main/java/edu/smarthome/pattern/behavior/observer/DeviceObserver.java - Climate Strategies
src/main/java/edu/smarthome/pattern/behavior/strategy/ClimateStrategy.java - Lock States
src/main/java/edu/smarthome/pattern/behavior/state/LockState.java
Other components
- Home User
Connections 26
- Home User → JavaFX Application: opens
- JavaFX Application → Home Controls: presents
src/main/java/edu/smarthome/controller/HomeController.java - Home User → Home Controls: controls
- Home Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/HomeController.java - Device Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/DeviceController.java - Light Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/LightController.java - Climate Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/ThermostatController.java - Lock Controls → Home Facade: delegates to
- Security Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/SecurityController.java - Group Controls → Home Facade: delegates to
src/main/java/edu/smarthome/controller/GroupController.java - Home Facade → Device Factory: creates devices
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Device Factory → Device Base: constructs
src/main/java/edu/smarthome/pattern/creational/factory/DeviceCreator.java - Home Facade → Home Mediator: initializes and delegates
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Home Mediator → Light Device: coordinates
src/main/java/edu/smarthome/pattern/behavior/mediator/SmartHomeMediator.java - Home Mediator → Thermostat Device: coordinates
src/main/java/edu/smarthome/pattern/behavior/mediator/SmartHomeMediator.java - Home Mediator → Smart Lock: coordinates
src/main/java/edu/smarthome/pattern/behavior/mediator/SmartHomeMediator.java - Home Facade → Device Groups: operates groups
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Device Groups → Commands: gathers
src/main/java/edu/smarthome/pattern/structural/composite/DeviceGroup.java - Home Facade → Macro Commands: builds group macros
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Home Facade → Command History: executes and tracks
src/main/java/edu/smarthome/service/SmartHomeFacade.java - Command History → Commands: executes and undoes
src/main/java/edu/smarthome/pattern/behavior/command/CommandHistory.java - Macro Commands → Commands: composes
src/main/java/edu/smarthome/pattern/behavior/command/MacroCommand.java - Device Base → Event Observer: notifies
src/main/java/edu/smarthome/pattern/behavior/observer/DeviceObserver.java - Device Base → Device Events: creates
src/main/java/edu/smarthome/model/Device.java - Thermostat Device → Climate Strategies: applies
src/main/java/edu/smarthome/model/Thermostat.java - Smart Lock → Lock States: delegates state changes
src/main/java/edu/smarthome/model/SmartLock.java