Skip to content

Commit 3d0c235

Browse files
authored
And prevailed not; neither was their place found
And prevailed not; neither was their place found any more in heaven. (Revelation 12:8)
1 parent d882221 commit 3d0c235

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
2+
//And prevailed not; neither was their place found any more in heaven. (Revelation 12:8)
3+
4+
package com.javarush.task.task39.task3911;
5+
6+
import java.util.*;
7+
8+
public class Software {
9+
int currentVersion;
10+
11+
private Map<Integer, String> versionHistoryMap = new LinkedHashMap<>();
12+
13+
public void addNewVersion(int version, String description) {
14+
if (version > currentVersion) {
15+
versionHistoryMap.put(version, description);
16+
currentVersion = version;
17+
}
18+
}
19+
20+
public int getCurrentVersion() {
21+
return currentVersion;
22+
}
23+
24+
public Map<Integer, String> getVersionHistoryMap() {
25+
return Collections.unmodifiableMap(versionHistoryMap);
26+
}
27+
28+
public boolean rollback(int rollbackVersion) {
29+
if (!versionHistoryMap.containsKey(rollbackVersion))
30+
return false;
31+
32+
Iterator<Integer> iterator = versionHistoryMap.keySet().iterator();
33+
while (iterator.hasNext())
34+
if (iterator.next()>rollbackVersion)
35+
iterator.remove();
36+
37+
currentVersion = rollbackVersion;
38+
39+
return true;
40+
}
41+
}
42+
43+
/*
44+
Rollback
45+
46+
Необходимо реализовать метод rollback в классе Software, который будет позволять откатить текущую версию ПО на желаемую. Все версии следующие после той, на которую откатываемся, должны быть удалены, также не забудь изменить поле currentVersion.
47+
48+
Метод rollback должен вернуть true, если все прошло успешно и false, если желаемая версия не была найдена.
49+
50+
51+
52+
53+
54+
Требования:
55+
56+
1. Метод rollback должен возвращать false, если желаемая версия не была найдена в versionHistoryMap.
57+
58+
2. Метод rollback должен удалять из versionHistoryMap только версии ПО, следующие за той, которую передали в качестве параметра.
59+
60+
3. Метод rollback должен устанавливать currentVersion в соответствие с новым значением и возвращать true в случае успешного отката.
61+
62+
4. Метод rollback не должен изменять currentVersion и versionHistoryMap, если откат невозможен.
63+
*/

0 commit comments

Comments
 (0)