Skip to content

Commit 25ecc3b

Browse files
committed
lesson 6. Исправление ошибок
1 parent 8df83af commit 25ecc3b

14 files changed

+84
-108
lines changed
Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,17 @@
11
packagecom.urise.webapp;
22

33
importcom.urise.webapp.model.Resume;
4-
importcom.urise.webapp.storage.SortedArrayStorage;
54

65
importjava.lang.reflect.InvocationTargetException;
76
importjava.lang.reflect.Method;
8-
importjava.util.Arrays;
97

108
publicclassMainReflection{
11-
12-
privatestaticfinalStringUUID_1 = "UUID_1";
13-
privatestaticfinalStringUUID_2 = "UUID_2";
14-
privatestaticfinalStringUUID_3 = "UUID_3";
15-
privatestaticfinalStringUUID_4 = "UUID_4";
16-
privatestaticfinalResumeR_1 = newResume(UUID_1,"FIO_1");
17-
privatestaticfinalResumeR_2 = newResume(UUID_2,"FIO_2");
18-
privatestaticfinalResumeR_3 = newResume(UUID_3,"FIO_3");
19-
privatestaticfinalResumeR_4 = newResume(UUID_4,"FIO_4");
20-
219
publicstaticvoidmain(String[] args) throwsNoSuchMethodException, InvocationTargetException, IllegalAccessException{
2210
Resumetest = newResume("test");
11+
System.out.println(test);
2312
Methodmethod = test.getClass().getMethod("toString");
2413
System.out.println(method.invoke(test));
25-
SortedArrayStoragestorage = newSortedArrayStorage();
26-
storage.getStorage()[0]=R_1;
27-
storage.getStorage()[1]=R_2;
28-
storage.getStorage()[2]=R_3;
29-
30-
storage.save(R_4);
3114

32-
System.out.println(storage.getStorage().length);
33-
System.out.println(Arrays.binarySearch(storage.getStorage(),0,9, R_2));
3415
}
3516

36-
37-
3817
}
Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
packagecom.urise.webapp.model;
22

3-
importjava.util.Comparator;
3+
importjava.util.Objects;
44
importjava.util.UUID;
55

