Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1ec4883
Добавлено дом.задание 1 с задачами
Ekat4 Dec 21, 2024
654e3cb
Добавлено дом.задание 6. Покупатель и продукты. Приложение
Ekat4 Dec 22, 2024
991b612
Добавлено дом.задание 6. Покупатель и продукты. Приложение
Ekat4 Dec 22, 2024
e990095
Добавлено дом.задание 6. Покупатель и продукты. Приложение
Ekat4 Dec 22, 2024
94444e1
Добавлено дом.задание 4.Алфавит и стрелы. Две задачи
Ekat4 Dec 24, 2024
ae75a7e
Добавлено дом.задание 3.Телевизор и его параметры. Приложение.
Ekat4 Dec 24, 2024
02e6efa
Добавлено дом.задание 1.
Ekat4 Dec 26, 2024
5dd45c5
Добавлено дом.задание 2. Задачи выполнены
Ekat4 Dec 26, 2024
ed634f7
Добавлено дом.задание 7. Добавление наследования продолжение предыдущ…
Ekat4 Dec 27, 2024
0c301f4
Добавлено домашнее задание 8. Сформирован файл с данными задачи.
Ekat4 Dec 27, 2024
624199e
Домашние задания/домашнее задание11.
Ekat4 Feb 8, 2025
4a0ca67
Домашние задания/домашнее задание12.
Ekat4 Feb 9, 2025
98a5cfa
Домашние задания/домашнее задание12.
Ekat4 Feb 9, 2025
5bbfbab
Базовый автомобиль обладает следующими свойствами: маркой (строка),
Ekat4 Feb 9, 2025
c8df0c2
Домашние задания/домашнее задание09
Ekat4 Feb 10, 2025
019c1ba
Аттестационные работы/аттестация01
Ekat4 Mar 3, 2025
c0cff07
домашние задания/домашнее задание13
Ekat4 Mar 4, 2025
0bae35a
домашние задания/домашнее задание14
Ekat4 Mar 6, 2025
93a86ea
домашние задания/домашнее задание16
Ekat4 Mar 10, 2025
fb2945b
домашние задания/домашнее задание17
Ekat4 Mar 15, 2025
7b08134
домашние задания/домашнее задание18
Ekat4 Mar 23, 2025
e1faa13
домашние задания/домашнее задание19
Ekat4 Mar 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added lib/flyway-commandline-11.4.0.jar
Binary file not shown.
Binary file added lib/flyway-database-postgresql-11.4.0.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file added output.txt
Empty file.
98 changes: 98 additions & 0 deletions src/main/java/attestations/App.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package attestations;

import attestations.attestation01.model.User;

import attestations.attestation01.repository.UsersRepository;

import java.util.List;
import java.util.Optional;

public class App {
public static void main(String[] args) {
UsersRepository usersRepository = new UsersRepository() {
@Override
public boolean addUser(User user) {
return false;
}

@Override
public Optional<User> getUser(String login) {
return Optional.empty();
}

@Override
public void create(User user) {

}

@Override
public Optional<User> findById(String id) {
return Optional.empty();
}

@Override
public List<User> findAll() {
return List.of();
}

@Override
public void update(User user) {

}

@Override
public void deleteById(String id) {

}

@Override
public void deleteAll() {

}
}; // Создаем экземпляр

// Создание пользователей
// Создание пользователей
User user1 = new User("f5a8a3cb-4ac9-4b3b-8a65-c424e129b9d2", "noisemc_99", "password_123", "password_123",
"Крылов", "Виктор", "Павлович", 25, true);

usersRepository.create(user1);
System.out.println("Пользователь создан: " + user1.getLogin());

// Поиск по ID
Optional<User> foundUser = usersRepository.findById("f5a8a3cb-4ac9-4b3b-8a65-c424e129b9d2");
if (foundUser .isPresent()) {
System.out.println("Найден пользователь: " + foundUser .get().getLogin());
} else {
System.out.println("Пользователь не найден.");
}

// Выгрузка всех пользователей
List<User> allUsers = usersRepository.findAll();
System.out.println("Все пользователи: ");
for (User user : allUsers) {
System.out.println(user);
}

// Обновление пользователя
user1.setAge(26); // Убедитесь, что метод setAge публичный
usersRepository.update(user1);
System.out.println("Обновленный пользователь: " + usersRepository.findById(user1.getId()).get().getAge());

// Удаление пользователя
usersRepository.deleteById(user1.getId());
System.out.println("Пользователь удален.");

// Проверка на наличие удаленного пользователя
foundUser = usersRepository.findById(user1.getId());
if (foundUser .isPresent()) {
System.out.println("Пользователь все еще существует.");
} else {
System.out.println("Пользователь не найден.");
}

// Удаление всех пользователей
usersRepository.deleteAll();
System.out.println("Все пользователи удалены. Текущий список: " + usersRepository.findAll());
}
}
121 changes: 121 additions & 0 deletions src/main/java/attestations/attestation01/model/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package attestations.attestation01.model;

