diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Controller.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Controller.java
index cf9a065..75b31c0 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Controller.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Controller.java
@@ -143,7 +143,7 @@ private void connect() {
String[] tokens = str.split("\\s");
Platform.runLater(() -> {
clientList.getItems().clear();
- for (int i = 1; i < tokens.length; i++) {
+ for ( int i = 1; i < tokens.length; i++ ) {
clientList.getItems().add(tokens[i]);
}
});
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Main.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Main.java
index 2593306..15d3045 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Main.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/Main.java
@@ -9,7 +9,7 @@
public class Main extends Application {
@Override
- public void start(Stage primaryStage) throws Exception{
+ public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml"));
primaryStage.setTitle("GeekChat");
primaryStage.setScene(new Scene(root, 400, 350));
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/RegController.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/RegController.java
index 2cb0340..3a7b9a5 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/RegController.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/src/main/java/client/RegController.java
@@ -24,10 +24,11 @@ public void tryToReg(ActionEvent actionEvent) {
controller.tryToReg(login, password, nickname);
}
- public void regOk(){
+ public void regOk() {
textArea.appendText("Регистрация прошла успешно\n");
}
- public void regNo(){
+
+ public void regNo() {
textArea.appendText("Логин или никнейм уже заняты\n");
}
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/css/style.css b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/css/style.css
new file mode 100644
index 0000000..88225fa
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/css/style.css
@@ -0,0 +1,3 @@
+.root{
+ -fx-font-size: 16;
+}
\ No newline at end of file
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/reg.fxml b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/reg.fxml
new file mode 100644
index 0000000..5a786d7
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/reg.fxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/sample.fxml b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/sample.fxml
new file mode 100644
index 0000000..4922377
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/classes/sample.fxml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/maven-archiver/pom.properties b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..506f44a
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/client/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Mar 02 11:51:14 EET 2021
+version=1.0-SNAPSHOT
+groupId=org.example
+artifactId=client
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/command/target/maven-archiver/pom.properties b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/command/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..d6b5c5e
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/command/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Mar 02 11:51:14 EET 2021
+version=1.0-SNAPSHOT
+groupId=org.example
+artifactId=command
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/main.db b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/main.db
index 77691d9..951e702 100644
Binary files a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/main.db and b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/main.db differ
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/AuthService.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/AuthService.java
index 82d8b65..5112e55 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/AuthService.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/AuthService.java
@@ -2,5 +2,6 @@
public interface AuthService {
String getNicknameByLoginAndPassword(String login, String password);
+
boolean registration(String login, String password, String nickname);
}
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/ClientHandler.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/ClientHandler.java
index f32e621..11342ca 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/ClientHandler.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/ClientHandler.java
@@ -25,7 +25,7 @@ public ClientHandler(Server server, Socket socket) {
new Thread(() -> {
try {
- socket.setSoTimeout(5000);
+ // socket.setSoTimeout(5000);
//цикл аутентификации
while (true) {
String str = in.readUTF();
@@ -91,7 +91,7 @@ public ClientHandler(Server server, Socket socket) {
server.broadcastMsg(this, str);
}
}
- //SocketTimeoutException
+ //SocketTimeoutException
} catch (SocketTimeoutException e) {
sendMsg(Command.END);
} catch (RuntimeException e) {
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBAuthService.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBAuthService.java
index ea46217..805d385 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBAuthService.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBAuthService.java
@@ -1,49 +1,21 @@
package server;
-import org.sqlite.core.DB;
-
import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
public class DBAuthService implements AuthService {
- private class UserData {
- String login;
- String password;
- String nickname;
-
- public UserData(String login, String password, String nickname) {
- this.login = login;
- this.password = password;
- this.nickname = nickname;
+ static {
+ try {
+ DBMain.connect();
+ System.out.println("db connected");
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (SQLException throwables) {
+ throwables.printStackTrace();
}
}
- // private List users;
-
- public DBAuthService() {
-// try {
-// DBMain.connect();
-// } catch (ClassNotFoundException e) {
-// e.printStackTrace();
-// } catch (SQLException throwables) {
-// throwables.printStackTrace();
-// }
- //users = new ArrayList<>();
- // users.add(new SimpleAuthService.UserData("qwe", "qwe", "qwe"));
- DBMain.addUser ("qwe", "qwe", "qwe");
- DBMain.addUser ("asd", "asd", "asd");
- DBMain.addUser ("zxc", "zxc", "zxc");
-// users.add(new SimpleAuthService.UserData("asd", "asd", "asd"));
-// users.add(new SimpleAuthService.UserData("zxc", "zxc", "zxc"));
-// for (int i = 1; i < 10; i++) {
-// users.add(new SimpleAuthService.UserData("user" + i, "pass" + i, "nick" + i));
-// }
- }
-
@Override
public String getNicknameByLoginAndPassword(String login, String password) {
- System.out.println(DBMain.selectNicknameByLoginAndPassword(login, password));
return DBMain.selectNicknameByLoginAndPassword(login, password);
}
@@ -51,21 +23,20 @@ public String getNicknameByLoginAndPassword(String login, String password) {
public boolean registration(String login, String password, String nickname) {
try {
- if ((DBMain.selectLogin(login))||(DBMain.selectNickName(nickname))){
- //if(user.login.equals(login) || user.nickname.equals(nickname)){
- return false;
- }
+ if ((DBMain.selectLogin(login)) || (DBMain.selectNickName(nickname))) {
+ return false;
+ }
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
- DBMain.add(login, password, nickname);
+ DBMain.addUser(login, password, nickname);
+ System.out.println("User added to DB, login " + login + " password " + password + " nickname " + nickname);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return true;
}
-
}
@@ -73,82 +44,3 @@ public boolean registration(String login, String password, String nickname) {
-
-
-
-
-//
-//
-//
-//
-// public class SimpleAuthService implements AuthService {
-// private class UserData {
-// String login;
-// String password;
-// String nickname;
-//
-// public UserData(String login, String password, String nickname) {
-// this.login = login;
-// this.password = password;
-// this.nickname = nickname;
-// }
-// }
-//
-// private List users;
-//
-// public SimpleAuthService() {
-// users = new ArrayList<>();
-// users.add(new server.SimpleAuthService.UserData("qwe", "qwe", "qwe"));
-// users.add(new server.SimpleAuthService.UserData("asd", "asd", "asd"));
-// users.add(new server.SimpleAuthService.UserData("zxc", "zxc", "zxc"));
-// for (int i = 1; i < 10; i++) {
-// users.add(new server.SimpleAuthService.UserData("user" + i, "pass" + i, "nick" + i));
-// }
-// }
-//
-// @Override
-// public String getNicknameByLoginAndPassword(String login, String password) {
-// for ( server.SimpleAuthService.UserData user : users) {
-// if(user.login.equals(login) && user.password.equals(password)){
-// return user.nickname;
-// }
-// }
-// return null;
-// }
-//
-// @Override
-// public boolean registration(String login, String password, String nickname) {
-// for ( server.SimpleAuthService.UserData user : users) {
-// if(user.login.equals(login) || user.nickname.equals(nickname)){
-// return false;
-// }
-// }
-// users.add(new server.SimpleAuthService.UserData(login, password, nickname));
-// return true;
-// }
-// }
-
- //////---------------------------
-//
-//import java.sql.SQLException;
-//
-// public class DBAuthService implements AuthService{
-//
-// @Override
-// public String getNicknameByLoginAndPassword(String login, String password){
-// System.out.println("Selected nick "+ DBCrud.selectNicknameByLoginAndPassword(login, password));
-// return DBCrud.selectNicknameByLoginAndPassword(login, password);
-// }
-//
-// @Override
-// public boolean registration(String login, String password, String nickname) {
-// return false;
-// }
-// }
-
-
-
-
-
-
-
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBMain.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBMain.java
index 7e7b121..1129df9 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBMain.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/DBMain.java
@@ -4,43 +4,14 @@
public class DBMain {
-
private static Connection connection;
private static Statement stmt;
private static PreparedStatement psInsert;
- // public static void main(String[] args) {
- {
- try {
- connect();
-// clearTable();
-// fillTable();
- System.out.println("db connected");
- // clearTable();
- // prepareAllStatements();
- //exRollback();
-
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- disconnect();
- }
- }
- // }
-
-// private static void exRollback() throws SQLException {
-// stmt.executeUpdate("INSERT INTO students (name, score) VALUES ('Bob1', 85);");
-// Savepoint sp1 = connection.setSavepoint();
-// stmt.executeUpdate("INSERT INTO students (name, score) VALUES ('Bob2', 85);");
-// connection.rollback(sp1);
-// stmt.executeUpdate("INSERT INTO students (name, score) VALUES ('Bob3', 85);");
-// connection.setAutoCommit(true);
-// }
-
private static void fillTableBatch() throws SQLException {
long begin = System.currentTimeMillis();
connection.setAutoCommit(false);
- for (int i = 1; i <= 1000; i++) {
+ for ( int i = 1; i <= 1000; i++ ) {
psInsert.setString(1, "Bob " + i);
psInsert.setInt(2, i * 15 % 100);
@@ -56,7 +27,7 @@ private static void fillTable() throws SQLException {
long begin = System.currentTimeMillis();
connection.setAutoCommit(false);
prepareAllStatements();
- for (int i = 1; i <= 5; i++) {
+ for ( int i = 1; i <= 5; i++ ) {
psInsert.setString(1, "Bob " + i);
psInsert.setString(2, "123");
psInsert.setString(3, "Bob " + i);
@@ -74,30 +45,6 @@ private static void prepareAllStatements() throws SQLException {
private static void clearTable() throws SQLException {
stmt.executeUpdate("DELETE FROM users;");
}
- //CRUD create read update delete
-// private static void exSelect() throws SQLException {
-// ResultSet rs = stmt.executeQuery("SELECT name, score FROM students WHERE score > 80;");
-//
-// while (rs.next()) {
-// System.out.println(rs.getString("name") + " " + rs.getInt("score"));
-// }
-//
-// rs.close();
-// }
-//
-// private static void clearTable() throws SQLException {
-// stmt.executeUpdate("DELETE FROM students;");
-// }
-//
-// private static void exDelete() throws SQLException {
-// stmt.executeUpdate("DELETE FROM students WHERE score <= 40;");
-// }
-//
-// private static void exUpdate() throws SQLException {
-// stmt.executeUpdate("UPDATE students SET score = 100 WHERE score >=85;");
-//// UPDATE students SET score = 90 WHERE (score >=85) AND (name='Bob6');
-//// UPDATE students SET score = 90 WHERE (score >=85) OR (name='Bob6');
-// }
private static void exInsertMore() throws SQLException {
stmt.executeUpdate("INSERT INTO students (name, score) VALUES ('Bob4', 75),('Bob5', 35),('Bob6', 95);");
@@ -126,21 +73,17 @@ private static void disconnect() {
}
}
-
public static String selectNicknameByLoginAndPassword(String login, String password) {
- String nick=null;
- String query = String.format("SELECT nickname FROM users WHERE login = '%s' & password = '%s';", login, password);
+ String nick = null;
+ String query = String.format("SELECT * FROM users WHERE login = '%s' and password = '%s';", login, password);
ResultSet rs = null;
- try {
+ try {
rs = stmt.executeQuery(query);
-
if (rs.next()) {
- nick = rs.getString("nick");
- System.out.println("Gotten nickname "+ nick);
+ nick = rs.getString("nickname");
} else {
nick = null;
}
-
} catch (SQLException throwables) {
throwables.printStackTrace();
}
@@ -152,45 +95,43 @@ public static String selectNicknameByLoginAndPassword(String login, String passw
return nick;
}
- public static void addUser(String qwe, String qwe1, String qwe2) {
-
- }
-
public static boolean selectLogin(String login) throws SQLException {
- ResultSet rs = stmt.executeQuery("SELECT FROM users WHERE login = " + login + ";");
- // SELECT nick FROM users WHERE login = '%s'& password = '%s');
-if (rs.next()) {
- rs.close();
- return true;
- }
-
+ String query = String.format("SELECT * FROM users WHERE login = '%s' ;", login);
+ System.out.println(query);
+ ResultSet rs = stmt.executeQuery(query);
+ System.out.println("result set" + rs);
+ if (rs.next()) {
rs.close();
-return false;
+ System.out.println("true");
+ return true;
}
+ rs.close();
+ System.out.println("false");
+ return false;
+ }
public static boolean selectNickName(String nickname) throws SQLException {
- ResultSet rs = stmt.executeQuery("SELECT FROM users WHERE nickname = " + nickname + ";");
+ String query = String.format("SELECT * FROM users WHERE nickname = '%s' ;", nickname);
+ ResultSet rs = stmt.executeQuery(query);
if (rs.next()) {
rs.close();
- return true;
+ return true;
}
-
rs.close();
return false;
}
- public static void add (String login, String password, String nickname) throws SQLException {
+ public static void addUser(String login, String password, String nickname) throws SQLException {
connection.setAutoCommit(false);
prepareAllStatements();
- psInsert.setString(1, login);
- psInsert.setString(2, password);
- psInsert.setString(3, nickname);
- psInsert.executeUpdate();
+ psInsert.setString(1, login);
+ psInsert.setString(2, password);
+ psInsert.setString(3, nickname);
+ psInsert.executeUpdate();
connection.commit();
}
-
- }
+}
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/Server.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/Server.java
index a9f50fd..353ef6d 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/Server.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/Server.java
@@ -42,14 +42,14 @@ public Server() {
public void broadcastMsg(ClientHandler clientHandler, String msg) {
String message = String.format("[ %s ]: %s", clientHandler.getNickname(), msg);
- for (ClientHandler c : clients) {
+ for ( ClientHandler c : clients ) {
c.sendMsg(message);
}
}
public void privateMsg(ClientHandler sender, String receiver, String msg) {
String message = String.format("[ %s ] to [ %s ]: %s", sender.getNickname(), receiver, msg);
- for (ClientHandler c : clients) {
+ for ( ClientHandler c : clients ) {
if (c.getNickname().equals(receiver)) {
c.sendMsg(message);
if (!c.equals(sender)) {
@@ -76,7 +76,7 @@ public AuthService getAuthService() {
}
public boolean isLoginAuthenticated(String login) {
- for (ClientHandler c : clients) {
+ for ( ClientHandler c : clients ) {
if (c.getLogin().equals(login)) {
return true;
}
@@ -87,13 +87,13 @@ public boolean isLoginAuthenticated(String login) {
public void broadcastClientList() {
StringBuilder sb = new StringBuilder(Command.CLIENT_LIST);
- for (ClientHandler c : clients) {
+ for ( ClientHandler c : clients ) {
sb.append(" ").append(c.getNickname());
}
String msg = sb.toString();
- for (ClientHandler c : clients) {
+ for ( ClientHandler c : clients ) {
c.sendMsg(msg);
}
}
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/SimpleAuthService.java b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/SimpleAuthService.java
index 0c8767e..988f832 100644
--- a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/SimpleAuthService.java
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/src/main/java/server/SimpleAuthService.java
@@ -23,15 +23,15 @@ public SimpleAuthService() {
users.add(new UserData("qwe", "qwe", "qwe"));
users.add(new UserData("asd", "asd", "asd"));
users.add(new UserData("zxc", "zxc", "zxc"));
- for (int i = 1; i < 10; i++) {
+ for ( int i = 1; i < 10; i++ ) {
users.add(new UserData("user" + i, "pass" + i, "nick" + i));
}
}
@Override
public String getNicknameByLoginAndPassword(String login, String password) {
- for (UserData user : users) {
- if(user.login.equals(login) && user.password.equals(password)){
+ for ( UserData user : users ) {
+ if (user.login.equals(login) && user.password.equals(password)) {
return user.nickname;
}
}
@@ -40,8 +40,8 @@ public String getNicknameByLoginAndPassword(String login, String password) {
@Override
public boolean registration(String login, String password, String nickname) {
- for (UserData user : users) {
- if(user.login.equals(login) || user.nickname.equals(nickname)){
+ for ( UserData user : users ) {
+ if (user.login.equals(login) || user.nickname.equals(nickname)) {
return false;
}
}
diff --git a/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/target/maven-archiver/pom.properties b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..f3d736e
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/org.volha.geekbrains.java.level3.dbase/chat_geekchat_16012021 (4)/chat_geekchat_16012021/server/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Tue Mar 02 11:51:15 EET 2021
+version=1.0-SNAPSHOT
+groupId=org.example
+artifactId=server
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AfterSuit.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AfterSuit.java
index 2578885..14d2aef 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AfterSuit.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AfterSuit.java
@@ -8,4 +8,5 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AfterSuit {
+
}
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AnnotationsMainApp.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AnnotationsMainApp.java
index 1d8e101..b03b71e 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AnnotationsMainApp.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/AnnotationsMainApp.java
@@ -26,8 +26,10 @@ public class AnnotationsMainApp {
public static void main(String[] args) {
try {
- RunAnnotations.run("lesson7hw_annotations.TestExecutes");
- } catch (ClassNotFoundException e) {
+ RunAnnotations.run ("lesson7hw_annotations.TestExecutes");
+ RunAnnotations.run("lesson7hw_annotations.TestThrowsException");
+
+ } catch (Exception e) {
e.printStackTrace();
}
}
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/BeforeSuit.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/BeforeSuit.java
index 53fc703..1e33c0a 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/BeforeSuit.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/BeforeSuit.java
@@ -8,4 +8,5 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface BeforeSuit {
+
}
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/MethodWithPriority.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/MethodWithPriority.java
new file mode 100644
index 0000000..74e62ef
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/MethodWithPriority.java
@@ -0,0 +1,31 @@
+package lesson7hw_annotations;
+
+import java.lang.reflect.Method;
+
+public class MethodWithPriority {
+ private int priority;
+ private Method method;
+
+ public MethodWithPriority(int priority, Method method) {
+ this.priority = priority;
+ this.method = method;
+ }
+
+ public int getPriority() {
+ return priority;
+ }
+
+ public void setPriority(int priority) {
+ this.priority = priority;
+ }
+
+ public Method getMethod() {
+ return method;
+ }
+
+ public void setMethod(Method method) {
+ this.method = method;
+ }
+
+ }
+
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/RunAnnotations.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/RunAnnotations.java
index dadc315..209b95a 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/RunAnnotations.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/RunAnnotations.java
@@ -2,10 +2,13 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.TreeMap;
public class RunAnnotations {
-
public static void run(String classToRunTestsName) throws ClassNotFoundException {
Class ClassToRunTests = Class.forName(classToRunTestsName);
int countBeforeSuit = 0;
@@ -13,19 +16,54 @@ public static void run(String classToRunTestsName) throws ClassNotFoundException
Method methodBeforeSuit = null;
Method methodAfterSuit = null;
Method[] methods = ClassToRunTests.getDeclaredMethods();
+ ArrayList arrayOfMethods = new ArrayList<>();
// ClassToRunTests.class.getDeclaredMethods();
for ( Method o : methods ) {
if (o.getAnnotation(BeforeSuit.class) != null) {
countBeforeSuit++;
+ if (countBeforeSuit > 1) {
+ System.out.println("Too much the same");
+ throw new RuntimeException();
+ }
methodBeforeSuit = o;
}
-
if (o.getAnnotation(AfterSuit.class) != null) {
countAfterSuit++;
+ if (countAfterSuit > 1) {
+ System.out.println("Too much the same");
+ throw new RuntimeException();
+ }
methodAfterSuit = o;
}
+ if (o.getAnnotation(Test.class) != null) {
+ arrayOfMethods.add(new MethodWithPriority(o.getAnnotation(Test.class).priority(), o));
+ }
}
+
+///good solution when priority is unique
+// if (o.getAnnotation(Test.class) != null) {
+// priorityMethod.put(o.getAnnotation(Test.class).priority(), o);
+// }
+// }
+//
+//
+// for ( Map.Entry entry : priorityMethod.entrySet()) {
+// // Integer key = entry.getKey();
+// Method value = entry.getValue();
+// try {
+// value.invoke(ClassToRunTests);
+// } catch (IllegalAccessException e) {
+// e.printStackTrace();
+// } catch (InvocationTargetException e) {
+// e.printStackTrace();
+// }
+// }
+///good solution when priority is unique
+
+// }
+// }
+//
if (countBeforeSuit == 1) {
try {
methodBeforeSuit.invoke(ClassToRunTests);
@@ -35,24 +73,15 @@ public static void run(String classToRunTestsName) throws ClassNotFoundException
e.printStackTrace();
}
}
-
- if (countBeforeSuit > 1 || countAfterSuit > 1) {
- throw new RuntimeException();
- }
-
- for ( Method m : methods ) {
- if (m.getAnnotation(Test.class) != null) {
- System.out.println("Test must be executed");
- try {
- m.invoke(ClassToRunTests);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
+ arrayOfMethods.stream().sorted(Comparator.comparing(MethodWithPriority::getPriority)).forEach((t) -> {
+ try {
+ t.getMethod().invoke(ClassToRunTests);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
}
- }
-
+ });
if (countAfterSuit == 1) {
try {
methodAfterSuit.invoke(ClassToRunTests);
@@ -65,4 +94,43 @@ public static void run(String classToRunTestsName) throws ClassNotFoundException
}
}
+//
+// for ( Method m : methods ) {
+// if (m.getAnnotation(Test.class) != null) {
+// System.out.println("Test must be executed");
+// System.out.println ("priority is "+ m.getAnnotation(Test.class).priority());
+// // Field[] fields = ClassToRunTests.getDeclaredFields();
+// try {
+// Field field = ClassToRunTests.getDeclaredField("priority");
+// try {
+// System.out.println("priority = getint " + field.getInt(ClassToRunTests) +" get "+field.get(ClassToRunTests));
+// } catch (IllegalAccessException e) {
+// e.printStackTrace();
+// }
+// } catch (NoSuchFieldException e) {
+// e.printStackTrace();
+// }
+//System.out.println(m.getAnnotation(ClassToRunTests).priority());
+// for (Field field : fields){
+// try {
+//
+// Field field = c1.getDeclaredField("color");
+//// field.setAccessible(true);
+// System.out.println(field.get(cat));
+// field.set(cat, "purple");
+// System.out.println("field name " + field.getName() + "field value: "+ ClassToRunTests.getField(field.getName()));
+// } catch (NoSuchFieldException e) {
+// e.printStackTrace();
+// }
+// }
+// try {
+// m.invoke(ClassToRunTests);
+// } catch (IllegalAccessException e) {
+// e.printStackTrace();
+// } catch (InvocationTargetException e) {
+// e.printStackTrace();
+// }
+// }
+// }
+
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/Test.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/Test.java
index ba02c47..39c1593 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/Test.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/Test.java
@@ -8,4 +8,6 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
-}
+ int priority() default 4;
+
+ }
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestExecutes.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestExecutes.java
index 9607088..5baba54 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestExecutes.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestExecutes.java
@@ -1,20 +1,32 @@
package lesson7hw_annotations;
public class TestExecutes {
+ static int priority;
@BeforeSuit
public static void testBeforeSuit() {
System.out.println("@BeforeSuit executed");
}
- @Test
- public void testMethodWith1Priority() {
- System.out.println("Test 1 run");
+ @Test ( priority = 56)
+ public static void testMethodWith1Priority() {
+ System.out.println("Test with priority 56 run");
+ }
+
+
+ @Test ( priority = 3)
+ public static void testMethodWith3Priority() {
+ System.out.println("Test with priority 3 run");
+ }
+
+ @Test( priority = 56)
+ public static void testMethodWith56Priority() {
+ System.out.println("Test with priority 56 run");
}
@Test
- public static void testMethodWith5Priority() {
- System.out.println("Test 5 run");
+ public static void testMethodWithDefaultPriority() {
+ System.out.println("Test with default priority run");
}
@AfterSuit
diff --git a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestThrowsException.java b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestThrowsException.java
index 17291d6..ad91ccc 100644
--- a/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestThrowsException.java
+++ b/org.volha.geekbrains.java.level3/src/main/java/lesson7hw_annotations/TestThrowsException.java
@@ -1,4 +1,12 @@
package lesson7hw_annotations;
public class TestThrowsException {
+ @BeforeSuit
+ public static void testBeforeSuit() {
+ System.out.println("@BeforeSuit executed");
+ }
+ @BeforeSuit
+ public static void testBeforeSuit2() {
+ System.out.println("@BeforeSuit executed");
+ }
}
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Car.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Car.java
new file mode 100644
index 0000000..129a9a0
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Car.java
@@ -0,0 +1,58 @@
+package race;
+
+//import static race.MainClass.cbStartRace;
+
+import java.util.concurrent.BrokenBarrierException;
+
+import static race.RaceGoing.newBarrier;
+
+public class Car implements Runnable {
+ private static int CARS_COUNT;
+
+ static {
+ CARS_COUNT = 4;
+ }
+
+ private Race race;
+ private int speed;
+ private String name;
+
+
+ public String getName() {
+ return name;
+ }
+
+ public int getSpeed() {
+ return speed;
+ }
+
+ public Car(int speed, int carNumber, Race race) {
+ this.race = race;
+ this.speed = speed;
+ this.name = "Участник #" + carNumber;
+ }
+
+ @Override
+ public void run() {
+ try {
+ System.out.println(this.name + " готовится");
+ Thread.sleep(500 + (int) (Math.random() * 800));
+ System.out.println(this.name + " готов");
+ newBarrier.await();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ for ( Stage stage : race.getStages() ) {
+ stage.go(this);
+ }
+ try {
+ newBarrier.await();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (BrokenBarrierException e) {
+ e.printStackTrace();
+ }
+ }
+}
+
+
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Finish.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Finish.java
new file mode 100644
index 0000000..3295c99
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Finish.java
@@ -0,0 +1,26 @@
+package race;
+
+import java.util.concurrent.BrokenBarrierException;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public class Finish extends Stage {
+ AtomicBoolean winner = new AtomicBoolean(false);
+
+ public Finish() {
+ this.description = "Finish";
+ }
+
+ @Override
+ public void go(Car c) {
+ System.out.println(c.getName() + " начал этап: " + description);
+ System.out.println(c.getName() + " закончил этап: " + description);
+ if (!winner.get()) {
+ winner.set(true);
+ System.out.println(c.getName() + " WON ");
+ }
+ }
+}
+
+
+
+
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/MainClass.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/MainClass.java
new file mode 100644
index 0000000..18c15a0
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/MainClass.java
@@ -0,0 +1,19 @@
+package race;
+//Организуем гонки:
+// Все участники должны стартовать одновременно, несмотря на то, что на подготовку у каждого из них уходит разное время.
+// В туннель не может заехать одновременно больше половины участников (условность).
+// Попробуйте всё это синхронизировать.
+// Только после того как все завершат гонку, нужно выдать объявление об окончании.
+// Можете корректировать классы (в т.ч. конструктор машин) и добавлять объекты классов из пакета util.concurrent.
+
+import java.util.concurrent.BrokenBarrierException;
+
+public class MainClass {
+ public static void main(String[] args) throws InterruptedException {
+ // parent thread
+ RaceGoing raceGoing = new RaceGoing();
+
+ Thread t1 = new Thread(raceGoing);
+ t1.start();
+ }
+}
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Race.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Race.java
new file mode 100644
index 0000000..9ec35b7
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Race.java
@@ -0,0 +1,13 @@
+package race;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class Race {
+ private ArrayList stages;
+ public ArrayList getStages() { return stages; }
+ public Race(Stage... stages) {
+ this.stages = new ArrayList<>(Arrays.asList(stages));
+ }
+ }
+
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/RaceGoing.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/RaceGoing.java
new file mode 100644
index 0000000..81b9721
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/RaceGoing.java
@@ -0,0 +1,47 @@
+package race;
+
+import java.util.concurrent.BrokenBarrierException;
+import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.locks.Lock;
+
+public class RaceGoing implements Runnable {
+ public static final int CARS_COUNT = 4;
+ public static CyclicBarrier newBarrier = new CyclicBarrier(CARS_COUNT + 1);
+ public static CyclicBarrier newFinishBarrier = new CyclicBarrier(CARS_COUNT);
+ public static Lock lock;
+ public static Car[] cars;
+ public static Semaphore tunnelSemaphore = new Semaphore(CARS_COUNT / 2);
+
+ @Override
+ public void run() {
+ System.out.println("Number of parties required to trip the barrier = " +
+ newBarrier.getParties());
+
+ System.out.println("ВАЖНОЕ ОБЪЯВЛЕНИЕ >>> Подготовка!!!");
+ Race race = new Race(new Road(60), new Tunnel(80), new Road(40), new Finish());
+ cars = new Car[CARS_COUNT];
+ for ( int i = 0; i < cars.length; i++ ) {
+ cars[i] = new Car(20 + (int) (Math.random() * 10), i + 1, race);
+ }
+ for ( int i = 0; i < cars.length; i++ ) {
+ new Thread(cars[i]).start();
+ }
+
+ try {
+ newBarrier.await();
+ } catch (InterruptedException | BrokenBarrierException e) {
+ e.printStackTrace();
+ }
+ System.out.println("Race begun");
+ try {
+ newBarrier.await();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (BrokenBarrierException e) {
+ e.printStackTrace();
+ }
+ System.out.println("The race is finished");
+ }
+}
+
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Road.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Road.java
new file mode 100644
index 0000000..15cad8b
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Road.java
@@ -0,0 +1,19 @@
+package race;
+
+public class Road extends Stage {
+ public Road(int length) {
+ this.length = length;
+ this.description = "Дорога " + length + " метров";
+ }
+
+ @Override
+ public void go(Car c) {
+ try {
+ System.out.println(c.getName() + " начал этап: " + description);
+ Thread.sleep(length / c.getSpeed() * 1000);
+ System.out.println(c.getName() + " закончил этап: " + description);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Stage.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Stage.java
new file mode 100644
index 0000000..1661a4e
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Stage.java
@@ -0,0 +1,10 @@
+package race;
+public abstract class Stage {
+ protected int length;
+ protected String description;
+ public String getDescription() {
+ return description;
+ }
+ public abstract void go(Car c);
+}
+
diff --git a/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Tunnel.java b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Tunnel.java
new file mode 100644
index 0000000..cc02ec0
--- /dev/null
+++ b/org.volha.geekbrains.java.level3/threadracefromexample/src/main/java/race/Tunnel.java
@@ -0,0 +1,29 @@
+package race;
+
+import static race.RaceGoing.tunnelSemaphore;
+
+public class Tunnel extends Stage {
+ public Tunnel(int tunnelLength) {
+ this.length = tunnelLength;
+ this.description = "Тоннель " + length + " метров";
+ }
+
+ @Override
+ public void go(Car c) {
+ try {
+ try {
+ System.out.println(c.getName() + " готовится к этапу(ждет): " + description);
+ tunnelSemaphore.acquire();
+ System.out.println(c.getName() + " начал этап: " + description);
+ Thread.sleep(length / c.getSpeed() * 1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } finally {
+ System.out.println(c.getName() + " закончил этап: " + description);
+ tunnelSemaphore.release();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
\ No newline at end of file