import java.util.ArrayList; public class CredentialRepository implements CredentialRepositoryInterface{ private int idCounter = 0; private ArrayList credentials; public CredentialRepository() { this.credentials = new ArrayList(); } public int createNewCredential(String name, String password) { try { this.credentials.add(new Credential(name, password, this.idCounter++)); } catch(Exception fail) { System.err.println(fail.getMessage()); } return this.getListSize(); } @Override public Credential getCredentialsViaName(String needle) { for(int c = 0; c < this.getListSize(); c++) { Credential credential = this.credentials.get(c); if(credential.getName().equals(needle)) return credential; } return null; } @Override public Credential getCredentialsViaId(int id) { try{ return this.credentials.get(id); } catch (IndexOutOfBoundsException outOfBoundsException) { return null; } } /* 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 */ @Override public void updatePassword(int index, String newPassword) { try{ this.credentials.get(index).upDatePassword(newPassword); } catch (IndexOutOfBoundsException outOfBoundsException) { System.err.println("No Credential with Index" + index + " found"); } } public void updateUsername(int index, String newUsername){ try{ this.credentials.get(index).updateUsername(newUsername); } catch (IndexOutOfBoundsException outOfBoundsException) { System.err.println("No Credential with Index" + index + " found"); } } @Override public void delete(int index) { this.credentials.remove(index); } private int getListSize() { return this.credentials.size(); } }