import java.time.LocalDateTime;

public class User {
private String id;
private LocalDateTime dateAdded;
private String login;
private String password;
private String lastName;
private String firstName;
private String middleName;
private Integer age;
private boolean isWorker;

public User(String id, String login, String password, String confirmPassword,
String lastName, String firstName, String middleName,
Integer age, boolean isWorker) {
this.id = id;
this.dateAdded = LocalDateTime.now();
setLogin(login);
setPassword(password, confirmPassword);
setLastName(lastName);
setFirstName(firstName);
setMiddleName(middleName);
setAge(age);
this.isWorker = isWorker;
}

public User(String validLogin, String validPassword) {
}

public User(String number, LocalDateTime now, String user1, String password1, String password11, String иванов, String иван, Object o, int i, boolean b) {
}

public String getId() {
return id;
}

public LocalDateTime getDateAdded() {
return dateAdded;
}

public String getLogin() {
return login;
}

public String getPassword() {
return password;
}

public String getLastName() {
return lastName;
}

public String getFirstName() {
return firstName;
}

public String getMiddleName() {
return middleName;
}

public Integer getAge() {
return age;
}

public boolean isWorker() {
return isWorker;
}

public void setAge(Integer age) {
this.age = age; // Можно добавить валидацию, если нужно
}

private void setFirstName(String firstName) {
if (!firstName.matches("[a-zA-Zа-яА-ЯёЁ]+")) {
throw new IllegalArgumentException("Имя должно содержать только буквы");
}
this.firstName = firstName;
}

private void setLastName(String lastName) {
if (!lastName.matches("[a-zA-Zа-яА-ЯёЁ]+")) {
throw new IllegalArgumentException("Фамилия должна содержать только буквы");
}
this.lastName = lastName;
}

private void setPassword(String password, String confirmPassword) {
if (password.length() > 20 || !password.matches(".*[a-zA-Z].*") || !password.matches(".*[0-9].*") || !password.matches(".*_.*")) {
throw new IllegalArgumentException("Пароль должен содержать буквы, цифры и знак подчеркивания, и быть менее 20 символов");
}
this.password = password;
}


private void setLogin(String login) {
if (login.matches("\\d+")) {
throw new IllegalArgumentException("Логин не может состоять только из цифр");
}
if (!login.matches("^[a-zA-Z0-9_]{1,20}$")) {
throw new IllegalArgumentException("Логин должен содержать буквы, цифры и знак подчеркивания, и быть менее 20 символов");
}
this.login = login;
}

private void setMiddleName(String middleName) {
if (middleName != null && !middleName.matches("[a-zA-Zа-яА-ЯёЁ]*")) {
throw new IllegalArgumentException("Отчество должно содержать только буквы");
}
this.middleName = middleName;
}

@Override
public String toString() {
return String.join(",", id, dateAdded.toString(), login, password,
lastName, firstName, middleName != null ? middleName : "",
age != null ? age.toString() : "", String.valueOf(isWorker));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
package attestations.attestation01.repository.Impl;

import attestations.attestation01.model.User;
import attestations.attestation01.repository.UsersRepository;

import java.util.List;
import java.util.Optional;
import java.io.*;
import java.util.*;
import static java.nio.file.Files.lines;
import static jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle.exceptions;




import java.util.ArrayList;


import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;

public class UsersRepositoryFileImpl implements UsersRepository {
private static final List<User> USERS = new ArrayList<>();
private static final String FILE_PATH = "users.txt"; // Укажите путь к файлу

@Override
public boolean addUser(User user) {
return false;
}

@Override
public Optional<User> getUser(String login) {
return Optional.empty();
}

@Override
public void create(User user) {
USERS.add(user);
saveUsersToFile();
}

@Override
public Optional<User> findById(String id) {
if (USERS.isEmpty()) {
findAll(); // Загружаем пользователей из файла, если список пуст
}
return USERS.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.or(() -> {
throw new NoSuchElementException("Пользователь не найден!");
});
}

@Override
public List<User> findAll() {
if (USERS.isEmpty()) {
try (BufferedReader br = new BufferedReader(new FileReader(FILE_PATH))) {
List<User> usersFromFile = br.lines()
.map(this::mapLineToUser )
.toList();
USERS.addAll(usersFromFile);
} catch (IOException e) {
System.out.println("Ошибка чтения файла: " + e.getMessage());
}
}
return new ArrayList<>(USERS); // Возвращаем копию списка пользователей
}

private User mapLineToUser (String line) {
String[] parts = line.split("\\|");
return new User(
parts[0],
parts[2],
parts[3],
parts[4],
parts[5],
parts[6],
parts[7].isEmpty() ? null : parts[7],
parts[8].isEmpty() ? null : Integer.parseInt(parts[8]),
Boolean.parseBoolean(parts[9])
);
}

@Override
public void update(User user) {
Optional<User> existingUser = findById(user.getId());
USERS.remove(existingUser .get());
USERS.add(user);
saveUsersToFile();
}

@Override
public void deleteById(String id) {
User userToDelete = findById(id)
.orElseThrow(() -> new NoSuchElementException("Пользователь не найден!"));
USERS.remove(userToDelete);
saveUsersToFile();
}

@Override
public void deleteAll() {
USERS.clear();
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(FILE_PATH))) {
bufferedWriter.write(""); // Очищаем файл
} catch (IOException e) {
throw new RuntimeException(e);
}
}

private void saveUsersToFile() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FILE_PATH))) {
for (User user : USERS) {
String userData = String.join("|",
user.getId(),
user.getDateAdded().toString(), // Предполагается, что у вас есть метод для получения даты
user.getLogin(),
user.getPassword(),
user.getPassword(), // confirmPassword
user.getLastName(),
user.getFirstName(),
user.getMiddleName() != null ? user.getMiddleName() : "",
user.getAge() != null ? user.getAge().toString() : "",
String.valueOf(user.isWorker())
);
writer.write(userData);
writer.newLine();
}
} catch (IOException e) {
System.out.println("Ошибка записи файла: " + e.getMessage());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package attestations.attestation01.repository;

import attestations.attestation01.model.User;

import java.util.List;
import java.util.Optional;


public interface UsersRepository {
boolean addUser(User user);

Optional<User> getUser(String login);

void create(User user); // Создание нового пользователя
Optional<User> findById(String id); // Поиск пользователя по ID
List<User> findAll(); // Получение списка всех пользователей
void update(User user); // Обновление данных пользователя
void deleteById(String id); // Удаление пользователя по ID
void deleteAll(); // Удаление всех пользователей
}
12 changes: 12 additions & 0 deletions src/main/java/homeworks/homework01/Fahrenheit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package homeworks.homework01;

public class Fahrenheit {
public static void main(String[] args) {
double fahrenheit = 212.0;
double celsius = (fahrenheit - 32) * 5/9; {

System.out.println(fahrenheit + " "+"градусов" + " " +"по Фаренгейту"+" равна"+ " "+ celsius + " по Цельсию");
}
}
}

Loading