Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 16 additions & 0 deletions .github/workflows/java.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Java CI
on: [push]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
java-version: '21'
distribution: 'temurin'
- name: Build with Maven
run: mvn --batch-mode --update-snapshots package
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ out/
!**/src/main/**/out/
!**/src/test/**/out/
.idea
Application/target
DataAccess/target
Presentation/target

### Eclipse ###
.apt_generated
Expand Down
119 changes: 119 additions & 0 deletions Application/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>is.technologies</groupId>
<artifactId>Application</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

<!-- Зависимость для использования Lombok. -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>

</dependencies>

<!-- Блок для плагинов, которые будут запущены во время фаз сборки проекта. -->
<build>
<plugins>

<!-- Плагин для сборки проекта вместе с зависимостями этого проекта. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

<!-- Плагин для сборки проекта в формате JAR. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>
is.technologies.Main
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

<!-- Плагин для генерации отчета в формате Maven. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.12.1</version>
</plugin>

<!-- Плагин, заставляющий работать плагин maven-site-plugin на версии Java старше 8. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.4.2</version>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.2</version>
</dependency>
</dependencies>
</plugin>

<!-- Плагин для генерации отчета в формате JavaDoc. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<source>17</source>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
<executions>
<execution>
<id>maven-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package Application.Abstractions.Repositories;

import Application.Contracts.ResultTypes.BankAccountResult;
import Application.Models.Entites.BankAccount;

