From 6bd3b5c5bee5f26b2eb95b9501da6aead4758867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B0=D1=82=D1=8C=D1=8F=D0=BD=D0=B0=20=D0=90=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=D0=BE=D0=BD=D0=BE=D0=B2=D0=B0?= Date: Tue, 14 Mar 2023 11:27:13 +0400 Subject: [PATCH] final --- .../ru/ulstu/is/sbapp/SbappApplication.java | 21 ------- .../configuration/TypeConfiguration.java | 20 +++++++ .../is/sbapp/controllers/MainController.java | 43 ++++++++++++++ .../ulstu/is/sbapp/interfaces/DoubleType.java | 23 ++++++++ .../is/sbapp/interfaces/ITypeOfData.java | 8 +++ .../ulstu/is/sbapp/interfaces/StringType.java | 26 +++++++++ .../ulstu/is/sbapp/service/ServiceType.java | 58 +++++++++++++++++++ 7 files changed, 178 insertions(+), 21 deletions(-) create mode 100644 src/main/java/ru/ulstu/is/sbapp/configuration/TypeConfiguration.java create mode 100644 src/main/java/ru/ulstu/is/sbapp/controllers/MainController.java create mode 100644 src/main/java/ru/ulstu/is/sbapp/interfaces/DoubleType.java create mode 100644 src/main/java/ru/ulstu/is/sbapp/interfaces/ITypeOfData.java create mode 100644 src/main/java/ru/ulstu/is/sbapp/interfaces/StringType.java create mode 100644 src/main/java/ru/ulstu/is/sbapp/service/ServiceType.java diff --git a/src/main/java/ru/ulstu/is/sbapp/SbappApplication.java b/src/main/java/ru/ulstu/is/sbapp/SbappApplication.java index 258aaa3..57c33d1 100644 --- a/src/main/java/ru/ulstu/is/sbapp/SbappApplication.java +++ b/src/main/java/ru/ulstu/is/sbapp/SbappApplication.java @@ -2,33 +2,12 @@ package ru.ulstu.is.sbapp; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; @SpringBootApplication -@RestController public class SbappApplication { public static void main(String[] args) { SpringApplication.run(SbappApplication.class, args); } - @GetMapping("/Sum/{val1}/{val2}") - public String Sum(@PathVariable String val1, @PathVariable String val2) { - return val1 + val2; - } - @GetMapping("/ToUpper/{str3}") - public String ToUpper(@PathVariable String str3) { - return str3.toUpperCase(); - } - @GetMapping("/Split/{str1}/{str2}") - public String Split(@PathVariable String str1, @PathVariable String str2) { - String[] array = str1.split(str2); - return String.join(" ", array); - } - @GetMapping("/Replace/{str}/{oldChar}/{newChar}") - public String Replace(@PathVariable String str, @PathVariable char oldChar, @PathVariable char newChar) { - return str.replace(oldChar, newChar); - } } \ No newline at end of file diff --git a/src/main/java/ru/ulstu/is/sbapp/configuration/TypeConfiguration.java b/src/main/java/ru/ulstu/is/sbapp/configuration/TypeConfiguration.java new file mode 100644 index 0000000..c61c87e --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/configuration/TypeConfiguration.java @@ -0,0 +1,20 @@ +package ru.ulstu.is.sbapp.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.ulstu.is.sbapp.interfaces.DoubleType; +import ru.ulstu.is.sbapp.interfaces.StringType; + +@Configuration +public class TypeConfiguration { + + @Bean(value = "str") + public StringType createStrType(){ + return new StringType(); + } + + @Bean(value = "double") + public DoubleType createDoubleType(){ + return new DoubleType(); + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/controllers/MainController.java b/src/main/java/ru/ulstu/is/sbapp/controllers/MainController.java new file mode 100644 index 0000000..89c6c58 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/controllers/MainController.java @@ -0,0 +1,43 @@ +package ru.ulstu.is.sbapp.controllers; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import ru.ulstu.is.sbapp.service.ServiceType; + +@RestController +public class MainController { + private final ServiceType Service; + + public MainController(ServiceType service) { + Service = service; + } + + @GetMapping("/Func1") + public Object Func1(@RequestParam(value = "Type") String Type, + @RequestParam(value = "value1") Object value1, + @RequestParam(value = "value2") Object value2){ + return Service.Func1(value1,value2,Type); + } + + @GetMapping("/Func2") + public Object Func2(@RequestParam(value = "Type") String Type, + @RequestParam(value = "value1") Object value1, + @RequestParam(value = "value2") Object value2){ + return Service.Func2(value1, value2, Type); + } + + @GetMapping("/Func3") + public Object Func3(@RequestParam(value = "Type") String Type, + @RequestParam(value = "value1") Object value1, + @RequestParam(value = "value2") Object value2){ + return Service.Func3(value1,value2,Type); + } + + @GetMapping("/Func4") + public Object Func4(@RequestParam(value = "Type") String Type, + @RequestParam(value = "value1") Object value1, + @RequestParam(value = "value2") Object value2){ + return Service.Func4(value1,value2,Type); + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/interfaces/DoubleType.java b/src/main/java/ru/ulstu/is/sbapp/interfaces/DoubleType.java new file mode 100644 index 0000000..1164b40 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/interfaces/DoubleType.java @@ -0,0 +1,23 @@ +package ru.ulstu.is.sbapp.interfaces; + +public class DoubleType implements ITypeOfData { + @Override + public Double Func1(Double value1, Double value2) { + return value1 + value2; + } + + @Override + public Double Func2(Double value1, Double value2) { + return Math.min(value1, value2); + } + + @Override + public Double Func3(Double value1, Double value2) { + return Math.max(value1, value2); + } + + @Override + public Double Func4(Double value1, Double value2) { + return Math.pow(value1,value2); + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/interfaces/ITypeOfData.java b/src/main/java/ru/ulstu/is/sbapp/interfaces/ITypeOfData.java new file mode 100644 index 0000000..f49fa06 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/interfaces/ITypeOfData.java @@ -0,0 +1,8 @@ +package ru.ulstu.is.sbapp.interfaces; + +public interface ITypeOfData { + T Func1(T value1, T value2); + T Func2(T value1, T value2); + T Func3(T value1, T value2); + T Func4(T value1, T value2); +} diff --git a/src/main/java/ru/ulstu/is/sbapp/interfaces/StringType.java b/src/main/java/ru/ulstu/is/sbapp/interfaces/StringType.java new file mode 100644 index 0000000..47cb599 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/interfaces/StringType.java @@ -0,0 +1,26 @@ +package ru.ulstu.is.sbapp.interfaces; + +import java.util.Locale; + +public class StringType implements ITypeOfData { + @Override + public String Func1(String value1, String value2) { + return value1 + value2; + } + + @Override + public String Func2(String value1, String value2) { + return value1.toUpperCase() + value2.toUpperCase(); + } + + @Override + public String Func3(String value1, String value2) { + String[] array = value1.split(value2); + return String.join(" ", array); + } + + @Override + public String Func4(String value1, String value2) { + return value1.toLowerCase() + value2.toLowerCase(); + } +} diff --git a/src/main/java/ru/ulstu/is/sbapp/service/ServiceType.java b/src/main/java/ru/ulstu/is/sbapp/service/ServiceType.java new file mode 100644 index 0000000..057fac7 --- /dev/null +++ b/src/main/java/ru/ulstu/is/sbapp/service/ServiceType.java @@ -0,0 +1,58 @@ +package ru.ulstu.is.sbapp.service; + +import org.springframework.stereotype.Service; +import org.apache.catalina.core.ApplicationContext; +import ru.ulstu.is.sbapp.interfaces.ITypeOfData; + +@Service +public class ServiceType { + private final ApplicationContext applicationContext; + private ITypeOfData _type; + private Object _value1; + private Object _value2; + + public ServiceType(ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } + + private void ValidateParams(Object value1, Object value2, String type){ + _type = (ITypeOfData)applicationContext.getBean(type); + + switch (type) { + case "double" -> { + try { + _value1 = Double.valueOf(value1.toString()); + _value2 = Double.valueOf(value2.toString()); + }catch (Exception ex){ + _value1 = 0.0; + _value2 = 0.0; + } + } + case "str" -> { + _value1 = value1; + _value2 = value2; + } + } + + } + + public Object Func1(Object value1, Object value2, String type){ + ValidateParams(value1,value2,type); + return String.format("%s", _type.Func1(_value1,_value2)); + } + + public Object Func2(Object value1, Object value2, String type){ + ValidateParams(value1,value2,type); + return String.format("%s", _type.Func2(_value1, _value2)); + } + + public Object Func3(Object value1, Object value2, String type){ + ValidateParams(value1,value2,type); + return String.format("%s", _type.Func3(_value1,_value2)); + } + + public Object Func4(Object value1, Object value2, String type){ + ValidateParams(value1,value2,type); + return String.format("%s", _type.Func4(_value1,_value2)); + } +}