66
/**
77
* Initial resume class
88
*/
9-
publicclassResumeimplementsComparator<Resume>, Comparable<Resume>{
9+
publicclassResumeimplementsComparable<Resume>{
1010

1111
// Unique identifier
1212
privatefinalStringuuid;
@@ -17,6 +17,8 @@ public Resume(String fullName){
1717
}
1818

1919
publicResume(Stringuuid, StringfullName){
20+
Objects.requireNonNull(fullName, "fullName must not be null");
21+
Objects.requireNonNull(uuid, "uuid must not be null");
2022
this.uuid = uuid;
2123
this.fullName = fullName;
2224
}
@@ -31,34 +33,28 @@ public String getFullName(){
3133

3234
@Override
3335
publicStringtoString(){
34-
returnuuid;
36+
returnuuid + "(" + fullName + ")";
3537
}
3638

37-
@Override
38-
publicintcompare(Resumeo1, Resumeo2){
39-
returno1.getUuid().equals(o2.getUuid())?
40-
o1.getFullName().compareTo(o2.getFullName()):
41-
o1.getUuid().compareTo(o2.getUuid());
42-
}
43-
44-
4539
@Override
4640
publicbooleanequals(Objecto){
4741
if (this == o) returntrue;
4842
if (o == null || getClass() != o.getClass()) returnfalse;
49-
5043
Resumeresume = (Resume) o;
51-
44+
if (!uuid.equals(resume.uuid)) returnfalse;
5245
returnuuid.equals(resume.uuid);
5346
}
5447

5548
@Override
5649
publicinthashCode(){
57-
returnuuid.hashCode();
50+
intresult = uuid.hashCode();
51+
result = 31 * result + fullName.hashCode();
52+
returnresult;
5853
}
5954

6055
@Override
6156
publicintcompareTo(Resumeo){
62-
returnthis.getFullName().equals(o.fullName)?this.getUuid().compareTo(o.getUuid()):this.getFullName().compareTo(o.getFullName());
57+
intcmp = fullName.compareTo(o.fullName);
58+
returncmp != 0 ? cmp : uuid.compareTo(o.getUuid());
6359
}
6460
}

‎src/com/urise/webapp/storage/AbstractArrayStorage.java‎

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
importjava.util.stream.Stream;
1010

1111
publicabstractclassAbstractArrayStorageextendsAbstractStorage{
12-
protectedstaticfinalintMAX_SIZE = 10_0000;
13-
14-
publicResume[] getStorage(){
15-
returnstorage;
16-
}
12+
protectedstaticfinalintMAX_SIZE = 10_000;
1713

1814
protectedResume[] storage = newResume[MAX_SIZE];
1915
protectedintresumeCounter = 0;
@@ -24,8 +20,8 @@ public void clear(){
2420
}
2521

2622
@Override
27-
protectedResumedoGet(ObjectexistedSearchKey){
28-
returnstorage[(Integer) existedSearchKey];
23+
protectedResumedoGet(Objectindex){
24+
returnstorage[(Integer) index];
2925
}
3026

3127
@Override
@@ -49,13 +45,13 @@ protected void doSave(Resume resume, Object index){
4945
if (resumeCounter >= MAX_SIZE){
5046
thrownewStorageException("Storage overflow", resume.getUuid());
5147
}
52-
insertResume((Integer) index, resume);
48+
insertResume(resume,(Integer) index);
5349
resumeCounter++;
5450
}
5551

5652
@Override
57-
protectedStream<Resume> getStream(){
58-
returnArrays.stream(storage,0,resumeCounter);
53+
protectedList<Resume> doCopyAll(){
54+
returnArrays.asList(Arrays.copyOfRange(storage,0,resumeCounter));
5955
}
6056

6157
publicintsize(){
@@ -67,7 +63,7 @@ protected boolean isExist(Object index){
6763
return (Integer) index >= 0;
6864
}
6965

70-
protectedabstractvoidinsertResume(intindex, Resumeresume);
66+
protectedabstractvoidinsertResume(Resumeresume, intindex);
7167

7268
protectedabstractvoiddeleteResume(intindex);
7369
}

‎src/com/urise/webapp/storage/AbstractStorage.java‎

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,37 @@
33
importcom.urise.webapp.exception.ExistStorageException;
44
importcom.urise.webapp.exception.NotExistStorageException;
55
importcom.urise.webapp.model.Resume;
6+
7+
importjava.util.Collections;
8+
importjava.util.Comparator;
69
importjava.util.List;
7-
importjava.util.stream.Collectors;
8-
importjava.util.stream.Stream;
10+
911

1012
publicabstractclassAbstractStorageimplementsStorage{
13+
Comparator<Resume> RESUME_COMAPATOR= Comparator.comparing(Resume::getUuid);
1114

1215
protectedabstractvoiddoUpdate(Resumeresume, ObjectsearchKey);
1316

1417
protectedabstractbooleanisExist(ObjectsearchKey);
1518

1619
protectedabstractvoiddoSave(Resumeresume, ObjectsearchKey);
1720

18-
protectedabstractResumedoGet(ObjectexistedSearchKey);
21+
protectedabstractResumedoGet(ObjectsearchKey);
1922

2023
protectedabstractvoiddoDelete(ObjectsearchKey);
2124

2225
protectedabstractObjectgetSearchKey(Stringuuid);
2326

24-
protectedabstractStream<Resume> getStream();
27+
protectedabstractList<Resume> doCopyAll();
2528

2629
publicList<Resume> getAllSorted(){
27-
returngetStream().sorted().collect(Collectors.toList());
30+
List<Resume> list =doCopyAll();
31+
Collections.sort(list);
32+
returnlist;
2833
}
2934

35+
36+
3037
publicvoidsave(Resumeresume){
3138
doSave(resume, getNotExistedSearchKey(resume.getUuid()));
3239
}

‎src/com/urise/webapp/storage/ArrayStorage.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ protected Integer getSearchKey(String uuid){
1919

2020

2121
@Override
22-
protectedvoidinsertResume(intindex, Resumeresume){
22+
protectedvoidinsertResume(Resumeresume,intindex){
2323
storage[resumeCounter] = resume;
2424
}
2525

‎src/com/urise/webapp/storage/ListStorage.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public void clear(){
5151
}
5252

5353
@Override
54-
protectedStream<Resume> getStream(){
55-
returnlist.stream();
54+
protectedList<Resume> doCopyAll(){
55+
returnnewArrayList<>(list);
5656
}
5757

5858
@Override

src/com/urise/webapp/storage/MapStoragePairedKey.java renamed to src/com/urise/webapp/storage/MapResumeStorage.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22

33
importcom.urise.webapp.model.Resume;
44

5-
importjava.util.HashMap;
6-
importjava.util.List;
7-
importjava.util.Map;
5+
importjava.lang.reflect.Array;
6+
importjava.util.*;
87
importjava.util.stream.Collectors;
98
importjava.util.stream.Stream;
109

11-
publicclassMapStoragePairedKeyextendsAbstractStorage{
10+
publicclassMapResumeStorageextendsAbstractStorage{
1211
privateMap<String, Resume> mapStorage = newHashMap<>();
1312

1413
@Override
1514
protectedvoiddoUpdate(Resumeresume, ObjectsearchKey){
15+
1616
mapStorage.put(((Resume)searchKey).getUuid(), resume);
1717
}
1818

1919
@Override
2020
protectedbooleanisExist(ObjectsearchKey){
21-
returnsearchKey==null?false:true;
21+
returnsearchKey != null;
2222
}
2323

2424
@Override
@@ -28,27 +28,29 @@ protected void doSave(Resume resume, Object searchKey){
2828

2929
@Override
3030
protectedResumedoGet(ObjectsearchKey){
31+
3132
return (Resume)searchKey;
3233
}
3334

3435
@Override
3536
protectedvoiddoDelete(ObjectsearchKey){
37+
3638
mapStorage.remove(((Resume)searchKey).getUuid());
3739
}
3840

3941
@Override
40-
protectedObjectgetSearchKey(Stringuuid){
42+
protectedResumegetSearchKey(Stringuuid){
4143
returnmapStorage.get(uuid);
4244
}
4345

4446
@Override
45-
publicvoidclear(){
46-
mapStorage.clear();
47+
protectedList<Resume> doCopyAll(){
48+
returnnewArrayList(mapStorage.values());
4749
}
4850

4951
@Override
50-
publicStream<Resume> getStream(){
51-
returnmapStorage.values().stream();
52+
publicvoidclear(){
53+
mapStorage.clear();
5254
}
5355

5456
@Override

‎src/com/urise/webapp/storage/MapStorage.java‎

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22

33
importcom.urise.webapp.model.Resume;
44

5-
importjava.util.HashMap;
6-
importjava.util.List;
7-
importjava.util.Map;
8-
importjava.util.stream.Collectors;
9-
importjava.util.stream.Stream;
5+
importjava.util.*;
6+
107

118
publicclassMapStorageextendsAbstractStorage{
12-
privateMap<String, Resume> mapStorage = newHashMap();
9+
privateMap<String, Resume> mapStorage = newHashMap<>();
1310

1411
@Override
1512
protectedvoiddoUpdate(Resumeresume, ObjectsearchKey){
@@ -47,8 +44,8 @@ public void clear(){
4744
}
4845

4946
@Override
50-
protectedStream<Resume> getStream(){
51-
returnmapStorage.values().stream();
47+
protectedList<Resume> doCopyAll(){
48+
returnnewArrayList<>(mapStorage.values());
5249
}
5350

5451
@Override

‎src/com/urise/webapp/storage/SortedArrayStorage.java‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,20 @@
1212
publicclassSortedArrayStorageextendsAbstractArrayStorage{
1313
@Override
1414
protectedIntegergetSearchKey(Stringuuid){
15-
Resumeresume = newResume(uuid,"FIO_1");
16-
if (resumeCounter==0) return -1;
17-
String[] uuids = Arrays.stream(storage).limit(resumeCounter).map(r->r.getUuid()).toArray(String[]::new);
15+
Resumeresume = newResume(uuid,"defaultFullName");
16+
// if (resumeCounter==0) return -1;
17+
// String[] uuids = Arrays.stream(storage).limit(resumeCounter).map(r->r.getUuid()).toArray(String[]::new);
1818
// Arrays.stream(storage).filter(r->r.getUuid().equals(uuid)).count();
1919
//return Arrays.binarySearch(storage, 0, resumeCounter, resume);
2020
/* Arrays.stream(storage)
2121
.sorted(Comparator.comparing(Resume::getUuid))
2222
.toArray();*/
23-
returnArrays.binarySearch(uuids,uuid);
23+
//return Arrays.binarySearch(uuids,uuid);
24+
returnArrays.binarySearch(storage,0,resumeCounter,resume,RESUME_COMAPATOR);
2425
}
2526

2627
@Override
27-
protectedvoidinsertResume(intindex, Resumeresume){
28+
protectedvoidinsertResume(Resumeresume, intindex){
2829
intindexResume = -index - 1;
2930
System.arraycopy(storage, indexResume, storage, indexResume + 1, resumeCounter - indexResume);
3031
storage[indexResume] = resume;

‎test/com/urise/webapp/storage/AbstractArrayStorageTest.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
importcom.urise.webapp.model.Resume;
55
importorg.junit.Test;
66

7-
87
importstaticcom.urise.webapp.storage.AbstractArrayStorage.MAX_SIZE;
98
importstaticorg.junit.Assert.fail;
109

11-
publicabstractclassAbstractArrayStorageTestextendsAbstractStorageTest{
10+
publicabstractclassAbstractArrayStorageTestextendsAbstractStorageTest{
1211

1312
publicAbstractArrayStorageTest(AbstractArrayStoragestorage){
1413
super(storage);
1514
}
15+
1616
@Test(expected = StorageException.class)
1717
publicvoidsizeOverLoaded(){
1818
try{
@@ -23,6 +23,6 @@ public void sizeOverLoaded(){
2323
} catch (StorageExceptione){
2424
fail();
2525
}
26-
storage.save(newResume("FIO_" + MAX_SIZE+1));
26+
storage.save(newResume("FIO_" + MAX_SIZE + 1));
2727
}
2828
}

0 commit comments

Comments
(0)