diff --git a/.gitignore b/.gitignore
index 48a9ee7..07e3800 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,10 @@ out/
## VSCode
##############################
.vscode/
+
+##############################
+## Misc
+##############################
+.settings/*
+.project
+.classpath
diff --git a/pom.xml b/pom.xml
index 5f7773d..6320c10 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,14 @@
commons-logging
1.3.5
-
+
+
+ tools.jackson.core
+ jackson-databind
+ 3.1.0
+ compile
+
+
@@ -91,6 +98,28 @@
maven-javadoc-plugin
3.12.0
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.6.1
+
+
+ package
+
+ shade
+
+
+
+
+ edu.group5.app.App
+
+
+
+
+
+
diff --git a/src/main/java/edu/group5/app/App.java b/src/main/java/edu/group5/app/App.java
index 7fd22a6..4f4364f 100644
--- a/src/main/java/edu/group5/app/App.java
+++ b/src/main/java/edu/group5/app/App.java
@@ -1,10 +1,15 @@
package edu.group5.app;
+import edu.group5.app.control.OrgAPIWrapper;
+
/**
* Hello world!
*/
public class App {
- public static void main(String[] args) {
- System.out.println("Hello World!");
- }
+ public static void main(String[] args) {
+ OrgAPIWrapper orgWrap = new OrgAPIWrapper("https://app.innsamlingskontrollen.no/api/public/v1/all");
+ System.out.println();
+ System.out.println();
+ orgWrap.importData();
+ }
}
diff --git a/src/main/java/edu/group5/app/control/OrgAPIWrapper.java b/src/main/java/edu/group5/app/control/OrgAPIWrapper.java
new file mode 100644
index 0000000..9123c69
--- /dev/null
+++ b/src/main/java/edu/group5/app/control/OrgAPIWrapper.java
@@ -0,0 +1,42 @@
+package edu.group5.app.control;
+
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+
+import tools.jackson.databind.ObjectMapper;
+
+public class OrgAPIWrapper extends Wrapper {
+ private String urlString;
+ private Object[] data;
+
+ public OrgAPIWrapper(String urlString) {
+ this.urlString = urlString;
+ }
+
+ @Override
+ public boolean importData() {
+ URI uri = URI.create(this.urlString);
+ HttpClient client = HttpClient.newHttpClient();
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(uri)
+ .GET()
+ .build();
+
+ try {
+ HttpResponse response = client.send(
+ request, HttpResponse.BodyHandlers.ofString());
+ this.data = new ObjectMapper().readValue(response.body(), Object[].class);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ @Override
+ public Object[] getData() {
+ return this.data;
+ }
+}
diff --git a/src/main/java/edu/group5/app/control/Wrapper.java b/src/main/java/edu/group5/app/control/Wrapper.java
index 9655c26..e8a8365 100644
--- a/src/main/java/edu/group5/app/control/Wrapper.java
+++ b/src/main/java/edu/group5/app/control/Wrapper.java
@@ -1,5 +1,11 @@
package edu.group5.app.control;
-public class Wrapper {
-
+abstract class Wrapper {
+
+ protected Wrapper() {
+ }
+
+ public abstract boolean importData();
+
+ public abstract Object getData();
}
diff --git a/src/main/java/edu/group5/app/model/Repository.java b/src/main/java/edu/group5/app/model/Repository.java
index 6850bfe..87d981a 100644
--- a/src/main/java/edu/group5/app/model/Repository.java
+++ b/src/main/java/edu/group5/app/model/Repository.java
@@ -6,10 +6,9 @@
* Represents a repository
*/
public abstract class Repository {
- protected final Map content;
+ protected Map content;
- public Repository(Map content) {
- this.content = content;
+ protected Repository() {
}
/**
diff --git a/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java
index 14a77d0..98e2f0a 100644
--- a/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java
+++ b/src/main/java/edu/group5/app/model/organization/OrganizationRepository.java
@@ -1,6 +1,7 @@
package edu.group5.app.model.organization;
import edu.group5.app.model.Repository;
+import tools.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
@@ -10,15 +11,34 @@
* 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"));
- }
+
+ @SuppressWarnings("unchecked")
+ public OrganizationRepository(Object[] input) {
+
+ if (input == null) {
+ throw new NullPointerException("Input cannot be null");
+ }
+ for (Object obj : input) {
+ Map map = (Map) obj;
+
+ int orgNumber = Integer.parseInt((String) map.get("org_number"));
+ String name = (String) map.get("name");
+
+ boolean trusted =
+ "approved".equalsIgnoreCase((String) map.get("status"));
+ String url = (String) map.get("url");
+
+ boolean isPreApproved = (Boolean) map.get("is_pre_approved");
+
+ Organization organization = new Organization(
+ orgNumber, name, trusted, url,
+ isPreApproved,
+ "" // description not included in API
+ );
+
+ content.put(orgNumber, organization);
+ }
+}
/**
* Gets all trusted organizations in the repository
diff --git a/src/main/java/edu/group5/app/model/user/UserService.java b/src/main/java/edu/group5/app/model/user/UserService.java
new file mode 100644
index 0000000..5497e1a
--- /dev/null
+++ b/src/main/java/edu/group5/app/model/user/UserService.java
@@ -0,0 +1,45 @@
+package edu.group5.app.model.user;
+
+public class UserService {
+ private UserRepository userRepository;
+
+
+ public UserService(UserRepository userRepository) {
+ if (userRepository == null) {
+ throw new IllegalArgumentException("UserRepository cannot be null");
+ }
+ this.userRepository = userRepository;
+ }
+
+ public boolean registerUser(String role, String firstName, String lastName,
+ String email, String passwordHash) {
+ if (role == null || role.trim().isEmpty() ||
+ firstName == null || firstName.trim().isEmpty() ||
+ lastName == null || lastName.trim().isEmpty() ||
+ email == null || email.trim().isEmpty() ||
+ passwordHash == null || passwordHash.trim().isEmpty()) {
+ return false;
+ }
+ User user;
+ if (role.equalsIgnoreCase("Customer")) {
+ user = new Customer(0, firstName, lastName, email, passwordHash);
+ }
+ userRepository.addUser(user);
+ return true;
+ }
+
+ public boolean login(String email, char[] password) {
+ if (email == null || email.trim().isEmpty() || password == null) {
+ return false;
+ }
+ User user = userRepository.findByEmail(email);
+ if (user == null) {
+ return false;
+ }
+ String passwordString = new String(password);
+ if (user.verifyPassword(passwordString)) {
+ return true;
+ }
+ return false;
+}
+}