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
8 changes: 8 additions & 0 deletions module01/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@
<groupId>ru.sberbank.edu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.0-M1</version>
<scope>test</scope>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>

<artifactId>module01</artifactId>
Expand Down
33 changes: 33 additions & 0 deletions module01/src/main/java/ru/sberbank/edu/MyCommonDivisor.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package ru.sberbank.edu;

/**
* @author Чернов Алексей
*/
public class MyCommonDivisor implements CommonDivisor {
/**
* Метод расчета НОД по алгоритму Евклида
*/
@Override
public int getDivisor(int firstNumber, int secondNumber) {

while (firstNumber > 0 && secondNumber > 0) {
if ((secondNumber % firstNumber) == 0) {
return firstNumber;
}

secondNumber %= firstNumber;

if ((firstNumber % secondNumber) == 0) {
return secondNumber;
}

firstNumber %= secondNumber;
}

if (firstNumber == 0) {
return secondNumber;
}

return firstNumber;
}
}
13 changes: 13 additions & 0 deletions module01/src/main/java/ru/sberbank/edu/MyGreeting.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ru.sberbank.edu;
/**
* @author Чернов Алексей
*/
public class MyGreeting implements Greeting{
/**
* Метод возвращает строку с информацией о хобби
*/
public String getBestHobby(){
return "My hobby is long-distance running";
}

}
39 changes: 39 additions & 0 deletions module01/src/test/java/CommonDivisorTests.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import ru.sberbank.edu.MyCommonDivisor;

import java.util.stream.Stream;

import static org.junit.jupiter.params.provider.Arguments.arguments;

/**
* @author Чернов Алексей
* Класс с тестами для метода getDivisor класса ru.sberbank.edu.MyCommonDivisor
*/
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class CommonDivisorTests {

private static Stream<Arguments> testArguments() {
return Stream.of(
arguments(0, 0, 0),
arguments(5, 50, 5),
arguments(77, 14, 7),
arguments(13, 13, 13),
arguments(1, 1, 1)
);
}


MyCommonDivisor TestCommonDivisor = new MyCommonDivisor();

@ParameterizedTest
@MethodSource("testArguments")
public void CommonDivisorTest(int a, int b, int result) {

Assertions.assertEquals(TestCommonDivisor.getDivisor(a, b), result);
}

}
17 changes: 17 additions & 0 deletions module01/src/test/java/GreetingTests.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import org.junit.jupiter.api.Test;
import ru.sberbank.edu.MyGreeting;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class GreetingTests {
/**
* @author Чернов Алексей
* Класс с тестами для метода getBestHobby класса ru.sberbank.edu.MyGreeting
*/
@Test
public void greetingMainTest(){
MyGreeting testGreeting = new MyGreeting();
assertEquals(testGreeting.getBestHobby(), "My hobby is long-distance running");
}

}
4 changes: 2 additions & 2 deletions module02/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

## Задание №1

* Напишите программу которая принимает на вход файл, содержащий некую инфомацию на нескольких строках.
* Напишите программу, которая принимает на вход файл, содержащий некую информацию на нескольких строках.
* Необходимо собрать статистику, сколько строк, какая строка самая длинная, сколько всего пробелов.
* Результат записать в другой файл.
* Подумать как лучше организовать, если у клиента должен быть выбор сохоранять в бд или в файл.
* Подумать как лучше организовать, если у клиента должен быть выбор сохранять в бд или в файл.

## Критерии приемки

Expand Down
20 changes: 20 additions & 0 deletions module02/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@
<groupId>ru.sberbank.edu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.0-M1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.sberbank.edu</groupId>
<artifactId>module01</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<modelVersion>4.0.0</modelVersion>

<artifactId>module02</artifactId>
Expand Down
12 changes: 6 additions & 6 deletions module02/src/main/java/ru/sberbank/edu/App.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package ru.sberbank.edu;

