From 6fc18633da30f995737a0c59dcc26eafb84c8cd9 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:37:37 +0100 Subject: [PATCH 01/12] Removes unused code --- src/main/java/CredentialRepository.java | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 6a048cc..0c14d7c 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -89,23 +89,6 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } -/* - this function will be required in the future for catching the left-shift in the arrayList - after one entry was deleted. welp, maybe it won't. can't tell and i've no time atm to - finish this - - - private int mapIndexToListCounter(int needle) { - for(int c = 0; c Date: Thu, 17 Feb 2022 19:40:59 +0100 Subject: [PATCH 02/12] Inserting JavaDoc --- src/main/java/CredentialRepository.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 0c14d7c..9955d84 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -1,10 +1,20 @@ import java.util.ArrayList; +/** + * Credential Repository for handling user credentials + * @author Claudia Metzler + */ + public class CredentialRepository implements CredentialRepositoryInterface{ private int idCounter = 0; private ArrayList credentials; + /** + * Konstruktor + * + * Initializes instance variable ArrayList + */ public CredentialRepository() { this.credentials = new ArrayList(); From 909010aac4852bcaa6d2d56f4a9eadbd492f8130 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:43:09 +0100 Subject: [PATCH 03/12] Inserting JavaDoc for credential search function --- src/main/java/CredentialRepository.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 9955d84..9796b04 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -20,6 +20,14 @@ public class CredentialRepository implements CredentialRepositoryInterface{ this.credentials = new ArrayList(); } + + /** + * Create a new Set of User credentials + * @param name + * @param password + * @return size of repositoy - arraylist for checking + */ + public int createNewCredential(String name, String password) { try { @@ -33,6 +41,12 @@ public class CredentialRepository implements CredentialRepositoryInterface{ return this.getListSize(); } + /** + * Function to return a specific Credential via Name input + * @param needle [ aka to-search-for ] + * @return usercredential | NULL + */ + @Override public Credential getCredentialsViaName(String needle) { From da4509f0fcca1db7262297bf6c00a1705b9ae7d3 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:44:10 +0100 Subject: [PATCH 04/12] Inserting JavaDoc for credential ID search --- src/main/java/CredentialRepository.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 9796b04..6922ae8 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -62,6 +62,12 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } + /** + * Function to return a specific Credential via ID + * @param id + * @return usercredential | NULL + */ + @Override public Credential getCredentialsViaId(int id) { From 66b7b880afe34a851dad4748b8deeb588fb0b42b Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:46:21 +0100 Subject: [PATCH 05/12] Inserting JavaDoc to delete credential --- src/main/java/CredentialRepository.java | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 6922ae8..b51eb12 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -81,13 +81,11 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } - /* - The next 3 functions assume you already have successfully - pulled a credential from the repository and now want to edit it. - Thus, these functions require you to pass the desired credential's index + /** + * Function to update userpassword, assuming we already know the userid + * @param index + * @param newPassword */ - - @Override public void updatePassword(int index, String newPassword) { @@ -101,6 +99,12 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } + + /** + * Function to update username analoge to updatePassword + * @param index + * @param newUsername + */ public void updateUsername(int index, String newUsername){ try{ @@ -112,6 +116,11 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } } + /** + * Deletion function for credentials + * Will immediately delete - double check for user permission + * @param index + */ @Override public void delete(int index) { From de28f184b3046f5e807c128f40bf335d4190ef02 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:47:03 +0100 Subject: [PATCH 06/12] Inserting JavaDoc for list size helperfunction --- src/main/java/CredentialRepository.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index b51eb12..4c04418 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -128,6 +128,11 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } + /** + * helper function to check list size after insertion / deletion + * @return + */ + private int getListSize() { return this.credentials.size(); From 8b6aedac2f22e2589e7317e0a925681784ac1af5 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 19:48:31 +0100 Subject: [PATCH 07/12] Implements helper function for serialization --- src/main/java/CredentialRepository.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 4c04418..3406ceb 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -138,6 +138,16 @@ public class CredentialRepository implements CredentialRepositoryInterface{ return this.credentials.size(); } + /** + * Helper function for serialization + * @return + */ + + private String getWorkingDirectory() + { + return System.getProperty("user.dir"); + } + } From 904e9de7b0d3e0b0e509732443d79fdf8c3e21e9 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 20:02:53 +0100 Subject: [PATCH 08/12] Implements helper function for serialization --- src/main/java/CredentialRepository.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 3406ceb..aff2d70 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -1,3 +1,7 @@ +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; import java.util.ArrayList; /** @@ -128,6 +132,25 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } + /** + * Function for serialization of all Credentials + * @param fileName + */ + + public void serializeObject(String fileName) + { + if(fileName.equals("")) return; + + try { + FileOutputStream file = new FileOutputStream(this.getWorkingDirectory() + fileName + ".claud11"); + ObjectOutputStream out = new ObjectOutputStream(file); + out.writeObject(this.credentials); + } catch (Exception fail) { + System.err.println("Serialization failed!"); + } + } + + /** * helper function to check list size after insertion / deletion * @return From c017222eb98afea81cbbc298c066ea03131e495a Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 20:13:59 +0100 Subject: [PATCH 09/12] Implements Serialization Logic for Credentials --- src/main/java/Credential.java | 4 +++- src/main/java/CredentialList.java | 4 ++++ src/main/java/CredentialRepository.java | 8 +++----- 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 src/main/java/CredentialList.java diff --git a/src/main/java/Credential.java b/src/main/java/Credential.java index 506fdb7..913780c 100644 --- a/src/main/java/Credential.java +++ b/src/main/java/Credential.java @@ -1,4 +1,6 @@ -public class Credential { +import java.io.Serializable; + +public class Credential implements Serializable { private String name, password; private int id; diff --git a/src/main/java/CredentialList.java b/src/main/java/CredentialList.java new file mode 100644 index 0000000..f81053f --- /dev/null +++ b/src/main/java/CredentialList.java @@ -0,0 +1,4 @@ +import java.io.Serializable; +import java.util.ArrayList; + +public class CredentialList extends ArrayList implements Serializable{} diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index aff2d70..242acdb 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -1,8 +1,5 @@ -import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.IOException; import java.io.ObjectOutputStream; -import java.util.ArrayList; /** * Credential Repository for handling user credentials @@ -12,7 +9,7 @@ import java.util.ArrayList; public class CredentialRepository implements CredentialRepositoryInterface{ private int idCounter = 0; - private ArrayList credentials; + private CredentialList credentials; /** * Konstruktor @@ -21,7 +18,7 @@ public class CredentialRepository implements CredentialRepositoryInterface{ */ public CredentialRepository() { - this.credentials = new ArrayList(); + this.credentials = new CredentialList(); } @@ -147,6 +144,7 @@ public class CredentialRepository implements CredentialRepositoryInterface{ out.writeObject(this.credentials); } catch (Exception fail) { System.err.println("Serialization failed!"); + fail.printStackTrace(); } } From 1e5c8a7527c35f05d78bae92bedb27a5cd005a6b Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 20:14:24 +0100 Subject: [PATCH 10/12] Implements Tests for Serializing Objects --- src/test/java/CredentialRepositoryTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/CredentialRepositoryTest.java b/src/test/java/CredentialRepositoryTest.java index 9feb527..56b2aba 100644 --- a/src/test/java/CredentialRepositoryTest.java +++ b/src/test/java/CredentialRepositoryTest.java @@ -81,4 +81,13 @@ class CredentialRepositoryTest { Assertions.assertEquals(null, this.credentialRepository.getCredentialsViaId(0)); } + @Test + void testSerializeObject(){ + + this.credentialRepository.createNewCredential("mock", "mock"); + this.credentialRepository.serializeObject("testName"); + + } + + } From f6e8fb03d33c7e96dd5cee426e03fb24250ef588 Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 20:19:29 +0100 Subject: [PATCH 11/12] Implements Deserialization Logic --- src/main/java/CredentialRepository.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/CredentialRepository.java b/src/main/java/CredentialRepository.java index 242acdb..d37684d 100644 --- a/src/main/java/CredentialRepository.java +++ b/src/main/java/CredentialRepository.java @@ -1,4 +1,6 @@ +import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** @@ -148,6 +150,28 @@ public class CredentialRepository implements CredentialRepositoryInterface{ } } + /** + * Function to load serialized Objects from hard drive by path + * @param fileName + */ + public void deserializeObjects(String fileName) + { + if(fileName.equals("")) return; + + try { + FileInputStream file = new FileInputStream(this.getWorkingDirectory() + fileName + ".claud11"); + ObjectInputStream in = new ObjectInputStream(file); + + this.credentials = (CredentialList)in.readObject(); + + in.close(); + file.close(); + + } catch(Exception fail) + { + System.err.println("Loading of CredentialRepository failed"); + } + } /** * helper function to check list size after insertion / deletion From 25b7c90b5218335362bb7a8d18fd7dce6c87330d Mon Sep 17 00:00:00 2001 From: fdai5728 Date: Thu, 17 Feb 2022 20:27:46 +0100 Subject: [PATCH 12/12] Unittest that prooves saving and loading work properly --- src/test/java/CredentialRepositoryTest.java | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/test/java/CredentialRepositoryTest.java b/src/test/java/CredentialRepositoryTest.java index 56b2aba..60d2ee5 100644 --- a/src/test/java/CredentialRepositoryTest.java +++ b/src/test/java/CredentialRepositoryTest.java @@ -86,8 +86,34 @@ class CredentialRepositoryTest { this.credentialRepository.createNewCredential("mock", "mock"); this.credentialRepository.serializeObject("testName"); - } + @Test + void testLoadingOfSerializedObject(){ + + this.credentialRepository.createNewCredential("mock1", "mock1"); + this.credentialRepository.createNewCredential("mock2", "mock2"); + this.credentialRepository.createNewCredential("mock3", "mock3"); + + Credential temporary1 = this.credentialRepository.getCredentialsViaId(0); + Credential temporary2 = this.credentialRepository.getCredentialsViaId(1); + Credential temporary3 = this.credentialRepository.getCredentialsViaId(2); + + this.credentialRepository.serializeObject("unitTest_Deserialization"); + + //delete entries to proove we really load something + this.credentialRepository.delete(0); + this.credentialRepository.delete(0); + Assertions.assertEquals(null, this.credentialRepository.getCredentialsViaName("mock2") ); + + //load and deserialize object and proove objects are back + this.credentialRepository.deserializeObjects("unitTest_Deserialization"); + Assertions.assertEquals(temporary1.getName(), this.credentialRepository.getCredentialsViaName("mock1").getName()); + Assertions.assertEquals(temporary1.getPassword(), this.credentialRepository.getCredentialsViaName("mock1").getPassword()); + Assertions.assertEquals(temporary2.getName(), this.credentialRepository.getCredentialsViaName("mock2").getName()); + Assertions.assertEquals(temporary2.getPassword(), this.credentialRepository.getCredentialsViaName("mock2").getPassword()); + Assertions.assertEquals(temporary3.getName(), this.credentialRepository.getCredentialsViaName("mock3").getName()); + Assertions.assertEquals(temporary3.getPassword(), this.credentialRepository.getCredentialsViaName("mock3").getPassword()); + } }