Skip to content

Commit 8a745df

Browse files
committed
added default reflection class, added AbstractArrayStorTest
1 parent fbd6d54 commit 8a745df

12 files changed

Lines changed: 183 additions & 39 deletions

src/ru/javawebinar/basejava/MainArray.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
* (just run, no need to understand)
1414
*/
1515
public class MainArray {
16-
private final static Storage ARRAY_STORAGE = new ArrayStorage();
16+
private static final Storage ARRAY_STORAGE = new ArrayStorage();
1717

1818
public static void main(String[] args) throws IOException {
1919
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
20-
Resume r;
20+
Resume resume;
2121
while (true) {
2222
System.out.print("Введите одну из команд - (list | size | save uuid | update uuid | delete uuid " +
2323
"| get uuid | clear | exit): ");
@@ -38,15 +38,13 @@ public static void main(String[] args) throws IOException {
3838
System.out.println(ARRAY_STORAGE.size());
3939
break;
4040
case "save":
41-
r = new Resume();
42-
r.setUuid(uuid);
43-
ARRAY_STORAGE.save(r);
41+
resume = new Resume(uuid);
42+
ARRAY_STORAGE.save(resume);
4443
printAll();
4544
break;
4645
case "update":
47-
r = new Resume();
48-
r.setUuid(uuid);
49-
ARRAY_STORAGE.update(r);
46+
resume = new Resume(uuid);
47+
ARRAY_STORAGE.update(resume);
5048
break;
5149
case "delete":
5250
ARRAY_STORAGE.delete(uuid);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package ru.javawebinar.basejava;
2+
3+
import ru.javawebinar.basejava.model.Resume;
4+
5+
import java.lang.reflect.Field;
6+
7+
public class MainReflection {
8+
9+
public static void main(String[] args) throws IllegalAccessException {
10+
Resume r = new Resume();
11+
Field field = r.getClass().getDeclaredFields()[0];
12+
field.setAccessible(true);
13+
System.out.println(field.getName());
14+
System.out.println(field.get(r));
15+
field.set(r, "new_uuid");
16+
//System.out.println(field(r));
17+
// TODO : invoke r.toString via reflection
18+
System.out.println(r);
19+
}
20+
}

src/ru/javawebinar/basejava/MainTestArrayStorage.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,12 @@ public class MainTestArrayStorage {
88
static final Storage ARRAY_STORAGE = new SortedArrayStorage();
99

1010
public static void main(String[] args) {
11-
final Resume r1 = new Resume();
12-
r1.setUuid("uuid1");
13-
final Resume r2 = new Resume();
14-
r2.setUuid("uuid2");
15-
final Resume r6 = new Resume();
16-
r6.setUuid("uuid6");
17-
final Resume r3 = new Resume();
18-
r3.setUuid("uuid3");
19-
final Resume r4 = new Resume();
20-
r4.setUuid("uuid3");
21-
final Resume r5 = new Resume();
22-
r5.setUuid("uuid5");
11+
final Resume r1 = new Resume("uuid1");
12+
final Resume r2 = new Resume("uuid2");
13+
final Resume r6 = new Resume("uuid6");
14+
final Resume r3 = new Resume("uuid3");
15+
final Resume r4 = new Resume("uuid3");
16+
final Resume r5 = new Resume("uuid5");
2317

2418
ARRAY_STORAGE.save(r1);
2519
ARRAY_STORAGE.save(r2);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ru.javawebinar.basejava.exception;
2+
3+
public class ExistStorageException extends StorageException{
4+
public ExistStorageException(String uuid) {
5+
super("Резюме уже существует ID:" + uuid, uuid);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ru.javawebinar.basejava.exception;
2+
3+
public class NotExistStorageException extends StorageException{
4+
public NotExistStorageException(String uuid) {
5+
super("Не найдено резюме ID:" + uuid, uuid);
6+
}
7+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package ru.javawebinar.basejava.exception;
2+
3+
public class StorageException extends RuntimeException{
4+
private final String uuid;
5+
6+
public StorageException(String message, String uuid) {
7+
super(message);
8+
this.uuid = uuid;
9+
}
10+
11+
public String getUuid() {
12+
return uuid;
13+
}
14+
}

src/ru/javawebinar/basejava/model/Resume.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
package ru.javawebinar.basejava.model;
22

3+
import java.util.UUID;
4+
35
public class Resume implements Comparable<Resume>{
46

5-
private String uuid;
7+
private final String uuid;
68

7-
public String getUuid() {
8-
return uuid;
9+
public Resume(){
10+
this(UUID.randomUUID().toString());
911
}
1012

11-
public void setUuid(String uuid) {
13+
public Resume(String uuid) {
1214
this.uuid = uuid;
1315
}
1416

17+
public String getUuid() {
18+
return uuid;
19+
}
20+
1521
@Override
1622
public boolean equals(Object o) {
1723
if (this == o) return true;

src/ru/javawebinar/basejava/storage/AbstractArrayStorage.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package ru.javawebinar.basejava.storage;
22

3+
import ru.javawebinar.basejava.exception.ExistStorageException;
4+
import ru.javawebinar.basejava.exception.NotExistStorageException;
5+
import ru.javawebinar.basejava.exception.StorageException;
36
import ru.javawebinar.basejava.model.Resume;
47

58
import java.util.Arrays;
@@ -21,11 +24,9 @@ public final void save(Resume resume) {
2124
int index = getIndex(resume.getUuid());
2225

2326
if (STORAGE_LIMIT <= size) {
24-
System.out.println("Storage overflow!");
25-
return;
27+
throw new StorageException("Storage overflow!", resume.getUuid());
2628
} else if (index >= 0) {
27-
System.out.println("Данный ID:" + resume.getUuid() + " уже существует!");
28-
return;
29+
throw new ExistStorageException(resume.getUuid());
2930
}
3031
size++;
3132
putResume(resume, index);
@@ -38,15 +39,14 @@ public final void update(Resume resume) {
3839
storage[index] = resume;
3940
System.out.println("Резюме успешно обновлено ID:" + resume.getUuid());
4041
} else {
41-
System.out.println("Такое резюме не найдено в массиве ID: " + resume.getUuid());
42+
throw new NotExistStorageException(resume.getUuid());
4243
}
4344
}
4445

4546
public final Resume get(String uuid) {
4647
int index = getIndex(uuid);
4748
if (index < 0) {
48-
System.out.println("Не найден данный ID: " + uuid);
49-
return null;
49+
throw new NotExistStorageException(uuid);
5050
}
5151
return storage[index];
5252
}
@@ -55,18 +55,21 @@ public final void delete(String uuid) {
5555
int index = getIndex(uuid);
5656

5757
if (index < 0) {
58-
System.out.println("Не найдено резюме ID:" + uuid);
59-
return;
58+
throw new NotExistStorageException(uuid);
6059
}
6160
shrinkArray(index);
6261
size--;
6362
System.out.println("Резюме удалено! ID:" + uuid);
6463
}
6564

6665
public void clear() {
67-
Arrays.fill(storage, 0, size - 1, null);
68-
size = 0;
69-
System.out.println("Массив полностью очищен!");
66+
67+
if(size > 0){
68+
Arrays.fill(storage, 0, size - 1, null);
69+
size = 0;
70+
System.out.println("Массив полностью очищен!");
71+
}
72+
7073
}
7174

7275
protected abstract int getIndex(String uuid);

src/ru/javawebinar/basejava/storage/ArrayStorage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ protected int getIndex(String uuid) {
1616

1717
@Override
1818
protected void putResume(Resume resume, int index) {
19-
storage[size] = resume;
19+
storage[size-1] = resume;
2020
System.out.println("Резюме успешно сохранено! ID:" + resume.getUuid());
2121
}
2222

src/ru/javawebinar/basejava/storage/SortedArrayStorage.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ public class SortedArrayStorage extends AbstractArrayStorage {
88

99
@Override
1010
protected int getIndex(String uuid) {
11-
Resume searchKey = new Resume();
12-
searchKey.setUuid(uuid);
11+
Resume searchKey = new Resume(uuid);
1312
return Arrays.binarySearch(storage, 0, size, searchKey);
1413
}
1514

0 commit comments

Comments
 (0)