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