diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 9ad367c..3dbf59e 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -4,6 +4,7 @@ on:
push:
branches:
- main
+ - release/*
workflow_dispatch: # Allows manual triggering of the workflow
@@ -33,16 +34,6 @@ jobs:
java-version: '25'
- name: Run Tests
run: mvn clean test
- - name: Upload Test Results
- uses: actions/upload-artifact@v3
- with:
- name: surefire-reports
- path: target/surefire-reports/
- - name: Upload Coverage Report
- uses: actions/upload-artifact@v3
- with:
- name: jacoco-report
- path: target/jacoco/coverage-reports/jacoco.xml
package:
name: Package
@@ -62,15 +53,4 @@ jobs:
name: packaged-app
path: target/Help-Me-Help-1.0-SNAPSHOT-jar-with-dependencies.jar
- deployPages:
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- runs-on: self-hosted
- steps:
- - uses: actions/checkout@v3
- - name: Set up JDK
- uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '25'
+
diff --git a/.gitignore b/.gitignore
index bee94ec..48a9ee7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
*.war
*.ear
*.nar
+target/
##############################
## Maven
@@ -37,3 +38,8 @@ out/
##############################
*.db
*.DS_Store
+
+##############################
+## VSCode
+##############################
+.vscode/
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index dc3b895..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "java.configuration.updateBuildConfiguration": "interactive"
-}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4895163..b0f6764 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,6 +32,12 @@
javafx-controls
${javafx.version}
+
+
+ org.springframework.security
+ spring-security-crypto
+ 7.0.2
+
diff --git a/src/main/java/edu/group5/app/model/Repository.java b/src/main/java/edu/group5/app/model/Repository.java
new file mode 100644
index 0000000..6850bfe
--- /dev/null
+++ b/src/main/java/edu/group5/app/model/Repository.java
@@ -0,0 +1,22 @@
+package edu.group5.app.model;
+
+import java.util.Map;
+
+/**
+ * Represents a repository
+ */
+public abstract class Repository {
+ protected final Map content;
+
+ public Repository(Map content) {
+ this.content = content;
+ }
+
+ /**
+ * Gets the content of the repo
+ * @return content of the repo
+ */
+ public Map getContent() {
+ return content;
+ }
+}
diff --git a/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java
new file mode 100644
index 0000000..14a77d0
--- /dev/null
+++ b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java
@@ -0,0 +1,38 @@
+package edu.group5.app.model.organization;
+
+import edu.group5.app.model.Repository;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Handles the business logic associated with organizations
+ */
+public class OrganizationRepository extends Repository {
+ /**
+ * Creates a new Organization Repository
+ *
+ * @param content holds all current organizations in the repository; must not be null
+ * @throws NullPointerException if content is null
+ */
+ public OrganizationRepository(Map content) {
+ super(Objects.requireNonNull(content, "content cannot be null"));
+ }
+
+ /**
+ * Gets all trusted organizations in the repository
+ * @return all organizations with trusted = true
+ */
+ public Map getTrustedOrganizations() {
+ Map trustedOrganizations = new HashMap<>();
+
+ content.forEach((orgNr, org) -> {
+ if (org.trusted()) {
+ trustedOrganizations.put(orgNr, org);
+ }
+ });
+
+ return trustedOrganizations;
+ }
+}
diff --git a/src/test/java/edu/group5/app/model/organization/OrganizationRepositoryTest.java b/src/test/java/edu/group5/app/model/organization/OrganizationRepositoryTest.java
new file mode 100644
index 0000000..3a3392e
--- /dev/null
+++ b/src/test/java/edu/group5/app/model/organization/OrganizationRepositoryTest.java
@@ -0,0 +1,48 @@
+package edu.group5.app.model.organization;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class OrganizationRepositoryTest {
+
+ private OrganizationRepository repository;
+
+ @BeforeEach
+ void setUp() {
+ Map content = new HashMap<>();
+
+ Organization trustedOrganization1 = new Organization(1, "Trusted Org1", true, "org.com", true, "description");
+ Organization trustedOrganization2 = new Organization(2, "Trusted Org2", true, "org.com", true, "description");
+ Organization untrustedOrganization1 = new Organization(3, "Untrusted Org1", false, "org.com", true, "description");
+ Organization untrustedOrganization2 = new Organization(4, "Untrusted Org2", false, "org.com", true, "description");
+
+ content.put(1, trustedOrganization1);
+ content.put(2, trustedOrganization2);
+ content.put(3, untrustedOrganization1);
+ content.put(4, untrustedOrganization2);
+
+ repository = new OrganizationRepository(content);
+ }
+
+ @Test
+ void constructor_ThrowsWhenContentIsNull() {
+ assertThrows(NullPointerException.class, () -> new OrganizationRepository(null));
+ }
+
+ @Test
+ void getTrustedOrganizations_OnlyReturnsTrustedOrganizations() {
+ Map trusted = repository.getTrustedOrganizations();
+
+ assertEquals(2, trusted.size());
+ assertTrue(trusted.containsKey(1));
+ assertTrue(trusted.containsKey(2));
+ assertFalse(trusted.containsKey(3));
+ assertFalse(trusted.containsKey(4));
+ assertTrue(trusted.values().stream().allMatch(Organization::trusted));
+ }
+}
\ No newline at end of file
diff --git a/target/classes/edu/group5/app/App.class b/target/classes/edu/group5/app/App.class
deleted file mode 100644
index e3679e1..0000000
Binary files a/target/classes/edu/group5/app/App.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/control/Wrapper.class b/target/classes/edu/group5/app/control/Wrapper.class
deleted file mode 100644
index cbe1488..0000000
Binary files a/target/classes/edu/group5/app/control/Wrapper.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/model/donation/Donation.class b/target/classes/edu/group5/app/model/donation/Donation.class
deleted file mode 100644
index 687d00e..0000000
Binary files a/target/classes/edu/group5/app/model/donation/Donation.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/model/organization/Organization.class b/target/classes/edu/group5/app/model/organization/Organization.class
deleted file mode 100644
index af118dd..0000000
Binary files a/target/classes/edu/group5/app/model/organization/Organization.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/model/user/User.class b/target/classes/edu/group5/app/model/user/User.class
deleted file mode 100644
index 950b2f7..0000000
Binary files a/target/classes/edu/group5/app/model/user/User.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/utils/Utilities.class b/target/classes/edu/group5/app/utils/Utilities.class
deleted file mode 100644
index 9fb7579..0000000
Binary files a/target/classes/edu/group5/app/utils/Utilities.class and /dev/null differ
diff --git a/target/classes/edu/group5/app/view/View.class b/target/classes/edu/group5/app/view/View.class
deleted file mode 100644
index bc21f75..0000000
Binary files a/target/classes/edu/group5/app/view/View.class and /dev/null differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
deleted file mode 100644
index 28e9804..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ /dev/null
@@ -1 +0,0 @@
-edu\group5\app\App.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
deleted file mode 100644
index 16a5464..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ /dev/null
@@ -1 +0,0 @@
-C:\Users\marjo\Documents\Github\Help-Me-Help\src\main\java\edu\group5\app\App.java
diff --git a/target/test-classes/edu/group5/app/AppTest.class b/target/test-classes/edu/group5/app/AppTest.class
deleted file mode 100644
index 4c66499..0000000
Binary files a/target/test-classes/edu/group5/app/AppTest.class and /dev/null differ