Skip to content

Commit 382a84a

Browse files
committed
printable interface is added with business logic roadmap
1 parent 7debc0e commit 382a84a

File tree

5 files changed

+129
-14
lines changed

5 files changed

+129
-14
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package classesToSort;
2+
3+
import interfaces.Printable;
4+
5+
public class App implements Printable {
6+
7+
public static void main(String[] args) {
8+
9+
}
10+
}

src/main/java/classesToSort/Client.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@
33
import java.util.ArrayList;
44
import java.util.List;
55

6-
// ДЕЛАТЬ ВСЕ ИЗМЕНЯЕМЫМ ИЛИ НЕТ?
7-
8-
// СДЕЛАТЬ BUILDER ДЛЯ КЛИЕНТА И ДЛЯ КОНТАКТНЫХ ДАНННЫХ
9-
106
public final class Client {
117
private final String name;
128
private final Credentials credentials;
139
private final int idNumber;
14-
private final List<Order> orderHistory = new ArrayList<>();
10+
// private final List<Order> orderHistory = new ArrayList<>();
1511

1612
public Client(ClientBuilder clientBuilder) {
1713
this.name = clientBuilder.name;
@@ -29,7 +25,7 @@ public ClientBuilder name(String name){
2925
return this;
3026
}
3127

32-
public ClientBuilder credentials(Credentials credentials){
28+
private ClientBuilder credentials(Credentials credentials){
3329
this.credentials = credentials;
3430
return this;
3531
}
@@ -49,20 +45,20 @@ public String getName() {
4945
return name;
5046
}
5147

52-
public Credentials getCredentials() { // public or private???
48+
private Credentials getCredentials() { // public or private???
5349
return credentials;
5450
}
5551

5652
public int getIdNumber() {
5753
return idNumber;
5854
}
5955

60-
public List<Order> getOrderHistory() {
61-
return orderHistory; // ВОЗВРАЩАТЬ КОЛЛЕКЦИЮ ИЛИ КОПИЮ СПИСКА???
62-
}
56+
// public List<Order> getOrderHistory() {
57+
// return List.copyOf(orderHistory);
58+
// }
6359

6460
private static class Credentials{ // ДЕЛАТЬ ВЛОЖЕННЫМ ИЛИ НЕТ
65-
private final long phoneNumber;
61+
private final String phoneNumber;
6662
private final String address;
6763
private final String email;
6864

@@ -73,11 +69,11 @@ public Credentials(CredBuilder credBuilder) {
7369
}
7470

7571
public static class CredBuilder{
76-
private long phoneNumber;
72+
private String phoneNumber;
7773
private String address;
7874
private String email;
7975

80-
public CredBuilder phoneNumber(long phoneNumber){
76+
public CredBuilder phoneNumber(String phoneNumber){
8177
this.phoneNumber = phoneNumber;
8278
return this;
8379
}
@@ -97,7 +93,7 @@ public Credentials build(){
9793
}
9894
}
9995

100-
public long getPhoneNumber() {
96+
public String getPhoneNumber() {
10197
return phoneNumber;
10298
}
10399

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package classesToSort;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class ClientSortingSystem {
7+
List<Client> clientList = new ArrayList<>();
8+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package interfaces;
2+
3+
import java.lang.reflect.Array;
4+
5+
public interface Printable {
6+
7+
default void printMainMenu(){
8+
System.out.println(
9+
"Chose an option:\n" +
10+
"1) Show clients in default order\n" +
11+
"2) Sort by name\n" +
12+
"3) Sort by ID\n" +
13+
"4) Sort by credentials"
14+
);
15+
}
16+
17+
default void printNameSortingOptions(){
18+
System.out.println(
19+
"Sort clients by:\n" +
20+
"1) Names alphabet order\n" +
21+
"2) Name length\n" +
22+
"3) Amount of a's in name\n" +
23+
"4) Amount of vowels in name\n" +
24+
"5) Amount of consonants in name\n" +
25+
"6) Name unicode\n" +
26+
"7) Name locale\n" + // Тут все сложно
27+
"8) Combine name criteria" // Придумать что-то комбинированное
28+
);
29+
}
30+
31+
default void printLettersCaseOption(){
32+
System.out.println(
33+
"Chose an option:\n" +
34+
"1) Case-sensitive sorting\n" +
35+
"2) Case-insensitive sorting\n"
36+
);
37+
}
38+
39+
default void printIdSortingOptions(){
40+
System.out.println(
41+
"Sort clients by:\n" +
42+
"1) ID Ascending \n" +
43+
"2) ID Descending \n" +
44+
"3) Amount of numbers in ID\n" +
45+
"4) ID even number\n" + // ЭТО ДОП ЗАДАНИЕ
46+
"5) ID odd number\n" +
47+
"6) Unicode\n" +
48+
"7) Combine criteria\n" +
49+
"8) ID parts\n" + // если сделать ID составной
50+
"9) ID creation date" // если сделать ID включающим дату
51+
52+
);
53+
}
54+
55+
default void printCredentialsMenu(){
56+
System.out.println(
57+
"Sort clients by:\n" +
58+
"1) Phone numbers\n" +
59+
"2) Addresses\n" +
60+
"3) Emails\n"
61+
);
62+
}
63+
64+
default void printPhoneSortingOptions(){
65+
System.out.println(
66+
"Sort clients by phone:\n" +
67+
"1) Normalized number\n" + // приведенный к международному формату
68+
"2) Country code\n" +
69+
"3) Operator code\n" +
70+
"4) Last numbers\n" +
71+
"5) Number length\n" +
72+
"6) Clean number\n" + // без знаков
73+
"7) Combine criteria\n"
74+
75+
);
76+
}
77+
78+
default void printAddressesSortingOption(){
79+
System.out.println(
80+
"Sort clients by address:\n" + // так как в одну строку то меньше опций
81+
"1) In alphabetic order\n" +
82+
"2) Postal code\n"
83+
);
84+
}
85+
86+
default void printEmailSortingOptions(){
87+
System.out.println(
88+
"Sort clients by email:\n" +
89+
"1) Domain name\n" +
90+
"2) Local part\n" +
91+
"3) Domain type\n" +
92+
"4) Length\n"
93+
);
94+
}
95+
96+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package interfaces;
2+
3+
public interface Sortable {
4+
5+
}

0 commit comments

Comments
 (0)