Clean code update 1 #1
@@ -30,75 +30,71 @@ public class TimeEntryView extends VerticalLayout {
|
|||||||
|
|
||||||
private final TimeEntryService timeEntryService;
|
private final TimeEntryService timeEntryService;
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
private User currentUser;
|
||||||
|
|
||||||
private final DatePicker datePicker = new DatePicker("Date");
|
private final DatePicker datePicker = new DatePicker("Date");
|
||||||
private final TimePicker startTimePicker = new TimePicker("Start Time");
|
private final TimePicker startTimePicker = new TimePicker("Start Time");
|
||||||
private final TimePicker endTimePicker = new TimePicker("End Time");
|
private final TimePicker endTimePicker = new TimePicker("End Time");
|
||||||
private final NumberField breakMinutesField = new NumberField("Break (minutes)");
|
private final NumberField breakField = new NumberField("Break (min)");
|
||||||
private final NumberField targetMinutesField = new NumberField("Target Time (minutes)");
|
private final NumberField targetField = new NumberField("Target Time (min)");
|
||||||
private final TextArea commentField = new TextArea("Comment");
|
private final TextArea commentArea = new TextArea("Comment");
|
||||||
private final ComboBox<DayStatus> statusComboBox = new ComboBox<>("Status");
|
private final ComboBox<DayStatus> statusCombo = new ComboBox<>("Status");
|
||||||
|
|
||||||
private final Button saveButton = new Button("Save");
|
private final Button saveBtn = new Button("Save");
|
||||||
private final Button updateButton = new Button("Update");
|
private final Button updateBtn = new Button("Update");
|
||||||
private final Button deleteButton = new Button("Delete");
|
private final Button deleteBtn = new Button("Delete");
|
||||||
|
|
||||||
private final Grid<TimeEntry> entryGrid = new Grid<>(TimeEntry.class, false);
|
private final Grid<TimeEntry> entryGrid = new Grid<>(TimeEntry.class, false);
|
||||||
|
|
||||||
private TimeEntry selectedEntry = null;
|
private TimeEntry selectedEntry = null;
|
||||||
private User currentUser;
|
|
||||||
|
|
||||||
public TimeEntryView(TimeEntryService timeEntryService, UserRepository userRepository) {
|
public TimeEntryView(TimeEntryService timeEntryService, UserRepository userRepository) {
|
||||||
this.timeEntryService = timeEntryService;
|
this.timeEntryService = timeEntryService;
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
|
|
||||||
initializeCurrentUser();
|
initializeUser();
|
||||||
configureFields();
|
configureFormFields();
|
||||||
configureButtons();
|
configureButtons();
|
||||||
configureGrid();
|
configureGrid();
|
||||||
|
|
||||||
datePicker.addValueChangeListener(e -> checkIfDateAlreadyExists());
|
datePicker.addValueChangeListener(e -> toggleSaveButton());
|
||||||
|
|
||||||
add(createFormLayout(), createButtonLayout(), entryGrid);
|
add(buildFormLayout(), buildButtonLayout(), entryGrid);
|
||||||
refreshGrid();
|
refreshGrid();
|
||||||
checkIfDateAlreadyExists(); // Initiale Prüfung
|
toggleSaveButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeCurrentUser() {
|
private void initializeUser() {
|
||||||
String username = SecurityContextHolder.getContext().getAuthentication().getName();
|
String username = SecurityContextHolder.getContext().getAuthentication().getName();
|
||||||
this.currentUser = userRepository.findByUsername(username)
|
this.currentUser = userRepository.findByUsername(username)
|
||||||
.orElseThrow(() -> new RuntimeException("User not found"));
|
.orElseThrow(() -> new RuntimeException("User not found"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configureFields() {
|
private void configureFormFields() {
|
||||||
datePicker.setValue(LocalDate.now());
|
datePicker.setValue(LocalDate.now());
|
||||||
breakMinutesField.setValue(30.0);
|
breakField.setValue(30.0);
|
||||||
targetMinutesField.setValue(480.0);
|
targetField.setValue(480.0);
|
||||||
|
statusCombo.setItems(DayStatus.values());
|
||||||
statusComboBox.setItems(DayStatus.values());
|
statusCombo.setValue(DayStatus.REMOTE);
|
||||||
statusComboBox.setValue(DayStatus.REMOTE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private HorizontalLayout createFormLayout() {
|
private HorizontalLayout buildFormLayout() {
|
||||||
return new HorizontalLayout(
|
return new HorizontalLayout(datePicker, startTimePicker, endTimePicker,
|
||||||
datePicker,
|
breakField, targetField, commentArea, statusCombo);
|
||||||
startTimePicker,
|
|
||||||
endTimePicker,
|
|
||||||
breakMinutesField,
|
|
||||||
targetMinutesField,
|
|
||||||
commentField,
|
|
||||||
statusComboBox
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private HorizontalLayout createButtonLayout() {
|
private HorizontalLayout buildButtonLayout() {
|
||||||
updateButton.setEnabled(false);
|
updateBtn.setEnabled(false);
|
||||||
deleteButton.setEnabled(false);
|
deleteBtn.setEnabled(false);
|
||||||
return new HorizontalLayout(saveButton, updateButton, deleteButton);
|
return new HorizontalLayout(saveBtn, updateBtn, deleteBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configureButtons() {
|
private void configureButtons() {
|
||||||
saveButton.addClickListener(e -> {
|
saveBtn.addClickListener(e -> saveEntry());
|
||||||
|
updateBtn.addClickListener(e -> updateEntry());
|
||||||
|
deleteBtn.addClickListener(e -> deleteEntry());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveEntry() {
|
||||||
if (!isDateAvailable(datePicker.getValue())) {
|
if (!isDateAvailable(datePicker.getValue())) {
|
||||||
Notification.show("An entry already exists for this date.");
|
Notification.show("An entry already exists for this date.");
|
||||||
return;
|
return;
|
||||||
@@ -109,43 +105,42 @@ public class TimeEntryView extends VerticalLayout {
|
|||||||
.date(datePicker.getValue())
|
.date(datePicker.getValue())
|
||||||
.startTime(startTimePicker.getValue())
|
.startTime(startTimePicker.getValue())
|
||||||
.endTime(endTimePicker.getValue())
|
.endTime(endTimePicker.getValue())
|
||||||
.pauseMinutes(breakMinutesField.getValue().intValue())
|
.pauseMinutes(breakField.getValue().intValue())
|
||||||
.targetMinutes(targetMinutesField.getValue().intValue())
|
.targetMinutes(targetField.getValue().intValue())
|
||||||
.status(statusComboBox.getValue())
|
.status(statusCombo.getValue())
|
||||||
.comment(commentField.getValue())
|
.comment(commentArea.getValue())
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
timeEntryService.save(entry);
|
timeEntryService.save(entry);
|
||||||
clearForm();
|
clearForm();
|
||||||
refreshGrid();
|
refreshGrid();
|
||||||
Notification.show("Entry saved");
|
Notification.show("Entry saved");
|
||||||
});
|
}
|
||||||
|
|
||||||
updateButton.addClickListener(e -> {
|
private void updateEntry() {
|
||||||
if (selectedEntry == null) return;
|
if (selectedEntry == null) return;
|
||||||
|
|
||||||
selectedEntry.setDate(datePicker.getValue());
|
selectedEntry.setDate(datePicker.getValue());
|
||||||
selectedEntry.setStartTime(startTimePicker.getValue());
|
selectedEntry.setStartTime(startTimePicker.getValue());
|
||||||
selectedEntry.setEndTime(endTimePicker.getValue());
|
selectedEntry.setEndTime(endTimePicker.getValue());
|
||||||
selectedEntry.setPauseMinutes(breakMinutesField.getValue().intValue());
|
selectedEntry.setPauseMinutes(breakField.getValue().intValue());
|
||||||
selectedEntry.setTargetMinutes(targetMinutesField.getValue().intValue());
|
selectedEntry.setTargetMinutes(targetField.getValue().intValue());
|
||||||
selectedEntry.setStatus(statusComboBox.getValue());
|
selectedEntry.setStatus(statusCombo.getValue());
|
||||||
selectedEntry.setComment(commentField.getValue());
|
selectedEntry.setComment(commentArea.getValue());
|
||||||
|
|
||||||
timeEntryService.save(selectedEntry);
|
timeEntryService.save(selectedEntry);
|
||||||
clearForm();
|
clearForm();
|
||||||
refreshGrid();
|
refreshGrid();
|
||||||
Notification.show("Entry updated");
|
Notification.show("Entry updated");
|
||||||
});
|
}
|
||||||
|
|
||||||
deleteButton.addClickListener(e -> {
|
private void deleteEntry() {
|
||||||
if (selectedEntry == null) return;
|
if (selectedEntry == null) return;
|
||||||
|
|
||||||
timeEntryService.delete(selectedEntry);
|
timeEntryService.delete(selectedEntry);
|
||||||
clearForm();
|
clearForm();
|
||||||
refreshGrid();
|
refreshGrid();
|
||||||
Notification.show("Entry deleted");
|
Notification.show("Entry deleted");
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void configureGrid() {
|
private void configureGrid() {
|
||||||
@@ -159,53 +154,49 @@ public class TimeEntryView extends VerticalLayout {
|
|||||||
entryGrid.addColumn(TimeEntry::getComment).setHeader("Comment");
|
entryGrid.addColumn(TimeEntry::getComment).setHeader("Comment");
|
||||||
entryGrid.addColumn(timeEntryService::calculateDeviation).setHeader("Deviation (min)");
|
entryGrid.addColumn(timeEntryService::calculateDeviation).setHeader("Deviation (min)");
|
||||||
|
|
||||||
entryGrid.asSingleSelect().addValueChangeListener(event -> {
|
entryGrid.asSingleSelect().addValueChangeListener(event -> populateForm(event.getValue()));
|
||||||
selectedEntry = event.getValue();
|
|
||||||
if (selectedEntry != null) {
|
|
||||||
datePicker.setValue(selectedEntry.getDate());
|
|
||||||
startTimePicker.setValue(selectedEntry.getStartTime());
|
|
||||||
endTimePicker.setValue(selectedEntry.getEndTime());
|
|
||||||
breakMinutesField.setValue((double) selectedEntry.getPauseMinutes());
|
|
||||||
targetMinutesField.setValue((double) selectedEntry.getTargetMinutes());
|
|
||||||
statusComboBox.setValue(selectedEntry.getStatus());
|
|
||||||
commentField.setValue(selectedEntry.getComment() != null ? selectedEntry.getComment() : "");
|
|
||||||
|
|
||||||
updateButton.setEnabled(true);
|
|
||||||
deleteButton.setEnabled(true);
|
|
||||||
saveButton.setEnabled(false);
|
|
||||||
} else {
|
|
||||||
updateButton.setEnabled(false);
|
|
||||||
deleteButton.setEnabled(false);
|
|
||||||
checkIfDateAlreadyExists();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshGrid() {
|
private void refreshGrid() {
|
||||||
entryGrid.setItems(timeEntryService.getEntriesForUser(currentUser));
|
entryGrid.setItems(timeEntryService.getEntriesForUser(currentUser));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void populateForm(TimeEntry entry) {
|
||||||
|
selectedEntry = entry;
|
||||||
|
|
||||||
|
if (entry != null) {
|
||||||
|
datePicker.setValue(entry.getDate());
|
||||||
|
startTimePicker.setValue(entry.getStartTime());
|
||||||
|
endTimePicker.setValue(entry.getEndTime());
|
||||||
|
breakField.setValue((double) entry.getPauseMinutes());
|
||||||
|
targetField.setValue((double) entry.getTargetMinutes());
|
||||||
|
statusCombo.setValue(entry.getStatus());
|
||||||
|
commentArea.setValue(entry.getComment() != null ? entry.getComment() : "");
|
||||||
|
|
||||||
|
updateBtn.setEnabled(true);
|
||||||
|
deleteBtn.setEnabled(true);
|
||||||
|
saveBtn.setEnabled(false);
|
||||||
|
} else {
|
||||||
|
clearForm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void clearForm() {
|
private void clearForm() {
|
||||||
selectedEntry = null;
|
selectedEntry = null;
|
||||||
datePicker.setValue(LocalDate.now());
|
datePicker.setValue(LocalDate.now());
|
||||||
startTimePicker.clear();
|
startTimePicker.clear();
|
||||||
endTimePicker.clear();
|
endTimePicker.clear();
|
||||||
breakMinutesField.setValue(30.0);
|
breakField.setValue(30.0);
|
||||||
targetMinutesField.setValue(480.0);
|
targetField.setValue(480.0);
|
||||||
statusComboBox.setValue(DayStatus.REMOTE);
|
statusCombo.setValue(DayStatus.REMOTE);
|
||||||
commentField.clear();
|
commentArea.clear();
|
||||||
updateButton.setEnabled(false);
|
updateBtn.setEnabled(false);
|
||||||
deleteButton.setEnabled(false);
|
deleteBtn.setEnabled(false);
|
||||||
checkIfDateAlreadyExists();
|
toggleSaveButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkIfDateAlreadyExists() {
|
private void toggleSaveButton() {
|
||||||
LocalDate date = datePicker.getValue();
|
saveBtn.setEnabled(isDateAvailable(datePicker.getValue()));
|
||||||
if (!isDateAvailable(date)) {
|
|
||||||
saveButton.setEnabled(false);
|
|
||||||
} else {
|
|
||||||
saveButton.setEnabled(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDateAvailable(LocalDate date) {
|
private boolean isDateAvailable(LocalDate date) {
|
||||||
|
|||||||
Reference in New Issue
Block a user