import java.io.IOException;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
public class App {
public static void main(String[] args) throws IOException {
StatisticCollectorToFile result = new StatisticCollectorToFile("module02/src/main/resources/dev_data", "AppResult.txt");
result.save(result.getLineCount(), result.getSpaceCount(), result.getLongestLine());
}
}
17 changes: 11 additions & 6 deletions module02/src/main/java/ru/sberbank/edu/Statistic.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
package ru.sberbank.edu;

// интерфейс можно менять
import java.io.IOException;


public interface Statistic {

int getLineCount();
int getSpaceCount();
String getLongestLine();
void save(int lineCount, int spaceCount, String line);
int getLineCount() throws IOException;


int getSpaceCount() throws IOException;

void save(int lineCount, int spaceCount, String line) throws IOException;

}
String getLongestLine() throws IOException;
}
94 changes: 94 additions & 0 deletions module02/src/main/java/ru/sberbank/edu/StatisticCollector.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package ru.sberbank.edu;

import java.io.*;
/**
* @author Чернов Алексей
*/

abstract class StatisticCollector implements Statistic {

/**
* Переменная с адресом файла-источника для стастистики
*/
private final File statisticSource;

StatisticCollector(String file) {
statisticSource = new File(file);
}

/**
* Метод получения количества линий в файле
*/
@Override
public int getLineCount() throws IOException {

FileReader fileReader = new FileReader(statisticSource);

BufferedReader bufferedReader = new BufferedReader(fileReader);

int lineCounter = 0;

String line = bufferedReader.readLine();

while (line != null) {
lineCounter += 1;
line = bufferedReader.readLine();
}

fileReader.close();
return lineCounter;
}

/**
* Метод получения количества пробелов в файле
*/
@Override
public int getSpaceCount() throws IOException {

FileReader fileReader = new FileReader(statisticSource);

int spaceCounter = 0;

int symbol = fileReader.read();

while (symbol != -1) {

if ((char) symbol == ' ') {
spaceCounter += 1;
}

symbol = fileReader.read();
}

fileReader.close();
return spaceCounter;
}

/**
* Метод получения самой длинной строки в файле
*/
@Override
public String getLongestLine() throws IOException {

FileReader fileReader = new FileReader(statisticSource);

BufferedReader bufferedReader = new BufferedReader(fileReader);

String theLongestString = "";
String line = bufferedReader.readLine();

while (line != null) {

if (line.length() > theLongestString.length()) {
theLongestString = line;
}

line = bufferedReader.readLine();

}

fileReader.close();
return theLongestString;
}

}
14 changes: 14 additions & 0 deletions module02/src/main/java/ru/sberbank/edu/StatisticCollectorToDB.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ru.sberbank.edu;

public class StatisticCollectorToDB extends StatisticCollector {
StatisticCollectorToDB(String file) {
super(file);
}

@Override
public void save(int lineCount, int spaceCount, String line) {

// DB recording...........

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package ru.sberbank.edu;

import java.io.FileWriter;
import java.io.IOException;

/**
* Класс сохранения информации в файл
* @author Чернов Алексей
*/
public class StatisticCollectorToFile extends StatisticCollector {

/**
* Имя файла для записи результата
*/
String resultFileName = "result.txt";

/**
* Фабричный метод с передачей костомного имени файла с результатом
*/
public StatisticCollectorToFile(String file, String result) {
super(file);
resultFileName = result;
}
/**
* Реализация фабричного метода идентичная классу-родителю
*/
public StatisticCollectorToFile(String file) {
super(file);
}

/**
* Метод записи полученных данных в файл
*/
@Override
public void save(int lineCount, int spaceCount, String line) throws IOException {

FileWriter fileWriter = new FileWriter(resultFileName);
fileWriter.write("Counted lines: " + lineCount + "\n");
fileWriter.write("Counted spaces: " + spaceCount + "\n");
fileWriter.write("The longest line: \"" + line + "\"");

fileWriter.close();

}

}
14 changes: 14 additions & 0 deletions module02/src/main/resources/dev_data
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
bdssdv
fdbvdb
bds gdf sdf
fdsg df
d gdfg dfgdf g

fg
dgfg
f g fd fgdfgdfgdf
gff
fdgdf



Loading