Skip to content
Open
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
1 change: 1 addition & 0 deletions out/production/java-lessons/ru/tn/courses/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/out/
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.
10 changes: 0 additions & 10 deletions src/main/java/ru/tn/courses/rnemykin/Main1.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.tn.courses.tmuminov.v2.task1.subtask1;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
public class Subtask1 {

public static void main(String[] args) {
List<Integer> exampleArray = Arrays.asList(1, 0, 2, 3, 4, 0, 15, 67, 0, 413, 1, 0, 5);
List<Integer> resultArray = new ArrayList<>();

for (int i = 0; i < exampleArray.size(); i++)
if (exampleArray.get(i) == 0) resultArray.add(i);

System.out.println(resultArray);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package ru.tn.courses.tmuminov.v2.task1.subtask2;

import ru.tn.courses.tmuminov.v2.task1.subtask2.enums.Banks;
import ru.tn.courses.tmuminov.v2.task1.subtask2.models.Rate;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class ExampleUIClass {

private final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
private double highestRate = 0;
private Banks resultBunk;
private final Map<Banks, Rate> banks = new HashMap<>();

{
for (Banks bank : Banks.values()) {
banks.put(bank, new Rate());
}
}

public void startProgram() throws IOException {
print("Write your amount of money");
int amount = Integer.parseInt(bufferedReader.readLine());

print("Here is information about exchange rates\n");
banks.forEach((bank, rate) -> {
print(bank + " -> " + rate.getRate() + " " + rate.getCurrency());
if(rate.getRate() > highestRate){
highestRate = rate.getRate();
resultBunk = bank;
}
});


print("It is most profitable to buy rubles from this bank: " + resultBunk + "\n");
print("the current rate of this bank is the highest: " + highestRate + "\n");

print("you will receive " + amount*highestRate + " rubles");
}

private void print(String message) {
System.out.println(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package ru.tn.courses.tmuminov.v2.task1.subtask2;


// У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли-продажи в банках города.
// В городе N банков. Составьте программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли.

import java.io.IOException;

public class Subtask2 {

public static void main(String[] args) {
ExampleUIClass exampleUIClass = new ExampleUIClass();
try {
exampleUIClass.startProgram();
} catch (IOException e) {
e.printStackTrace();
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package ru.tn.courses.tmuminov.v2.task1.subtask2.enums;

public enum Banks {
VTB,
SBERBANK,
TINKOFF,
POCHTABANK,
ALFABANK
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ru.tn.courses.tmuminov.v2.task1.subtask2.enums;

public enum Currency {
RUB,
USD
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ru.tn.courses.tmuminov.v2.task1.subtask2.models;

import ru.tn.courses.tmuminov.v2.task1.subtask2.enums.Currency;

public class Rate {

private double rate = Math.random() * 10 + 65;
private Currency currency = Currency.RUB;

public double getRate() {
return rate;
}

public void setRate(int rate) {
this.rate = rate;
}

public Currency getCurrency() {
return currency;
}

public void setCurrency(Currency currency) {
this.currency = currency;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ru.tn.courses.tmuminov.v2.task1.subtask3;


// Сортировка выбором. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить элементы так, чтобы они были расположены по убыванию.
// Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый – на место наибольшего.
// Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором.

import java.util.Arrays;
import java.util.List;

public class Subtask3 {
public static void main(String[] args) {
List<Integer> exampleArray = Arrays.asList(1, 66, 2, 3, 4, 0, 15, 67, 34, 413, 1, 236, 5);

for (int i = 0; i < exampleArray.size(); i++) {
int pos = i;
int max = exampleArray.get(i);

for (int j = i + 1; j < exampleArray.size(); j++) {
if (exampleArray.get(j) > max) {
pos = j;
max = exampleArray.get(j);
}
}
exampleArray.set(pos, exampleArray.get(i));
exampleArray.set(i, max);
}
System.out.println(exampleArray);
}
}
5 changes: 5 additions & 0 deletions src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- Необходимо разработать модель (класс) сообщение (уведомление).
- Необходимо разработать интерфейс для обработки (отправки) сообщения.
- Реализовать классы рассылки сообщения через различные каналы: телеграм, email, смс и тд.
- Необходимо оформить все перечисления через enum
- Вынести общую логику в абстракцию
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1;

import ru.tn.courses.tmuminov.v2.task2.subtask1.presentation.ExampleUIClass;

import java.io.IOException;

public class Subtask1 {



public static void main(String[] args){
try {
new ExampleUIClass().startProgram();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus;

public class EmailNotificationChannel implements Notifiable {

@Override
public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) {
// TODO something with user data
try {
// Random callback status
int temp = (Math.random() <= 0.5) ? 1 : 2;
Thread.sleep(2000);
if (temp % 2 == 0) {
callbackStatus.response(StatusCallback.SUCCESS);
} else
callbackStatus.response(StatusCallback.FAILURE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus;

public class SMSNotificationChannel implements Notifiable {

@Override
public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) {
// TODO something with user data
try {
// Random callback status
int temp = (Math.random() <= 0.5) ? 1 : 2;
Thread.sleep(2000);
if (temp % 2 == 0) {
callbackStatus.response(StatusCallback.SUCCESS);
} else
callbackStatus.response(StatusCallback.FAILURE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus;

public class TelegramNotificationChannel implements Notifiable {

@Override
public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) {
// TODO something with user data
try {
// Random callback status
int temp = (Math.random() <= 0.5) ? 1 : 2;
Thread.sleep(2000);
if (temp % 2 == 0) {
callbackStatus.response(StatusCallback.SUCCESS);
} else
callbackStatus.response(StatusCallback.FAILURE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus;

public class WhatsappNotificationChannel implements Notifiable {

@Override
public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) {
// TODO something with user data
try {
// Random callback status
int temp = (Math.random() <= 0.5) ? 1 : 2;
Thread.sleep(2000);
if (temp % 2 == 0) {
callbackStatus.response(StatusCallback.SUCCESS);
} else
callbackStatus.response(StatusCallback.FAILURE);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.SenderModel;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus;
import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.MessageModel;

import java.net.URI;

public class NotificationUseCase {

public void sendNotification(Notifiable clazz, String message, String username, CallbackStatus callbackStatus){
clazz.sendNotification(mapToModel(message, username), callbackStatus);
}

private NotificationModel mapToModel(String message, String username){
SenderModel senderModel = new SenderModel(1, username, URI.create("https://klike.net/uploads/posts/2019-07/1564314090_3.jpg"));
MessageModel messageModel = new MessageModel(1, message, System.currentTimeMillis());

return new NotificationModel(1, senderModel, messageModel);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums;

public enum StatusCallback {
SUCCESS,
FAILURE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback;

public interface CallbackStatus {
void response(StatusCallback statusCallback);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces;

import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel;

public interface Notifiable {
void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models;

public record MessageModel(
int messageId,
String message,
long sentTime
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models;

public record NotificationModel(
int notificationId,
SenderModel user,
MessageModel message
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models;

import java.net.URI;

public record SenderModel(
int senderId,
String senderName,
URI senderPhoto
) {
}
Loading