import java.util.Arrays; import java.util.Objects; /** * Array based storage for Resumes */ public class ArrayStorage { private Resume[] storage = new Resume[10_000]; private int size; public void clear() { Arrays.fill(storage, 0, size, null); size = 0; } public void update(Resume resume) { int index = getIndex(resume.getUuid()); if (index >= 0) { storage[index] = resume; } else { System.out.println("ERROR in method 'update' :" + resume.getUuid()); } } public void save(Resume resume) { int index = getIndex(resume.getUuid()); if (index >= 0) { System.out.println("ERROR in method 'save' :" + resume.getUuid()); } else { if (size < storage.length) { storage[size] = resume; size++; } else { System.out.println("ERROR in method 'save' :" + resume.getUuid() + " (storage backing array boundary has been reached)"); } } } public Resume get(String uuid) { int index = getIndex(uuid); if (index >= 0) { return storage[index]; } else { System.out.println("Invalid uuid in method 'get': " + uuid); return null; } } public void delete(String uuid) { int index = getIndex(uuid); if (index >= 0) { storage[index] = storage[size - 1]; storage[size - 1] = null; size--; } else { System.out.println("Invalid uuid in method 'delete': " + uuid); } } /** * @return array, contains only Resumes in storage (without null) */ public Resume[] getAll() { return Arrays.copyOf(storage, size); } public int size() { return size; } private int getIndex(String uuid) { for (int i = 0; i < size; i++) { if (Objects.equals(storage[i].getUuid(), uuid)) { return i; } } return -1; } }