refactor: javadoc and dependencies in HashMap
This commit is contained in:
@@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Annotates a method to be executed after all dependencies annotates with {@link Inject}
|
||||
* Annotates a method to be executed after all dependencies annotated with {@link Inject}
|
||||
* have been injected.
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
|
||||
@@ -23,6 +23,10 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Class responsible for bootstrapping the application wide dependencies
|
||||
* and injecting them into JavaFX Controllers.
|
||||
*/
|
||||
public class AppLoader {
|
||||
/**
|
||||
* Caching the panes
|
||||
@@ -32,17 +36,24 @@ public class AppLoader {
|
||||
/**
|
||||
* Application-wide dependencies
|
||||
*/
|
||||
private final PlantList plantList = new JsonPlantList();
|
||||
private final CropList cropList = new JsonCropList();
|
||||
private final TaskList taskList = new JsonTaskList();
|
||||
|
||||
private final GardenSchedule gardenSchedule = new GardenSchedule(taskList, plantList);
|
||||
private final Garden garden = new Garden(gardenSchedule, cropList);
|
||||
|
||||
private final Map<String, Object> dependencies = new HashMap<>();
|
||||
|
||||
public AppLoader() throws IOException {
|
||||
}
|
||||
PlantList plantList = new JsonPlantList();
|
||||
CropList cropList = new JsonCropList();
|
||||
TaskList taskList = new JsonTaskList();
|
||||
GardenSchedule gardenSchedule = new GardenSchedule(taskList, plantList);
|
||||
|
||||
dependencies.put(PlantList.class.getSimpleName(), plantList);
|
||||
dependencies.put(CropList.class.getSimpleName(), cropList);
|
||||
dependencies.put(TaskList.class.getSimpleName(), taskList);
|
||||
|
||||
dependencies.put(PlantListModel.class.getSimpleName(), new PlantListModel(plantList));
|
||||
|
||||
dependencies.put(GardenSchedule.class.getSimpleName(), gardenSchedule);
|
||||
dependencies.put(Garden.class.getSimpleName(), new Garden(gardenSchedule, cropList));
|
||||
dependencies.put(AppLoader.class.getSimpleName(), this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads and returns a {@link Pane} (cached).
|
||||
@@ -135,26 +146,18 @@ public class AppLoader {
|
||||
});
|
||||
|
||||
Arrays.stream(controller.getClass().getMethods())
|
||||
.filter(method -> method.isAnnotationPresent(AfterInject.class))
|
||||
.filter(method -> method.isAnnotationPresent(AfterInject.class) && method.getParameterCount() == 0)
|
||||
.forEach(afterInjectMethod -> {
|
||||
if (afterInjectMethod.getParameterCount() == 0) {
|
||||
try {
|
||||
afterInjectMethod.invoke(controller);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
afterInjectMethod.invoke(controller);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
// TODO: Log
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Object getAppDependency(Class<?> type) {
|
||||
return switch (type.getSimpleName()) {
|
||||
case "Garden" -> garden;
|
||||
case "PlantList" -> plantList;
|
||||
case "PlantListModel" -> new PlantListModel(plantList);
|
||||
case "GardenSchedule" -> gardenSchedule;
|
||||
case "AppLoader" -> this;
|
||||
default -> null;
|
||||
};
|
||||
return dependencies.get(type.getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,20 @@ package ch.zhaw.gartenverwaltung.bootstrap;
|
||||
import javafx.event.Event;
|
||||
import javafx.event.EventType;
|
||||
|
||||
/**
|
||||
* Represents an event that should lead to a view being changed.
|
||||
*/
|
||||
public class ChangeViewEvent extends Event {
|
||||
private final String view;
|
||||
|
||||
public static final EventType<ChangeViewEvent> CHANGE_MAIN_VIEW = new EventType<>("CHANGE_MAIN_VIEW");
|
||||
|
||||
/**
|
||||
* Creates an Event that should lead to the main view being changed.
|
||||
*
|
||||
* @param eventType The {@link EventType<ChangeViewEvent>} specifying which view should be changed.
|
||||
* @param view The filename of the View to be changed to
|
||||
*/
|
||||
public ChangeViewEvent(EventType<? extends Event> eventType, String view) {
|
||||
super(eventType);
|
||||
this.view = view;
|
||||
|
||||
@@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Annotates a Field to be injected from the application-dependencies
|
||||
* Annotates a Field to be injected from the application-dependencies.
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
|
||||
Reference in New Issue
Block a user