/**
* Репозиторий для управления банковскими счетами.
* Реализует паттерн CRUD для добавления, поиска, обновления и удаления банковских счетов.
*/
public interface IBankAccountRepository {

/**
* Добавляет новый банковский счет в хранилище данных.
*
* @param account объект банковского счета, который необходимо добавить.
* @return результат операции добавления банковского счета, может содержать сообщение об ошибке или подтверждение успеха.
*/
BankAccountResult AddBankAccount(BankAccount account);

/**
* Ищет банковский счет в хранилище данных по его идентификатору.
*
* @param id идентификатор банковского счета, который нужно найти.
* @return объект банковского счета, если он существует; {@code null}, если счет не найден.
*/
BankAccount FindBankAccountById(Integer id);

/**
* Обновляет баланс существующего банковского счета.
*
* @param id идентификатор банковского счета, баланс которого необходимо обновить.
* @param balance новый баланс банковского счета.
* @return результат операции обновления баланса, может содержать сообщение об ошибке или подтверждение успеха.
*/
BankAccountResult UpdateBankAccountBalance(Integer id, Double balance);

/**
* Удаляет банковский счет из хранилища данных по его идентификатору.
*
* @param id идентификатор банковского счета, который нужно удалить.
* @return результат операции удаления банковского счета, может содержать сообщение об ошибке или подтверждение успеха.
*/
BankAccountResult DeleteBankAccount(Integer id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package Application.Abstractions.Repositories;

import Application.Contracts.ResultTypes.OperationResult;
import Application.Models.Entites.Operation;

import java.util.ArrayList;

/**
* Репозиторий для управления операциями с банковскими счетами.
* Реализует паттерн CRUD для добавления операций и получения истории операций.
*/
public interface IOperationRepository {

/**
* Добавляет новую операцию в хранилище данных.
*
* @param operation операция, которую необходимо добавить в хранилище.
* @return результат операции добавления, может содержать сообщение об ошибке или подтверждение успеха.
*/
OperationResult AddOperation(Operation operation);

/**
* Извлекает историю операций для конкретного банковского счета.
*
* @param bankAccountId идентификатор банковского счета, для которого нужно получить историю операций.
* @return список операций, выполненных с указанным банковским счетом.
*/
ArrayList<Operation> GetOperationHistory(Integer bankAccountId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package Application.Abstractions.Repositories;

import Application.Contracts.ResultTypes.UserResult;
import Application.Models.Entites.User;

/**
* Репозиторий для управления операциями с пользователями.
* Использует паттерн CRUD (Create, Read, Update, Delete) для добавления, поиска, обновления и удаления пользователей.
*/
public interface IUserRepository {

/**
* Добавляет нового пользователя в хранилище данных.
*
* @param user объект пользователя, который необходимо добавить.
* @return результат операции добавления пользователя, может содержать сообщение об ошибке или подтверждение успеха.
*/
UserResult AddUser(User user);

/**
* Ищет пользователя в хранилище данных по его идентификатору.
*
* @param id идентификатор пользователя, которого нужно найти.
* @return найденный объект пользователя, если он существует; {@code null}, если пользователь не найден.
*/
User FindUserById(Integer id);

/**
* Обновляет информацию о существующем пользователе в хранилище данных.
*
* @param id идентификатор пользователя, чьи данные нужно обновить.
* @param userUpdate объект с обновленными данными пользователя.
* @return результат операции обновления пользователя, может содержать сообщение об ошибке или подтверждение успеха.
*/
UserResult UpdateUser(Integer id, User userUpdate);

/**
* Удаляет пользователя из хранилища данных по его идентификатору.
*
* @param id идентификатор пользователя, которого нужно удалить.
* @return результат операции удаления пользователя, может содержать сообщение об ошибке или подтверждение успеха.
*/
UserResult DeleteUser(Integer id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package Application.Contracts.Interfaces;

import Application.Contracts.ResultTypes.BankAccountResult;
import Application.Contracts.ResultTypes.OperationResult;
import Application.Contracts.ResultTypes.UserResult;
import Application.Models.Entites.BankAccount;
import Application.Models.Entites.User;

/**
* Интерфейс, предоставляющий операции для управления пользователями и их банковскими счетами.
* Включает методы для создания, удаления пользователей, управления их друзьями и банковскими счетами,
* а также выполнения различных операций с банковскими счетами.
*/
public interface IUserService {

/**
* Создание нового пользователя.
*
* @param user объект пользователя, который должен быть создан.
* @return результат операции создания пользователя.
*/
UserResult CreateUser(User user);

/**
* Удаление пользователя.
*
* @param user объект пользователя, который должен быть удален.
* @return результат операции удаления пользователя.
*/
UserResult DeleteUser(User user);

/**
* Получение информации о пользователе.
*
* @param user объект пользователя, информацию о котором необходимо получить.
*/
void GetUserInfo(User user);

/**
* Добавление пользователя в друзья.
*
* @param user объект текущего пользователя.
* @param other объект пользователя, которого нужно добавить в друзья.
*/
void AddFriend(User user, User other);

/**
* Удаление пользователя из списка друзей.
*
* @param user объект текущего пользователя.
* @param other объект пользователя, которого нужно удалить из друзей.
*/
void RemoveFriend(User user, User other);

/**
* Добавление нового банковского счета пользователю.
*
* @param user объект пользователя, которому нужно добавить банковский счет.
* @param bankAccount объект банковского счета, который нужно добавить.
* @return результат операции добавления банковского счета.
*/
BankAccountResult addBankAccount(User user, BankAccount bankAccount);

/**
* Удаление банковского счета пользователя.
*
* @param user объект пользователя, чей банковский счет должен быть удален.
* @param bankAccount объект банковского счета, который нужно удалить.
* @return результат операции удаления банковского счета.
*/
BankAccountResult RemoveBankAccount(User user, BankAccount bankAccount);

/**
* Проверка баланса банковского счета пользователя.
*
* @param user объект пользователя, чей баланс нужно проверить.
* @param bankAccount объект банковского счета, баланс которого нужно проверить.
* @return результат операции проверки баланса.
*/
OperationResult CheckBalance(User user, BankAccount bankAccount);

/**
* Пополнение банковского счета.
*
* @param bankAccount объект банковского счета, на который нужно пополнить средства.
* @param amount сумма, которую нужно внести на счет.
* @return результат операции пополнения.
*/
OperationResult Deposit(BankAccount bankAccount, Double amount);

/**
* Снятие средств с банковского счета.
*
* @param bankAccount объект банковского счета, с которого нужно снять средства.
* @param amount сумма, которую нужно снять со счета.
* @return результат операции снятия средств.
*/
OperationResult Withdraw(BankAccount bankAccount, Double amount);

/**
* Перевод средств между двумя банковскими счетами.
*
* @param bankAccount1 объект исходного банковского счета.
* @param bankAccount2 объект целевого банковского счета.
* @param amount сумма, которую нужно перевести.
* @return результат операции перевода.
*/
OperationResult Transfer(BankAccount bankAccount1, BankAccount bankAccount2, Double amount);

/**
* Получение истории операций для конкретного банковского счета.
*
* @param bankAccount объект банковского счета, для которого нужно получить историю операций.
* @return результат операции получения истории.
*/
OperationResult GetOperationHistory(BankAccount bankAccount);
}
Loading