Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
441a587
Add files commit.
uoles Mar 16, 2019
b22839c
Edit readme.
uoles Mar 16, 2019
baef643
Edit readme.
uoles Mar 16, 2019
1afc67d
Edit readme.
uoles Mar 16, 2019
9d46552
- Переименование классов.
uoles Mar 17, 2019
c3266f7
- Переименованы классы.
Mar 19, 2019
f02aaa1
- XML конфигурация spring заменена на Java-based.
Mar 19, 2019
0c00541
Java-based конфигурация spring заменена на Annotation-based.
Mar 19, 2019
5836fb1
Загрузка имени файла с вопросами из конфигурационного файла.
uoles Mar 19, 2019
da86894
- Рефакторинг.
Mar 20, 2019
c27da6c
- Локализация для вопросов и сообщений.
Mar 21, 2019
e37b4a6
Merge branch 'master' into feature/hw-02
uoles Mar 21, 2019
d1ca11a
- Убраны лишние тесты.
uoles Mar 21, 2019
00bc9bd
Рефакторинг.
uoles Mar 21, 2019
f6c34d2
Merge branch 'master' into feature/hw-02
uoles Mar 21, 2019
e2ba5e0
Добавление файлов настроек для тестов.
Mar 22, 2019
998fed3
Рефакторинг.
Mar 22, 2019
f5693bd
Рефакторинг.
uoles Mar 23, 2019
c44d163
- Перенос приложения на Spring Boot.
uoles Mar 31, 2019
6766ccd
Тесты переведены на Spring Boot.
Apr 18, 2019
f7c8922
Настройки перенесены в *.yml файлы.
Apr 19, 2019
2fd53d2
Добавлен баннер.
Apr 22, 2019
f483831
Рефакторинг.
Apr 22, 2019
879244e
Доработки по замечаниям.
Apr 23, 2019
845b1b5
Добавление Spring Shell.
uoles May 25, 2019
60d2af1
Решение проблемы блокирования тестов Spring Shell'ом.
uoles May 25, 2019
4aa4125
- Функционал по печати результатов вынесен в отдельный метод.
uoles May 26, 2019
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: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@
target
*.iml
*.log
*.txt
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
# OtusSpringHW
Домашние задания по Spring для Otus.
# OtusSpringHW

Домашнее задание #4:
- Перевести приложение для проведения опросов на Spring Shell.
- Подключить Spring Shell, используя starter.
- Написать юнит-тесты и использовать spring-boot-test-starter.

### 19-05-26 Доработки:
- Функционал по печати результатов вынесен в отдельный метод.
- Разделение функционала метода startTest и использование @ShellMethodAvailability.
147 changes: 147 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
<?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>

<name>home-work</name>

<groupId>ru.otus.mkulikov</groupId>
<artifactId>home-work</artifactId>
<version>1.0-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<java.version>11</java.version>
<encoding>UTF-8</encoding>
</properties>

<dependencies>
<dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.3</version>
</dependency>

<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>

<!-- tests -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.2</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.4.1</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-all -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>

<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>${encoding}</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>${encoding}</encoding>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>

<configuration>
<skipTests>false</skipTests>
</configuration>
</plugin>

<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>

<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.csv</include>
<include>**/*.properties</include>
<include>**/*.txt</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
21 changes: 21 additions & 0 deletions src/main/java/ru/otus/mkulikov/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package ru.otus.mkulikov;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 2019-03-14
* Time: 15:27
*/

@SpringBootApplication
@EnableConfigurationProperties
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
22 changes: 22 additions & 0 deletions src/main/java/ru/otus/mkulikov/app/config/LocaleProperties.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ru.otus.mkulikov.app.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 19.04.2019
* Time: 9:57
*/

@Data
@Component
@ConfigurationProperties(prefix = "locale")
public class LocaleProperties {

private String basename;
private String defaultLocale;
private String encoding;
}
20 changes: 20 additions & 0 deletions src/main/java/ru/otus/mkulikov/app/config/QuetionsProperties.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package ru.otus.mkulikov.app.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 19.04.2019
* Time: 10:25
*/

@Data
@Component
@ConfigurationProperties(prefix = "questions.default")
public class QuetionsProperties {

private String dir;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.otus.mkulikov.app.exceptions;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 2019-03-17
* Time: 01:40
*/

public class QuestionsFileLoadingException extends RuntimeException {

public QuestionsFileLoadingException(String message) {
super(message);
}

public QuestionsFileLoadingException(String message, Throwable cause) {
super(message, cause);
}
}
39 changes: 39 additions & 0 deletions src/main/java/ru/otus/mkulikov/app/models/Question.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package ru.otus.mkulikov.app.models;

import lombok.Data;

import java.io.Serializable;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 2019-03-14
* Time: 15:54
*/

@Data
public class Question implements Serializable {

private String id;
private String question;
private String answer1;
private String answer2;
private String answer3;
private String answer4;
private String trueAnswer;
private String userAnswer;

public Question(String id, String question, String answer1, String answer2, String answer3, String answer4, String trueAnswer, String userAnswer) {
this.id = id;
this.question = question;
this.answer1 = answer1;
this.answer2 = answer2;
this.answer3 = answer3;
this.answer4 = answer4;
this.trueAnswer = trueAnswer;
this.userAnswer = userAnswer;
}

public Question() {
}
}
22 changes: 22 additions & 0 deletions src/main/java/ru/otus/mkulikov/app/models/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ru.otus.mkulikov.app.models;

import lombok.Data;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 2019-03-14
* Time: 15:29
*/

@Data
public class User {

private final String name;
private final String surname;

public User(String name, String surname) {
this.name = name;
this.surname = surname;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package ru.otus.mkulikov.app.services.console;

import org.springframework.stereotype.Service;

import javax.annotation.PreDestroy;
import java.util.Scanner;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 17.03.2019
* Time: 23:21
*/

@Service
public class ConsoleIOServiceImpl implements IOService {

private final Scanner in;

public ConsoleIOServiceImpl() {
in = new Scanner(System.in);
}

@Override
public void write(String text) {
System.out.println(text);
}

@Override
public String read() {
return in.nextLine();
}

@PreDestroy
public void destroy() {
in.close();
}
}
15 changes: 15 additions & 0 deletions src/main/java/ru/otus/mkulikov/app/services/console/IOService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.otus.mkulikov.app.services.console;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 17.03.2019
* Time: 23:21
*/

public interface IOService {

void write(String text);

String read();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.otus.mkulikov.app.services.localisation;

/**
* Created by IntelliJ IDEA.
* Developer: Maksim Kulikov
* Date: 2019-03-21
* Time: 14:02
*/

public interface LocalisationService {

String getValue(String key);

String getValueWithParams(String key, String[] params);
}
Loading