Skip to content

Commit

Permalink
refactor: changed file names and changed MainController to Navigation…
Browse files Browse the repository at this point in the history
…Controller and combined all other controllers in to User-, Donation-, and OrganizationController
  • Loading branch information
emilfa committed Mar 24, 2026
2 parents c3b2cac + 44b0811 commit fc087d7
Show file tree
Hide file tree
Showing 24 changed files with 670 additions and 348 deletions.
53 changes: 47 additions & 6 deletions src/main/java/edu/group5/app/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,71 @@
import edu.group5.app.control.MainController;
import edu.group5.app.control.wrapper.DbWrapper;
import edu.group5.app.control.wrapper.OrgApiWrapper;
import edu.group5.app.model.donation.DonationRepository;
import edu.group5.app.model.donation.DonationService;
import edu.group5.app.model.organization.OrganizationRepository;
import edu.group5.app.model.organization.OrganizationService;
import edu.group5.app.model.user.UserRepository;
import edu.group5.app.model.user.UserService;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

import java.util.List;

/**
* Hello world!
* Main entry point for the Help-Me-Help charity donation application.
* Handles database connection, data loading, and application setup.
*/
public class App extends Application {
@Override
public void start(Stage stage) throws InterruptedException {
public void start(Stage stage) {
DbWrapper dbWrapper = new DbWrapper(true);
OrgApiWrapper orgApiWrapper = new OrgApiWrapper("https://app.innsamlingskontrollen.no/api/public/v1/all");
orgApiWrapper.importData();
OrganizationRepository organizationRepository = new OrganizationRepository(orgApiWrapper.getData());

MainController controller = new MainController();
if (!dbWrapper.connect()) {
System.err.println("Failed to connect to database");
return;
}

// Load data from database
List<Object[]> userData = dbWrapper.importUsers();
List<Object[]> donationData = dbWrapper.fetchAllDonations();
dbWrapper.disconnect();

// Load organizations from API
Object[] organizationData = new Object[0];
try {
if (orgApiWrapper.importData()) {
organizationData = orgApiWrapper.getData();
}
} catch (InterruptedException e) {
System.err.println("Failed to load organization data: " + e.getMessage());
}

// Create repositories with fetched data
UserRepository userRepository = new UserRepository(userData);
DonationRepository donationRepository = new DonationRepository(donationData);
OrganizationRepository organizationRepository = new OrganizationRepository(organizationData);

// Create services (backend wiring)
UserService userService = new UserService(userRepository);
DonationService donationService = new DonationService(donationRepository, organizationRepository);
OrganizationService organizationService = new OrganizationService(organizationRepository);

MainController controller = new MainController(userService, donationService, organizationService);

Scene scene = controller.getMainView().getScene();
controller.showHomePage();
controller.showLoginPage();

stage.getIcons().add(new Image(getClass().getResource("/header/images/hmh-logo.png").toExternalForm()));
stage.setTitle("Help-Me-Help");
stage.setScene(scene);
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}
4 changes: 4 additions & 0 deletions src/main/java/edu/group5/app/control/DonationController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package edu.group5.app.control;

public class DonationController {
}
67 changes: 0 additions & 67 deletions src/main/java/edu/group5/app/control/MainController.java

This file was deleted.

99 changes: 99 additions & 0 deletions src/main/java/edu/group5/app/control/NavigationController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package edu.group5.app.control;

import edu.group5.app.model.donation.DonationService;
import edu.group5.app.model.organization.Organization;
import edu.group5.app.model.organization.OrganizationService;
import edu.group5.app.model.user.User;
import edu.group5.app.model.user.UserService;
import edu.group5.app.view.ViewManager;

import java.math.BigDecimal;

public class MainController {
private final ViewManager view;

private final UserService userService;
private final DonationService donationService;
private final OrganizationService organizationService;

private final UserController userController;

private User currentUser;
private Organization currentOrganization;
private BigDecimal currentDonationAmount;

public MainController(UserService userService, DonationService donationService,
OrganizationService organizationService) {
this.userService = userService;
this.donationService = donationService;
this.organizationService = organizationService;

this.userController = new UserController(this, userService, donationService, organizationService);

this.view = new ViewManager(this);
}

public ViewManager getMainView() {
return this.view;
}

public User getCurrentUser() {
return this.currentUser;
}

public void setCurrentUser(User user) {
this.currentUser = user;
}

public Organization getCurrentOrganization() {
return this.currentOrganization;
}

public void setCurrentOrganization(Organization organization) {
this.currentOrganization = organization;
}

public BigDecimal getCurrentDonationAmount() {
return this.currentDonationAmount;
}

public void setCurrentDonationAmount(BigDecimal amount) {
this.currentDonationAmount = amount;
}

public void showHomePage() {
view.showHomePage();
}

public void showLoginPage() {
view.showLoginPage();
}

public void showSignInPage() {
view.showSignInPage();
}

public void showPaymentCompletePage() {
view.showPaymentCompletePage();
}

public void showCausesPage() {
view.showCausesPage();
}

public void showOrganizationPage() {
view.showOrganizationPage();
}

public void showDonationPage() {
view.showDonationPage();
}

public void showAboutUsPage() {
view.showAboutUsPage();
}

public void showUserPage() {
view.showUserPage();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package edu.group5.app.control;

public class OrganizationController {
}
66 changes: 0 additions & 66 deletions src/main/java/edu/group5/app/control/PageController.java

This file was deleted.

4 changes: 4 additions & 0 deletions src/main/java/edu/group5/app/control/UserController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package edu.group5.app.control;

public class UserController {
}
6 changes: 3 additions & 3 deletions src/main/java/edu/group5/app/control/wrapper/DbWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ public int exportUsers(List<Object[]> data) {
return rowsAffected;
}

private List<Object[]> importDonations() {
public List<Object[]> fetchAllDonations() {
return this.importDonations(0, true);
}

Expand Down Expand Up @@ -182,8 +182,8 @@ private List<Object[]> importDonations(int user_id, boolean all) {
return this.donations;
}

public int exportDonations(List<Object[]> data) {
this.importDonations();
public int exportDonations(List<Object[]> data) {
this.fetchAllDonations();

if (data == null) {
throw new IllegalArgumentException("data can't be null");
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/edu/group5/app/model/AppState.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package edu.group5.app.model;

public class AppState {
}
Loading

0 comments on commit fc087d7

Please sign in to comment.